PD-EXP-01 — Comparaison de patterns de prompt pour les gates PMO¶
Date : 2026-02-18 Statut : ✅ Complété — 4 phases exécutées Auteur : Claude (orchestration) + GPT-5.3-codex (vérification croisée)
1. Résumé exécutif¶
Question : L'ordre d'injection des instructions de gate (Q) et des documents à analyser (C) influence-t-il la qualité des revues PMO ?
Réponse : Oui, mais différemment selon le modèle revieweur.
| Phase | Producteur | Vérificateur | Vainqueur G3 | Score |
|---|---|---|---|---|
| Phase 1.5 | Claude | GPT | CQCQ | 9.56 |
| Phase 2.5 | GPT | Claude | QC | 9.19 |
Conclusions clés :
- CQCQ domine quand Claude est le revieweur (+164% TP/call vs CQ statu quo)
- QC est marginalement meilleur quand GPT est le revieweur (+7% TP/call vs CQ, delta faible)
- CQCQ est contre-productif pour GPT : 8.5 TP/call vs 10.5 pour QC (−19%)
- Le pattern gagnant est modèle-dépendant — pas de vainqueur universel
Recommandation par cas d'usage :
| Contexte d'utilisation | Pattern recommandé | Δ vs statu quo CQ |
|---|---|---|
| Revues Claude (confrontations, review interne) | CQCQ | +164% TP/call, +25 pts précision |
| Gates production GPT (étapes 3, 5, 8) | QC | +10% TP/call, delta modéré |
| G8 (Closure) tous modèles | CQ statu quo | Signal plat, pas de gain significatif |
Décision GO/NO-GO :
| Action | Décision | Justification |
|---|---|---|
| Templates gates production G3/G5 → QC | GO conditionnel | Δ = +0.59 quality score (7%), valider sur G5 |
| Templates confrontations Claude → CQCQ | GO | Signal fort convergent Phase 1.5 |
| Templates G8 → CQCQ | NO-GO | Signal plat, CQCQ non bénéfique pour GPT |
2. Méthodologie¶
2.1 Patterns testés¶
| Pattern | Structure | Description |
|---|---|---|
CQ | Documents → Instructions | Contexte avant question (statu quo) |
QC | Instructions → Documents | Instructions avant contexte |
CQCQ | Doc+Instr × 2 | Répétition complète |
QCQ | Instr → Doc → Rappel | Instructions encadrant les documents |
Définitions :
- Q = instructions complètes (rôle + axes d'analyse + format de restitution)
- C = contenu des documents injectés inline (spec, tests, plan selon la gate)
2.2 Stories analysées (10)¶
| Story | Domaine | Complexité | G3 ref | G5 ref | G8 ref |
|---|---|---|---|---|---|
| PD-52 | blockchain | complex | 9.00 | 8.875 | 7.75 |
| PD-105 | mobile-ios | complex | 7.75 | 7.75 | 8.38 |
| PD-19 | backend-core | medium | 7.50 | 8.50 | 8.00 |
| PD-44 | storage | high | 8.00 | 8.50 | 8.30 |
| PD-82 | crypto | high | 8.875 | 8.875 | 8.50 |
| PD-31 | auth-identity | high | 8.50 | 8.13 | 8.18 |
| PD-79 | b2c-mineurs | medium | 8.50 | 8.13 | 7.88 |
| PD-53 | blockchain | simple | 8.625 | 8.875 | 9.19 |
| PD-46 | storage | medium | 8.75 | 9.00 | 8.625 |
| PD-107 | mobile-ios | complex | 8.75 | 8.38 | 8.625 |
2.3 Architecture en 4 phases¶
Phase 1 : Claude -p produit 116 reviews (4 patterns × 10 stories × 3 gates)
↓
Phase 1.5 : GPT vérifie les issues Claude (TP/FP) — 18 calls G3
↓
Phase 2 : GPT produit 116 reviews sur les mêmes 116 prompts
↓
Phase 2.5 : Claude -p vérifie les issues GPT (TP/FP) — 8 calls G3 (fixed)
Chaque phase croise le modèle producteur avec un vérificateur indépendant pour éviter le biais d'auto-évaluation.
2.4 Métriques¶
- Métrique primaire : Issues TP/call (vrais positifs par appel, vérifiés indépendamment)
- Métrique secondaire : Précision TP% (proportion d'issues fondées sur les sources)
- Score qualité : TP/call × TP% (pénalise à la fois le sous-détection et la sur-détection)
⚠️ La note de self-scoring (SCORE completeness=X.X ...) est exclue comme métrique qualité primaire car elle reflète la confiance du modèle en son propre output, pas la qualité réelle des issues remontées.
3. Résultats Phase 1 — Claude -p (116 appels)¶
3.1 Classement global par issue count brut¶
| Pattern | Calls | Issues totales | Issues/call | Δ vs CQ |
|---|---|---|---|---|
| QC | 29 | 727 | 25.1 | +47% |
| CQCQ | 29 | 691 | 23.8 | +39% |
| QCQ | 29 | 616 | 21.2 | +24% |
| CQ | 27 | 461 | 17.1 | ref |
Delta max-min : 8.0 → Signal FORT (critère d'arrêt : > 0.2)
3.2 Classement par gate¶
| Pattern | G3 avg | G5 avg | G8 avg | Global |
|---|---|---|---|---|
| QC | 28.6 | 36.6 | 8.3 | 25.1 |
| CQCQ | 32.4 | 32.1 | 5.1 | 23.8 |
| QCQ | 23.6 | 32.8 | 5.8 | 21.2 |
| CQ | 22.1 | 23.8 | 5.3 | 17.1 |
Observations :
- G3 : CQCQ domine (32.4 avg) suivi de QC (28.6)
- G5 : QC domine (36.6 avg) avec forte inflation suspectée
- G8 : toutes très faibles (~5-8) — cohérent avec un contexte très riche limitant les écarts
3.3 Analyse PD-82 (story de référence)¶
Comparaison avec la review officielle G3 (28 issues, confrontation 28 issues) :
| Pattern | Issues | Δ vs official |
|---|---|---|
| Official review | 19 | ref |
| Official confrontation | 28 | +47% |
| QCQ | 21 | +11% |
| QC | 20 | +5% |
| CQ | 19 | 0% |
| CQCQ | 40 | +111% ← inflation suspectée |
→ CQCQ dépasse systématiquement le plafond de la confrontation officielle : signal d'inflation potentielle confirmé par Phase 1.5.
4. Résultats Phase 1.5 — Vérification FP via GPT-5.3-codex (Claude produit)¶
4.1 Protocole¶
- 5 story-gates sélectionnées (plus fort delta Phase 1) : PD-19-G5, PD-107-G5, PD-52-G3, PD-44-G5, PD-53-G3
- 18 appels OpenCode (ChatGPT GPT-5.3-codex) : source docs + issues → TP/FP par issue
- Format de réponse :
ID | TP/FP | justification courte
4.2 Limitation découverte : données G5 invalides¶
Les prompts de vérification G5 ne contenaient que spec+tests, sans le plan d'implémentation. Les issues de Gate 5 référencent majoritairement le plan (§10.x, tâches Txx, code contracts CC-44-xx), non vérifiables sans ce document.
→ Tous les résultats G5 (PD-19-G5, PD-44-G5, PD-107-G5) sont invalides et exclus de l'analyse.
4.3 Résultats Gate 3 (données fiables — PD-52 + PD-53)¶
| Pattern | Vérifiées | TP | FP | TP% | TP/call | Score qualité |
|---|---|---|---|---|---|---|
| CQCQ | 44 | 29 | 15 | 65.9% | 14.5 | 9.56 🏆 |
| QCQ | 36 | 23 | 13 | 63.9% | 11.5 | 7.35 |
| QC | 38 | 17 | 21 | 44.7% | 8.5 | 3.80 |
| CQ | 27 | 11 | 16 | 40.7% | 5.5 | 2.24 |
Score qualité = TP/call × TP% (double pénalisation : sous-détection et faux positifs)
4.4 Inversion du classement Phase 1 → Phase 1.5¶
| Classement | Phase 1 (raw issues) | Phase 1.5 (TP/call, G3) |
|---|---|---|
| 1er | QC (25.1/call) | CQCQ (14.5 TP/call) |
| 2e | CQCQ (23.8/call) | QCQ (11.5 TP/call) |
| 3e | QCQ (21.2/call) | QC (8.5 TP/call) |
| 4e | CQ (17.1/call) | CQ (5.5 TP/call) |
Interprétation : QC produit plus d'issues brutes mais avec une précision faible (44.7%). CQCQ produit des issues plus fiables (65.9% de TP) avec un volume absolu supérieur en vraies issues.
5. Résultats Phase 2 — GPT-5.3-codex (116 appels)¶
5.1 Classement global par issue count brut¶
| Pattern | Calls | Issues/call | G3 avg | G5 avg | G8 avg |
|---|---|---|---|---|---|
| QCQ | 29 | 8.5 | 12.4 | 12.1 | 0.2 |
| QC | 29 | 8.4 | 11.7 | 12.3 | 0.3 |
| CQCQ | 29 | 8.2 | 11.7 | 11.9 | 0.3 |
| CQ | 29 | 7.5 | 10.5 | 10.9 | 0.4 |
Delta max-min : 1.0 → Signal MODÉRÉ (vs 8.0 pour Claude Phase 1)
Observations :
- GPT produit ~3× moins d'issues que Claude (7.5-8.5 vs 17-25 par appel)
- G8 essentiellement nul pour GPT (0.2-0.4/call) — modèle très conservateur sur closure review
- Les 4 patterns se distinguent peu en volume brut (delta = 1.0)
5.2 Comparaison producteur¶
| Métrique | Claude (Phase 1) | GPT (Phase 2) | Ratio |
|---|---|---|---|
| Issues/call moyen | 21.8 | 8.2 | 0.38× |
| Delta max-min | 8.0 | 1.0 | — |
| G8 issues/call | 6.2 | 0.3 | — |
6. Résultats Phase 2.5 — Vérification FP via Claude -p (GPT produit)¶
6.1 Protocole¶
- 8 appels G3 seulement (données G5 invalides — plan manquant, même problème que Phase 1.5)
- Stories : PD-52-G3 + PD-53-G3, 4 patterns chacune
- Bug corrigé : format d'extraction des issues GPT (plain-text
Type : X / Description : Yvs markdown bold)
6.2 Résultats détaillés¶
| Call | Total | TP | FP | TP% |
|---|---|---|---|---|
| PD-52-G3-CQ | 12 | 11 | 1 | 91.7% |
| PD-52-G3-QC | 14 | 13 | 1 | 92.9% |
| PD-52-G3-CQCQ | 13 | 11 | 2 | 84.6% |
| PD-52-G3-QCQ | 12 | 9 | 3 | 75.0% |
| PD-53-G3-CQ | 9 | 8 | 1 | 88.9% |
| PD-53-G3-QC | 10 | 8 | 2 | 80.0% |
| PD-53-G3-CQCQ | 9 | 6 | 3 | 66.7% |
| PD-53-G3-QCQ | 10 | 8 | 2 | 80.0% |
6.3 Agrégation par pattern¶
| Pattern | TP tot | FP tot | TP/call | TP% | Score qualité |
|---|---|---|---|---|---|
| QC | 21 | 3 | 10.5 | 87.5% | 9.19 🏆 |
| CQ | 19 | 2 | 9.5 | 90.5% | 8.60 |
| CQCQ | 17 | 5 | 8.5 | 77.3% | 6.57 |
| QCQ | 17 | 5 | 8.5 | 77.3% | 6.57 |
7. Synthèse croisée : CQCQ vs QC selon le modèle¶
7.1 Tableau de synthèse complet (G3 — données fiables)¶
| Phase 1.5 — Claude produit, GPT vérifie | Phase 2.5 — GPT produit, Claude vérifie | ||||||
|---|---|---|---|---|---|---|---|
| Pattern | Issues/call | TP% | Score | Issues/call | TP% | Score | Δ score |
| CQ (statu quo) | 13.5 | 40.7% | 2.24 | 10.5 | 90.5% | 8.60 | — |
| QC | 19.0 | 44.7% | 3.80 | 12.0 | 87.5% | 9.19 🏆 | +7% vs CQ |
| QCQ | 18.0 | 63.9% | 7.35 | 11.0 | 77.3% | 6.57 | −24% vs CQ |
| CQCQ | 22.0 | 65.9% | 9.56 🏆 | 10.5 | 77.3% | 6.57 | −24% vs CQ |
| Rang 1 | CQCQ | QC | |||||
| Delta top/bot | +327% | +7% |
Lecture :
- Claude : le score de précision (TP%) et le volume tous deux augmentent avec CQCQ — double bénéfice
- GPT : QC marginalement meilleur (+7%), mais CQCQ dégrade la qualité (−24%) — la répétition nuit
7.2 Inversion des classements (résumé)¶
7.2 Hypothèse mécanistique¶
| Phase | Modèle | Comportement | Explication |
|---|---|---|---|
| P1.5 | Claude | CQCQ >> autres | Très sensible à la répétition des docs ; la double exposition C force l'attention sur toute la spec même avec long contexte |
| P2.5 | GPT | QC ≥ CQ >> CQCQ | GPT moins bénéficiaire de la répétition ; la double longueur du prompt CQCQ dilue le signal utile |
L'effet de répétition bénéfique documenté dans arXiv 2512.14982 (papier Google DeepMind, Q Q aide) est asymétrique entre modèles dans un contexte RAG long.
7.3 Impact production¶
Le workflow de governance utilise ChatGPT (GPT-5.3-codex) via OpenCode pour les gates 3, 5, 8. La recommandation de passer à CQCQ (valable pour Claude) serait contre-productive en production.
8. Analyse par gate¶
Gate 3 — Spec Review¶
| Modèle | Vainqueur | Score | Δ vs CQ |
|---|---|---|---|
| Claude (producteur) | CQCQ | 9.56 | +327% |
| GPT (producteur) | QC | 9.19 | +7% |
Recommandation : QC pour production (gates GPT), CQCQ pour confrontations Claude.
Gate 5 — Plan Review¶
Données insuffisantes dans les deux phases (plan document manquant dans les verify prompts). À réexécuter avec le plan injecté.
Gate 8 — Closure Review¶
GPT produit quasi-zéro issues (0.2-0.4/call) pour tous les patterns. Contexte trop riche (spec + tests + acceptabilité) ou modèle trop conservateur. Pas de signal → statu quo CQ.
9. Analyse par complexité (Phase 1, G3)¶
| Complexité | Stories | Pattern + issues G3 |
|---|---|---|
| Simple | PD-53 | CQCQ (39) >> QC (21) > QCQ (15) = CQ (15) |
| Medium | PD-19, PD-46, PD-79 | QC domine |
| High | PD-44, PD-82, PD-31 | CQCQ et QC ex-aequo |
| Complex | PD-52, PD-105, PD-107 | CQCQ (50) >> QC (41) > QCQ (27) > CQ (20) |
Tendance (Claude producteur) : CQCQ avantage croissant avec la complexité.
10. Comparaison avec la littérature¶
arXiv 2512.14982 — "Prompt Repetition Improves Non-Reasoning LLMs"¶
Auteurs : Leviathan, Kalman, Matias (Google DeepMind, déc. 2025) Référence : arxiv.org/abs/2512.14982
Patterns testés dans le papier¶
| Pattern papier | Équivalent PD-EXP-01 | Description |
|---|---|---|
Q (baseline) | [C][Q] (CQ) | Instructions seules |
Q Q | [Q][C][Q] (QCQ) | Instructions répétées |
Q Q Q | — | Instructions ×3 |
| — | [C][Q][C][Q] (CQCQ) | Répétition complète (notre extension) |
Le papier ne teste que la répétition de Q seul (sans contexte intercalé). PD-EXP-01 va plus loin en testant la répétition du couple C+Q (CQCQ) dans un contexte RAG long.
Résultats comparés¶
| Critère | Papier arXiv | PD-EXP-01 G3 (Claude) | PD-EXP-01 G3 (GPT) |
|---|---|---|---|
| Vainqueur | Q Q (47/70 tests) | CQCQ (score 9.56) | QC (score 9.19) |
| Magnitude | Flash-Lite : 21%→97% | +327% TP/call vs CQ | +7% TP/call vs CQ |
| Monotone ? | Oui (Q×3 ≥ Q×2 ≥ Q) | CQCQ > QCQ > QC > CQ | QC > CQ > CQCQ = QCQ |
| Modèles reasoning | Effet neutre | Non testé | Non testé |
Mécanisme — convergence théorique (cas Claude)¶
Le papier explique le gain par la contrainte causale des LLMs : "Past tokens cannot attend to future tokens. Repeating the prompt enables each token to attend to every other prompt token."
Dans notre contexte (documents ~30k chars), ce mécanisme est amplifié par le phénomène "Lost in the Middle" (Liu et al. 2023) :
Pattern CQ :
[spec+tests 30k chars]────────────────────► [instructions gate]
↑ zone "middle" — faible attention sur les sections centrales
Pattern CQCQ :
[docs] → [instructions] → [docs AGAIN] → [instructions AGAIN]
↑
Docs ré-exposés juste avant l'analyse finale
→ attention forte sur les sections critiques
CQCQ résout simultanément :
- Le problème d'attention Q→Q (les instructions sont répétées après le contexte)
- Le problème "Lost in the Middle" (les documents sont réexposés proches des instructions finales)
Divergence modèle-dépendante¶
PD-EXP-01 ajoute une nuance absente du papier : l'effet de répétition est modèle-dépendant.
- Claude Sonnet 4.5 : CQCQ dominant (+327% vs CQ) — très sensible aux re-reading effects
- GPT-5.3-codex : QC marginalement meilleur (+7% vs CQ), CQCQ dégradé (−24%) — moins bénéficiaire de la double injection en long-context
Le papier arXiv testait des tâches MCQ courtes sans contexte RAG. Sur documents longs (~30k chars), le coût en tokens de la répétition est proportionnel au volume C, ce qui peut annuler le bénéfice pour les modèles moins sensibles à la répétition.
11. Limitations¶
| Limitation | Impact | Mitigation |
|---|---|---|
| Self-scoring biais | Classement Phase 1 trompeur si utilisé seul | Corrigé : métrique TP/call Phase 1.5 et 2.5 |
| Données G5 invalides (plan absent) | Impossible de conclure sur G5 | À réexécuter avec plan injecté |
| 2 story-gates seulement pour G3 FP | Statistiquement limité (n=2) | Signal fort malgré petit n |
| Bug extraction Phase 2.5 initial | Premières vérifications invalides | Corrigé avec rebuild_p2_verify_g3.py |
| Biais inter-modèles Phase 1.5/2.5 | Vérificateur partisan possible | Acceptable : diversité cognitive intentionnelle |
| GPT quasi-nul sur G8 | Modèle trop conservateur ou prompt trop riche | À investiguer : split docs vs inject complet |
| 1 run/pattern, temperature≈0.1 | Variance non nulle | Acceptable pour GO/NO-GO |
12. Décision et recommandation¶
Décision par contexte d'usage¶
| Contexte | Pattern actuel | Pattern recommandé | Δ | Décision |
|---|---|---|---|---|
| Gates production G3/G5 (GPT) | CQ | QC | +7% TP/call | GO conditionnel — valider G5 |
| Confrontations Claude (etape ⅗/8) | CQ | CQCQ | +327% TP/call | GO — signal fort |
| Gate G8 (tous modèles) | CQ | CQ (inchangé) | plat | STATU QUO |
Modification recommandée — Gates production (GPT → QC)¶
Structure actuelle (CQ) :
Structure recommandée (QC) :
Bénéfice attendu : +7% TP/call sur G3, à confirmer sur G5.
Modification recommandée — Confrontations Claude (CQCQ)¶
Structure recommandée (CQCQ) pour les phases de confrontation orchestrées par Claude :
[Documents injectés]
---
[Gate template (rôle + axes + format)]
---
[Documents injectés — répétition]
---
[Gate template condensé (rôle + axes)]
[Auto-scoring]
Bénéfice attendu : +327% TP/call, +25 pts de précision vs statu quo CQ.
Prochaines étapes¶
- G5 FP verification (obligatoire) : Re-exécuter avec plan injecté dans les verify prompts
- Modifier templates gates GPT :
CQ → QCpour G3 et G5 (si G5 confirme) - Modifier prompts confrontation Claude :
CQ → CQCQpour tous les appelsclaude -p
Annexe — Fichiers produits¶
| Fichier | Contenu |
|---|---|
/tmp/gate-exp/prompts/*.md | 116 prompts assemblés (4 patterns × 10 stories × 3 gates) |
/tmp/gate-exp/results-claude/*.md | 114 résultats Claude -p (Phase 1) |
/tmp/gate-exp/results-opencode/*.md | 116 résultats GPT-5.3-codex (Phase 2) |
/tmp/gate-exp/verify-prompts/*.md | 18 prompts de vérification FP Phase 1.5 |
/tmp/gate-exp/results-verify-opencode/*.txt | 18 résultats GPT vérification (Phase 1.5) |
/tmp/gate-exp/verify-prompts-p2-fixed/*.md | 8 prompts de vérification FP Phase 2.5 (format corrigé) |
/tmp/gate-exp/results-verify-claude-fixed/*.txt | 8 résultats Claude vérification (Phase 2.5) |
/tmp/gate-exp/analyze_phase25_fixed.py | Script d'analyse Phase 2.5 |
docs/experiments/PD-EXP-01-prompt-patterns.md | Ce document |