Secret commité
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const charge = (amount: number) => stripe.charges.create({ amount });Le code IA arrive vite. Les failles aussi. CodeCorvus relit chaque pull request avant le merge et te montre ce qui n’a pas de sens, ce qui fuit et ce qui casse.
L’IA écrit en quelques minutes ce qui prenait une journée. Ce qui vient avec, personne n’a le temps de le lire. Ça arrive à tout le monde.
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const charge = (amount: number) => stripe.charges.create({ amount });@@ -41,3 +41,3 @@
} catch (error) { logger.error("export failed", error.message); logger.error("export failed", payload.patient);codecorvusbot· maintenantbloquant
payload.patient envoie le nom et le numéro d’identité dans les logs. Logue seulement l’id du rapport.
validé
throw error;@@ -27,2 +27,4 @@
const size = 20;const start = (page - 1) * size;return orders.slice(start, size);codecorvusbot· maintenantimportant
slice prend l’index de fin, pas un nombre d’éléments. À partir de la page 2, la liste revient vide.
}@@ -8,3 +8,3 @@
export function seniorDiscount(age: number) { return age >= 60 ? 0.3 : 0; return age > 60 ? 0.3 : 0;codecorvusbot· maintenantimportant
La règle du repo dit « à partir de 60 ans ». Avec >, ceux qui ont pile 60 ans perdent la réduction.
}PR #517 · Refacto de la facturation · 47 fichiers
Une PR géante que personne ne lit vraiment.
Corvus lit chaque ligne et ne parle que quand ça compte.
Review Corvus
corvus -b main
Relu · 46s · étape 12
Chaque fichier de la PR, avec le contexte du repo. Le commentaire tombe pile sur la ligne du problème.
Te dit pourquoi c’est un problème et te file le fix en Commit suggestion. Un clic, c’est réglé.
Bloquant retient le merge. Important prévient, c’est tout. Une suggestion reste une suggestion, zéro pression.
Commentaires sur la ligne, tableau des sévérités et le badge de l’IA qui a tenté de réfuter le problème.
Review CodeCorvus
🔴 1 bloquant·🟡 2 importants·🔵 3 suggestions
4 fichiers relus. 1 problème bloquant a survécu à la validation adversariale.
| 41 | 41 | } catch (error) { | |
| 42 | - | logger.error("export failed", error.message); | |
| 42 | + | logger.error("export failed", payload.patient); | |
| 43 | 43 | throw error; |
🔴 Des données patient peuvent finir dans les logs
payload.patient contient le nom et le numéro d’identité. Logue seulement l’identifiant du rapport.
| 42 | - | logger.error("export failed", payload.patient); | |
| 42 | + | logger.error("export failed", { report: payload.id }); |
Pour libérer avec une raison : /corvus ok ou /corvus fp
Le merge est bloqué
1 problème bloquant doit être corrigé ou libéré avec une raison.
Avant de bloquer, une autre IA cherche la faille dans le problème. Elle en trouve une ? Pas de blocage. Elle n’en trouve pas ? Il reçoit le badge « validé » et retient le merge.
Teste le gate
Joue avec les options. Le merge change direct.
Pas d’accord ? Balance un /corvus fp avec la raison et passe à autre chose. C’est tracé.
Merge bloqué
validéLe problème reçoit le badge « validé », et le fix suggéré arrive sur la ligne.
À chaque release, Corvus passe sur un golden set de cas réels et plantés, et les résultats sont publiés. Celui-ci vient du cas Grupo Mais Saúde.
Résultats pour ce golden set de 13 cas, pas une garantie pour tous les repos.
name: CodeCorvuson: [pull_request]permissions: contents: read pull-requests: write id-token: write # short-lived OIDC sessionjobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: corvus reviewRelit chaque PR sur ton runner.
$ corvus -b main⠹ 46s · étape 12 · Lecture src/report.js1bloquant2importants3suggestionsLance-le avant d’ouvrir la PR et regarde-le bosser.
Les problèmes s’affichent dans ton éditeur. Dans la PR, demande juste : /corvus explica.
Exemple illustratif. Installe et configure le CLI pour ton environnement de CI.
Cloud · bientôtLe même Corvus, sans clé d’IA et avec un dashboard.
Un reviewer de code par IA, open source, qui tourne dans GitHub Actions. Il lit chaque pull request, commente sur la ligne avec le correctif et ne bloque le merge que pour un problème critique qu’une deuxième IA n’a pas réussi à démonter.
L’open source est gratuit : tu utilises ta propre clé d’IA, ou ton abonnement dans le CLI. Le Cloud n’a pas encore de prix ; il arrive bientôt.
Le workflow tourne sur ton runner GitHub Actions. Le code part de là direct vers le fournisseur d’IA que tu choisis.
Non. Seul un problème critique retient le merge, et seulement après qu’une autre IA a tenté de le démonter. Pas d’accord ? /corvus ok ou /corvus fp, avec la raison, et tu passes à autre chose.
Pas pour l’instant. L’intégration CI vise GitHub Actions et les pull requests GitHub.
Corvus embarque des règles pour les identifiants brésiliens et les données patient dans les logs, payloads et réponses, et garde les preuves de review. Ça ne remplace pas un avis juridique.
Un workflow, une PR, et c’est bon : Corvus relit déjà.
Open source et gratuit. Sans inscription, sans piège.
codecorvusbot· maintenantbloquant
Une clé de prod dans le code. Gitleaks bloque direct, et la valeur est masquée dans le commentaire.