CPN PR Triage
Renseigner les champs vides et déterminables du contenu (FR). Ne jamais inventer ; ne jamais fermer de PR.
Prerequisites
ghcollaborateur du dépôt, ne PASgh auth switch.- Dépôt :
cloud-pi-native/console.N= n° PR,R= ce dépôt (défaut).
1. Récupérer
gh pr view "$N" --repo "$R" --json number,title,body,labels,assignees,milestone,reviewRequests
2. Métadonnées dispo (source de vérité)
gh label list --repo "$R" --limit 200 --json name,description
gh api repos/"$R"/milestones?state=open --jq '.[] | "\(.number)\t\(.title)"'
gh project list --owner cloud-pi-native
gh api repos/"$R"/assignees --jq '.[].login'
3. Décider (si vide + valeur existante)
- labels — titre/corps : défaut→
bug, capacité→enhancement, doc→documentation. Type via template ; zone depuis chemins si existant ; écarter les absents de l'étape 2. - assignee — si aucun :
ASSIGNEE=$(gh api user --jq .login). - jalon — bug→patch le plus haut de la ligne mineure courante (max
Z) ; enhancement→mineure/majeure suivante. - projet —
--add-project <number>si boardé et pas boardé ; sinon sauter. - reviewers — un reviewer parmi collaborateurs/équipe si aucune demande ; sinon sauter.
4. Appliquer
gh pr edit "$N" --repo "$R" --add-label "bug" --add-label "area/..."
# --add-label, jamais --label
gh pr edit "$N" --repo "$R" --add-assignee "$ASSIGNEE"
gh pr edit "$N" --repo "$R" --milestone <num>
gh pr edit "$N" --repo "$R" --add-reviewer <login>
5. Lier issue ↔ PR
Si #M (issue ouverte, pas liée) est référencée, garantir Issues liées: #M
dans le corps (éditer, préfixer si absent).
6. Vérifier
gh pr view "$N" --repo "$R" --json number,title,labels,assignees,milestone,reviewRequests
7. Reword / reconciliation corps↔diff
Quand on demande de reformuler le titre ou le corps d'une PR (après force-push, changement de périmètre, ou « reword it based on new changes »), ne pas recopier le corps existant avec des retouches : il dérive du code.
gh pr diff "$N" --repo "$R"— le diff réel (source de vérité du comportement).gh api repos/"$R"/pulls/"$N"/files --jq '.[] | "\(.filename)\tadd=\(.additions)\tdel=\(.deletions)"'— comptes par fichier.- Recomparer chaque affirmation du corps contre le diff :
- Claim absent du diff → supprimer (ex. « j'ai ajouté
max-parallel: 2» alors questrategy/matrixn'a pas changé). - Correctif réel minimisé (ex. « simple typo d'hygiène » alors que le
diff change aussi le port
8080→9000, le vrai fix d'une issue) → élever et lier l'issue concernée (#M).
- Claim absent du diff → supprimer (ex. « j'ai ajouté
gh pr edit "$N" --repo "$R" --title "..." --body-file /tmp/pr_body.md.
Détail et exemple de trap : references/pr-body-reconciliation.md.
Pitfalls
- Inventer des labels — filtrer contre
gh label list. - Écrasement —
--add-label/--add-assignee(additif), jamais--label. - Jalon — bug→patch courant, feature→release suivante.
- Fermer une PR — interdit ; PR parasite →
cpn-prou retour auteur. - Auto-close issue↔PR — interdit ; fermer délibérément après N-sur-N.
- Corps hors-diff — un corps de PR dérive du code (claim absent du diff, ou
correctif réel minimisé en « typo/hygiene »). Toujours recomparer contre
gh pr diffavant de rééditer un titre/corps. Voir étape 7.
See also
cpn-pr— création + liaison (français).