Les workflows dev-story appellent validate_plan/validate_patch en
strict=true depuis le commit 355d613, mais les customize.yaml
correspondants disaient encore strict=false. Le workflow surcharge le
customize au moment de l'exécution, donc pas de bug fonctionnel — mais
la lecture du customize seul donnait une fausse impression du rollout.
Changements :
- bmm-dev : strict=true sur validate_plan et validate_patch + memory
Phase 2 partielle remplaçant la mention 'advisory-first'.
- bmm-quick-flow-solo-dev : idem, quick-flow ne contourne pas le strict.
- bmm-qa : strict=false maintenu volontairement (le blocage a déjà eu
lieu côté dev) avec commentaire YAML qui explique le choix, et memory
reformulée pour Phase 2.
Audit santé du chantier mcp_v1 a montré un écart entre la doc rollout
(advisory only) et l'implémentation réelle (workflows dev-story et
create-story en strict=true, personas dev.md et sm.md avec hard-blocker
sur blocking_issues). Décision : aligner la doc sur l'implem.
Changements :
- rollout_bmad_advisory.md : réécrit pour décrire la Phase 2 partielle
avec les 3 blocages stricts effectivement actifs (artefacts BMAD seuls,
sessions sans expiresAt, plan backend sans contracts).
- integration_mcp_sidecar.md : points d'injection mis à jour avec
strict=true sur dev, advisory sur QA, statut Phase 2.
- mcp_v1.md et README.md : statut 'advisory-first' / 'prototype' →
'Phase 2 partielle'.
- 40_decisions_et_archi.md : nouvel ADR retraçant le choix.
Note : les customize.yaml invoquent encore strict=false, surchargés par
les workflows. Cohérence interne à traiter dans un prochain commit si
besoin.
Le repo Lead_tech n'a pas à héberger CLAUDE.md/AGENTS.md.
sync-ai-instructions génère maintenant ~/.claude/CLAUDE.md directement
et ~/.codex/AGENTS.md reste un symlink vers celui-ci.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- aliases.sh : détection par uname au lieu de tester l'existence du dossier
- _AI_INSTRUCTIONS.md : placeholder {{LEADTECH}} pour tous les chemins
- sync-ai-instructions.sh : substitution {{LEADTECH}} → REPO_ROOT à la génération
- .gitignore : exclure CLAUDE.md et AGENTS.md (fichiers générés, machine-spécifiques)
- Anti-pattern: @UseGuards(AdminRoleGuard) sans @RequireAdminRole() → guard inefficace
- Anti-pattern: code erreur générique sur statut HTTP sémantique (ALIAS_ALREADY_RESOLVED)
- Anti-pattern: guard de rôle via return conditionnel dans render React Native
- Pattern: tests e2e scénarios d'autorisation alternatifs avec buildApp isolé
- Anti-pattern: méthodes store Zustand qui avalent les erreurs sans rethrow
- Anti-pattern: regex globale singleton pour transformation de contenu
- Fusion entrée TOCTOU : étend l'entrée multi-tenant existante avec le cas
général "idempotence / plafond" (check métier hors transaction) — app-alexandrie story 4.6
- Nouvelle entrée : Contracts schema orphelin / type de retour désynchronisé
(RequestSchema non importé, type inline au lieu du type contracts)
- Nouvelle entrée : Zustand optimistic update sur item absent de la liste
principale (fallback sur pinnedThreads / showcasedThreads)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>