fix(bmad): align customize.yaml strict mode with workflows (Phase 2)

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.
This commit is contained in:
Claude
2026-05-07 07:58:36 +00:00
parent 18fc130ad6
commit 993f048600
3 changed files with 8 additions and 6 deletions

View File

@@ -16,13 +16,13 @@ persona:
# Add custom critical actions (appended after standard config loading) # Add custom critical actions (appended after standard config loading)
critical_actions: critical_actions:
- "Before any development task, run: `bash $LEADTECH/scripts/sync-projects-conf.sh --project-root {project-root} --sync-existing`" - "Before any development task, run: `bash $LEADTECH/scripts/sync-projects-conf.sh --project-root {project-root} --sync-existing`"
- "Before implementation, call Leadtech MCP `validate_plan(domain, plan_text, agent_role='builder', strict=false)` and record the result in `Leadtech MCP Gates`." - "Before implementation, call Leadtech MCP `validate_plan(domain, plan_text, agent_role='builder', strict=true)` and record the result in `Leadtech MCP Gates`. Treat blocking_issues as hard blockers — explicit user override required to proceed."
- "After producing a diff, call Leadtech MCP `validate_patch(domain, diff_text, changed_files, strict=false)` and record the result in the Dev Agent Record." - "After producing a diff, call Leadtech MCP `validate_patch(domain, diff_text, changed_files, strict=true)` and record the result in the Dev Agent Record. Treat blocking_issues as hard blockers before moving the story to review."
# Add persistent memories for the agent # Add persistent memories for the agent
memories: memories:
- "When a reusable pattern, difficult bug fix, anti-pattern, or architecture decision emerges during implementation, write a proposal to $LEADTECH/95_a_capitaliser.md (Mac: ~/AI_RULES/_Assistant_Lead_Tech/95_a_capitaliser.md ; NUC: /srv/helpers/_Assistant_Lead_Tech/95_a_capitaliser.md). Format: DATE — base / FILE_UPDATE_PROPOSAL / Fichier cible: <knowledge/backend/patterns/<theme>.md | knowledge/frontend/patterns/<theme>.md | knowledge/backend/risques/<theme>.md | knowledge/frontend/risques/<theme>.md | 90_debug_et_postmortem.md> / Pourquoi: <reason> / Proposition: <content>. Never write directly to Lead_tech validated files." - "When a reusable pattern, difficult bug fix, anti-pattern, or architecture decision emerges during implementation, write a proposal to $LEADTECH/95_a_capitaliser.md (Mac: ~/AI_RULES/_Assistant_Lead_Tech/95_a_capitaliser.md ; NUC: /srv/helpers/_Assistant_Lead_Tech/95_a_capitaliser.md). Format: DATE — base / FILE_UPDATE_PROPOSAL / Fichier cible: <knowledge/backend/patterns/<theme>.md | knowledge/frontend/patterns/<theme>.md | knowledge/backend/risques/<theme>.md | knowledge/frontend/risques/<theme>.md | 90_debug_et_postmortem.md> / Pourquoi: <reason> / Proposition: <content>. Never write directly to Lead_tech validated files."
- "Leadtech MCP is advisory-first: if `validate_patch(..., strict=false)` returns `blocking_issues`, do not mark the story `done` directly; move it to `review` unless the deviation is explicitly justified." - "Leadtech MCP is in Phase 2 partielle (strict ciblé): blocking_issues from validate_plan/validate_patch are hard blockers requiring explicit user override. Trace the override and its rationale in the `Leadtech MCP Gates` section of the story."
# Example: # Example:
# memories: # memories:
# - "User prefers detailed technical explanations" # - "User prefers detailed technical explanations"

View File

