Balayage transversal des problèmes
Expose les problèmes qu'une seule PR peut également résoudre ou accidentellement casser au-delà de celui qu'elle prétend traiter. Deux sorties :
- Corrections adjacentes — « PR peut aussi fermer #X » → intel de regroupement (envoyer une PR, fermer plusieurs problèmes)
- Risques contradictoires — « PR peut casser ce que #Y veut » → coordination requise avant la fusion
Prérequis
- CLI
ghauthentifiée - Un dépôt cible avec des problèmes ouverts
- Une PR ouverte à analyser
Politique de dépôt
Les valeurs par défaut supposent les conventions NemoClaw. Modifiez repo-policy.md pour remplacer par dépôt (identifiants bot, limites de candidats, regex de langue).
Flux de travail
Copiez cette liste de contrôle dans votre réponse et cochez chaque étape :
Progression du balayage transversal :
- [ ] Étape 1 : Extraire l'empreinte (fichiers, symboles, chaînes d'erreur, problème principal)
- [ ] Étape 2 : Rechercher des problèmes candidats (limités à 30, principal exclu)
- [ ] Étape 3 : Classer chaque candidat (4 classes avec preuves)
- [ ] Étape 4 : Appliquer le renforcement de lien inverse
- [ ] Étape 5 : Filtrer (supprimer UNRELATED, SAME_ISSUE_DIFF, faible confiance)
- [ ] Étape 6 : Générer le rapport en utilisant templates/report.md
Étape 1 : Extraire l'empreinte
scripts/extract-fingerprint.sh <pr-number>
Récupère quatre dimensions : fichiers touchés, symboles touchés (par regex de langue), jetons de chaîne d'erreur et le problème principal lié à la PR (pour exclusion). Voir checks/fingerprint-extraction.md.
Étape 2 : Rechercher les problèmes candidats
scripts/search-candidate-issues.sh <fingerprint-json>
Trois dimensions de recherche, limités à 30 candidats au total :
- Par symbole : top 10 par récence
- Par chemin de fichier : top 5 par récence
- Par chaîne d'erreur : top 5 par récence
Déduplique ; exclut le problème principal lié à la PR.
Étape 3 : Classer chaque candidat
Pour chaque candidat, l'LLM classe comme l'une des quatre classes selon checks/relationship-judgment.md :
- ADJACENT_FIX — les modifications de la PR résolvent probablement aussi ce problème
- CONTRADICTING — l'approche de la PR bloque ce que ce problème veut
- SAME_ISSUE_DIFF — même bogue racine que le problème principal de la PR (filtre dédupliqué)
- UNRELATED — aucune relation significative
Requis pour ADJACENT_FIX ou CONTRADICTING :
- Citer la ligne de diff spécifique de la PR
- Citer le symptôme spécifique du problème
- Confiance : haute / moyenne / basse
Si aucune preuve spécifique ne peut être citée, l'LLM doit répondre UNRELATED. Cela limite les hallucinations.
Étape 4 : Renforcement de lien inverse
Si le corps ou les commentaires du problème candidat mentionnent déjà le numéro de cette PR, la relation est déjà dans le modèle mental de quelqu'un. Augmentez la confiance d'un cran (basse → moyenne, moyenne → haute).
Étape 5 : Filtrer
- Supprimer UNRELATED + SAME_ISSUE_DIFF
- Supprimer les jugements de faible confiance
- Conserver ADJACENT_FIX et CONTRADICTING avec confiance haute ou moyenne
Étape 6 : Générer le rapport
scripts/render-report.py < classifications.json
Voir templates/report.md pour le format.
Fichiers de référence
repo-policy.md— valeurs par défaut configurables par dépôtrelationship-rules.md— définitions des 4 classes avec exemples travailléschecks/fingerprint-extraction.md— ce qu'il faut extraire du diff, par languechecks/relationship-judgment.md— critères de jugement LLM + exigence de preuvetemplates/report.md— modèle de sortievalidation/backtest.md— tester la compétence par rapport aux PRs historiques
Scripts (à exécuter, ne pas lire)
scripts/extract-fingerprint.sh— symboles + chemins + chaînes d'erreur, déterministescripts/search-candidate-issues.sh— wrapper GitHub Search, déduplique, limitescripts/render-report.py— générateur de rapport
Composition avec d'autres compétences
Le pr-comparator (nemoclaw-maintainer-pr-comparator) appelle cette compétence comme sous-étape lors de la comparaison de PRs concurrentes. Les nombres de corrections adjacentes alimentent les bris d'égalité de niveau 3 ; les hits contradictoires interviennent dans la notation de qualité de niveau 2.
Ce que cette compétence ne fait PAS (différé)
Ceux-ci élèveraient le plafond mais nécessitent une infrastructure au-delà de l'API GitHub + LLM :
- Exécuter le code PR contre des entrées adversariales (en sandbox)
- Traçage de flux d'analyseur statique (CodeQL, Semgrep)
- Désambiguation de symboles basée sur ML sur les bases de code