PD-262 — Retrospective (Step 10)¶
1. Patterns recurrents confirmes¶
P-01 : Machine a etats explicite avec transitions autorisees/interdites¶
- Occurrences : PD-82, PD-250, PD-264, PD-251, PD-279, PD-280, PD-282, PD-265, PD-262 (20+)
- PD-262 : 3 etats (MONITORED → TAMPERED_SESSION → LOCKED_PERSISTENT), pas de downgrade, terminal irremediable
- Impact : Spec + tests + implementation simplifies car le modele d'etats est petit et deterministe
- Recommandation : Exiger une section "Machine a etats" dans tout template de spec avec
>= 3 etats
P-02 : STUBS traces avec story destination acceptes en Gate 8¶
- Occurrences : PD-63, PD-82, PD-250, PD-251, PD-282, PD-262 (15+)
- PD-262 : STUB PD-283 (purgeTempFiles, endpoint audit) accepte en Gate 8 GO
- Impact : Criticite MAJEUR → mineur si STUB documente avec story destination
- Recommandation : Pattern consolide, aucun changement necessaire
P-03 : Faux positifs LLM systematiques en reviews¶
- Occurrences : PD-251, PD-276, PD-277, PD-281, PD-262 (19+)
- PD-262 : 4/8 faux positifs car module Swift non visible au reviewer
- Impact : ~50-60% des ecarts identifies sont des faux positifs structurels
- Recommandation : Pour stories mobile avec module natif, injecter les fichiers Swift/ObjC dans le prompt review. Signal CLAUDE.md : ajouter regle d'injection native.
P-04 : Format non contractualise en spec v1 bloque en Gate 3¶
- Occurrences : PD-32, PD-250, PD-264, PD-262 (21+)
- PD-262 : Frontiere purge, persistance Keychain, flag QA non contractualises en v1
- Impact : Gate 3 RESERVE systematique quand les mecanismes de persistance ne sont pas explicites
- Recommandation : Ajouter section "Persistance et bootstrapping" obligatoire dans template spec pour stories avec etat local
P-05 : Fail-closed pour securite critique¶
- Occurrences : PD-238, PD-240, PD-250, PD-282, PD-265, PD-39, PD-262 (14+)
- PD-262 : Fail-closed central (INV-262-01) — toute erreur force
tampered=true - Recommandation : Pattern consolide, aucun changement necessaire
2. Nouveau pattern identifie¶
P-NEW-01 : Module natif invisible au reviewer LLM (faux positifs structurels)¶
- Premiere occurrence : PD-262
- Description : Les reviews LLM (step 7) ne recoivent que le code TypeScript. Le module natif Swift/ObjC est hors contexte du prompt d'assemblage, generant des faux positifs sur les invariants d'autorite native, de gating et de persistance.
- Impact mesure : 4/8 ecarts code review (50%) etaient des faux positifs
- Action recommandee : Modifier
scripts/assemble-prompt.shpour injecter les fichiersios/**/*.swiftetios/**/*.mdans les prompts de review quand le projet est de type mobile - Candidat CLAUDE.md : OUI — regle a ajouter dans
procedures.mdsection "Etape 7 — Acceptabilite"
P-NEW-02 : Coverage gating __DEV__ trompeuse¶
- Premiere occurrence : PD-262
- Description : Le gating
shouldBeActive()qui retournefalseen environnement Jest (__DEV__ === true) rend des branches entieres inatteignables. La coverage globale (62.33%) est trompeuse car le code est inactif par design en test. - Action recommandee : Documenter la "coverage effective hors gating" comme metrique complementaire pour les stories securite mobile
- Candidat CLAUDE.md : NON — trop specifique a un cas, a surveiller
P-NEW-03 : Reconstruction d'etat au boot vs transition en session¶
- Premiere occurrence : PD-262
- Description : Une machine a etats iOS a deux modes : transitions (regles de session) et reconstruction (initialisation au boot depuis persistance Keychain). La spec doit distinguer les deux pour eviter les ambiguites sur les transitions "interdites" qui sont en fait des initialisations.
- Action recommandee : Ajouter dans le template spec machine a etats une distinction explicite "transitions en session" vs "reconstruction au boot"
- Candidat CLAUDE.md : OUI — ajouter dans
procedures.mdou template spec
3. Ameliorations process a appliquer¶
| ID | Changement | Fichier cible | Priorite | Statut |
|---|---|---|---|---|
| AM-01 | Injection fichiers natifs (.swift, .m) dans prompts review step 7 | scripts/assemble-prompt.sh | HAUTE | A FAIRE |
| AM-02 | Section "Persistance et bootstrapping" obligatoire dans template spec | templates/prompts/1-specification.md | MOYENNE | A FAIRE |
| AM-03 | Distinguer "transitions session" vs "reconstruction boot" dans template machine a etats | templates/prompts/1-specification.md | MOYENNE | A FAIRE |
| AM-04 | Documenter derogation Sonar pour projets React Native mobile | procedures.md | BASSE | A FAIRE |
| AM-05 | Template mock expo-modules-core / requireNativeModule dans prompt agent step 6b | templates/prompts/6b-agent-task.md | BASSE | A FAIRE |
4. Signal CLAUDE.md¶
Regle a ajouter dans .claude/rules/procedures.md section "Etape 7 — Acceptabilite" :
Injection fichiers natifs (stories mobile) : Pour les stories
appavec composant natif Swift/ObjC/Kotlin, le script d'assemblage des prompts review (7a/7b/7c) DOIT injecter les fichiers natifs dans le contexte. Sans visibilite sur le module natif, les reviewers LLM generent ~50% de faux positifs sur les invariants couverts nativement (mesure PD-262).
Attente accusé de réception PO avant application.