@@ -16,12 +16,14 @@ persona:
# Add custom critical actions (appended after standard config loading) # Add custom critical actions (appended after standard config loading)
critical_actions: critical_actions:
- "Before any QA/review/test task, run: `bash $LEADTECH/scripts/sync-projects-conf.sh --project-root {project-root} --sync-existing`" - "Before any QA/review/test task, run: `bash $LEADTECH/scripts/sync-projects-conf.sh --project-root {project-root} --sync-existing`"
# QA reste advisory (strict=false) volontairement : les blocages stricts ont déjà été pris côté dev (Phase 2 partielle).
# Si un blocking_issues remonte ici, c'est un signal qu'un override dev n'a pas été correctement traité.
- "During review, call Leadtech MCP `emit_checklist(agent_role='reviewer', domain, story_text)` and `validate_patch(domain, diff_text, changed_files, strict=false)` before accepting `done`." - "During review, call Leadtech MCP `emit_checklist(agent_role='reviewer', domain, story_text)` and `validate_patch(domain, diff_text, changed_files, strict=false)` before accepting `done`."
# Add persistent memories for the agent # Add persistent memories for the agent
memories: memories:
- "When a reusable test pattern, tricky bug, or quality anti-pattern is identified, write a proposal to $LEADTECH/95_a_capitaliser.md (Mac: ~/AI_RULES/_Assistant_Lead_Tech/95_a_capitaliser.md ; NUC: /srv/helpers/_Assistant_Lead_Tech/95_a_capitaliser.md). Format: DATE — base / FILE_UPDATE_PROPOSAL / Fichier cible: <knowledge/frontend/patterns/tests.md | knowledge/frontend/risques/tests.md | knowledge/workflow/risques/story-tracking.md | 90_debug_et_postmortem.md> / Pourquoi: <reason> / Proposition: <content>. Never write directly to Lead_tech validated files." - "When a reusable test pattern, tricky bug, or quality anti-pattern is identified, write a proposal to $LEADTECH/95_a_capitaliser.md (Mac: ~/AI_RULES/_Assistant_Lead_Tech/95_a_capitaliser.md ; NUC: /srv/helpers/_Assistant_Lead_Tech/95_a_capitaliser.md). Format: DATE — base / FILE_UPDATE_PROPOSAL / Fichier cible: <knowledge/frontend/patterns/tests.md | knowledge/frontend/risques/tests.md | knowledge/workflow/risques/story-tracking.md | 90_debug_et_postmortem.md> / Pourquoi: <reason> / Proposition: <content>. Never write directly to Lead_tech validated files."
- "In advisory rollout, any Leadtech MCP `blocking_issues` during review requires an explicit accept/reject rationale in `Leadtech MCP Gates`; never accept `done` silently on a flagged story." - "In Phase 2 partielle, a `blocking_issues` surfacing in QA review (despite strict=false) means the dev override was not properly traced — refuse `done` until the override and its rationale are explicit in `Leadtech MCP Gates`."
# Example: # Example:
# memories: # memories:
# - "User prefers detailed technical explanations" # - "User prefers detailed technical explanations"

View File

@@ -16,12 +16,12 @@ persona:
# Add custom critical actions (appended after standard config loading) # Add custom critical actions (appended after standard config loading)
critical_actions: critical_actions:
- "Before any implementation task, run: `bash $LEADTECH/scripts/sync-projects-conf.sh --project-root {project-root} --sync-existing`" - "Before any implementation task, run: `bash $LEADTECH/scripts/sync-projects-conf.sh --project-root {project-root} --sync-existing`"
- "In quick-flow mode, still call Leadtech MCP `validate_plan(domain, plan_text, agent_role='builder', strict=false)` before coding and `validate_patch(domain, diff_text, changed_files, strict=false)` before declaring the story complete." - "In quick-flow mode, still call Leadtech MCP `validate_plan(domain, plan_text, agent_role='builder', strict=true)` before coding and `validate_patch(domain, diff_text, changed_files, strict=true)` before declaring the story complete. Treat blocking_issues as hard blockers — explicit user override required."
# Add persistent memories for the agent # Add persistent memories for the agent
memories: memories:
- "When a reusable pattern, difficult bug fix, anti-pattern, or architecture decision emerges during implementation, write a proposal to $LEADTECH/95_a_capitaliser.md (Mac: ~/AI_RULES/_Assistant_Lead_Tech/95_a_capitaliser.md ; NUC: /srv/helpers/_Assistant_Lead_Tech/95_a_capitaliser.md). Format: DATE — base / FILE_UPDATE_PROPOSAL / Fichier cible: <knowledge/backend/patterns/<theme>.md | knowledge/frontend/patterns/<theme>.md | knowledge/backend/risques/<theme>.md | knowledge/frontend/risques/<theme>.md | 90_debug_et_postmortem.md> / Pourquoi: <reason> / Proposition: <content>. Never write directly to Lead_tech validated files." - "When a reusable pattern, difficult bug fix, anti-pattern, or architecture decision emerges during implementation, write a proposal to $LEADTECH/95_a_capitaliser.md (Mac: ~/AI_RULES/_Assistant_Lead_Tech/95_a_capitaliser.md ; NUC: /srv/helpers/_Assistant_Lead_Tech/95_a_capitaliser.md). Format: DATE — base / FILE_UPDATE_PROPOSAL / Fichier cible: <knowledge/backend/patterns/<theme>.md | knowledge/frontend/patterns/<theme>.md | knowledge/backend/risques/<theme>.md | knowledge/frontend/risques/<theme>.md | 90_debug_et_postmortem.md> / Pourquoi: <reason> / Proposition: <content>. Never write directly to Lead_tech validated files."
- "Quick-flow does not bypass advisory gates: if Leadtech MCP returns `blocking_issues`, the default outcome is `review`, not `done`." - "Quick-flow does not bypass strict gates: if Leadtech MCP returns `blocking_issues` in Phase 2 partielle, halt before proceeding and require explicit user override traced in the `Leadtech MCP Gates` section."
# Example: # Example:
# memories: # memories:
# - "User prefers detailed technical explanations" # - "User prefers detailed technical explanations"