Spec — Workflow Codex de correction App KG
workflow Codex de remédiation à partir du Meta KG
Objectif
Définir comment Codex doit exploiter les audits App KG, findings Nexus/Ruff/Bandit/OSV
et futurs tools MCP nexus-kg pour corriger prudemment le code réel, sans
correction de masse aveugle.
Ce document ne déclenche aucune correction automatique. Il cadre le workflow qui sera utilisé par Codex et les agents IA quand le MCP runtime sera disponible.
Principes
- Prioriser avant de corriger.
- Résoudre les findings par preuve structurée.
- Lire le code réel avant patch.
- Corriger un finding ou un cluster homogène à la fois.
- Vérifier par tests ciblés.
- Régénérer le KG seulement avec validation/scope explicite.
- Comparer le score et les deltas de findings après correction.
- Documenter les faux positifs au lieu de les supprimer silencieusement.
Entrées attendues
- Audit App KG courant.
- Export
docs/codex/repo-audits/**/findings.json. - Risques IA persistés si disponibles.
- Tools MCP
nexus-kgdéfinis dans19-Nexus-KG-MCP-Spec.md. - Code réel du repository cible.
- Tests disponibles dans le repository cible.
Priorisation
Ordre recommandé :
highactionnable avec fichier et ligne.- Findings bloquants de parsing, imports internes non résolus ou runtime probable.
mediumsécurité, runtime ou architecture.- Clusters homogènes Ruff/Bandit répétitifs, après validation que la correction est mécanique et testable.
- Findings de tests seulement si le projet les traite comme dette active.
lowetinfouniquement sur demande explicite ou lot dédié.
Classification avant correction
| Classe | Action Codex |
|---|---|
| Productif actionnable | Corriger après lecture code + test ciblé. |
| Runtime probable | Corriger en priorité si preuve fichier/ligne claire. |
| Import interne ambigu/non résolu | Vérifier structure package, chemins, alias, build et tests avant patch. |
| Sécurité high | Corriger ou documenter un faux positif avec justification. |
| Tests | Corriger seulement si cela améliore réellement le signal test/sécurité. |
| Archives/backups/generated | Ne pas corriger automatiquement; demander validation humaine. |
| Faux positif | Documenter preuve et décision; ne pas masquer le finding sans règle explicite. |
Paquet MCP attendu
Un paquet de correction doit inclure :
{
"risk": {},
"findings": [
{
"graph_id": "uuid",
"source_tool": "bandit",
"finding_type": "bandit_b324_hashlib",
"path": "services/echo/app/services/meeting_service.py",
"line": 1094,
"severity": "high",
"message": "Use of weak SHA1 hash for security."
}
],
"file_context": {},
"nearby_relations": [],
"impact": {},
"recommended_reads": [],
"recommended_commands": [],
"safety_notes": []
}Les findings doivent être résolus par tuple :
(graph_id, source_tool, finding_type, path, line)Fallback sans ligne seulement si la ligne est absente :
(graph_id, source_tool, finding_type, path)Workflow — finding unique
- Appeler
kg_get_anomalyoukg_get_audit_risk. - Vérifier que le finding est résolu sans ambiguïté.
- Appeler
kg_file_context. - Relire le fichier réel et les tests proches.
- Formuler la correction minimale.
- Appliquer le patch.
- Lancer les tests ciblés.
- Si validé, demander ou préparer
kg_regenerate. - Comparer via
kg_compare_runs.
Prompt Codex :
Corrige un finding App KG unique.
Contraintes :
- Résous le finding par tuple (graph_id, source_tool, finding_type, path, line).
- Appelle kg_get_anomaly puis kg_file_context si MCP est disponible.
- Relis le fichier réel avant patch.
- Garde la correction minimale.
- Lance le test ciblé le plus proche.
- Ne régénère le KG que si la validation humaine ou le scope l'autorise.
- Résume le delta attendu.Workflow — cluster homogène
Un cluster est homogène si tous les findings partagent :
- même
source_tool; - même
finding_type; - même pattern de correction ;
- même niveau de risque ;
- tests ou vérification commune raisonnable.
Exemples acceptables :
- série Ruff d'import inutilisé sur un même package ;
- série Bandit identique sur du code de test, après décision explicite ;
- imports internes ambigus causés par une racine package unique.
Prompt Codex :
Prépare une correction de cluster homogène App KG.
Avant patch :
- Liste le critère d'homogénéité.
- Échantillonne 3 findings représentatifs.
- Vérifie qu'aucun fichier archive/backup/generated n'est inclus.
- Propose une correction mécanique unique.
- Indique les tests communs.
Stoppe si le cluster mélange source_tool, finding_type, risque ou contexte produit.Workflow — faux positif
Un faux positif doit être prouvé, pas supposé.
Critères possibles :
- code de test volontaire ;
- exemple/documentation non exécuté ;
- chemin generated/backup/fixture validé ;
- mitigation déjà présente dans le code ;
- alerte scanner non applicable au contexte.
Prompt Codex :
Analyse un possible faux positif App KG.
Tu dois :
- relire le fichier réel ;
- citer la preuve locale ;
- expliquer pourquoi le risque ne s'applique pas ;
- proposer soit une documentation du faux positif, soit une vraie correction ;
- ne jamais supprimer ou masquer le finding sans règle validée.Workflow — archives, backups, generated
Par défaut, Codex ne corrige pas automatiquement :
- archives ;
- backups ;
- dossiers generated ;
- dumps ;
- fixtures volumineuses ;
- code vendor ;
- snapshots de tests.
Action attendue :
- Marquer la classe comme non actionnable automatiquement.
- Proposer exclusion scanner ou décision humaine si récurrent.
- Ne pas modifier le fichier sans validation explicite.
Workflow — vérification post-correction
Commandes attendues selon le type :
| Type | Vérification |
|---|---|
| Python import/runtime | python -m py_compile, tests module, test import si disponible. |
| TypeScript/React | test UI ciblé, build si surface UI touchée. |
| Bandit high | test ciblé + justification sécurité. |
| Ruff mécanique | lint ciblé si disponible + tests proches. |
| Nexus KG imports | régénération KG + disparition ou réduction du finding. |
Prompt Codex :
Vérifie une correction App KG.
Tu dois :
- lancer les tests ciblés ;
- relancer les contrôles utiles ;
- régénérer le graphe seulement si autorisé ;
- comparer score, high/medium, source_tool et finding_type ;
- signaler tout nouveau finding ou régression.Critères de clôture
Un lot de correction est clos seulement si :
- le patch est minimal ;
- les tests ciblés passent ;
- les findings traités sont vérifiés par tuple ;
- les faux positifs sont documentés ;
- les nouveaux findings sont signalés ;
- le delta KG est comparé quand régénération possible.
Interdits
- Corriger tous les findings en masse.
- Modifier archives/backups/generated sans validation.
- Se fier au résumé IA sans lire le code.
- Utiliser un mot de passe Nexus dans un agent IA.
- Accéder directement à la DB Nexus.
- Masquer un finding au lieu de corriger ou documenter.