bmad-architecture: align finalize-reviewers wording + headless blocked output
- customize.toml: reword finalize_reviewers comment to match reviewer-gate.md — the gate is stakes-gated, but its reviewers always run once it does (coderabbit) - headless.md: state explicitly that a blocked run omits spine/memlog/companions, matching the "omit keys for artifacts not produced" contract (coderabbit)
This commit is contained in:
parent
f675bdaf22
commit
d8ebf46a3b
|
|
@ -84,7 +84,9 @@ external_handoffs = []
|
||||||
# --- Finalize reviewers ---
|
# --- Finalize reviewers ---
|
||||||
# Extra review lenses spawned as parallel subagents at the validation gate (Finalize and the
|
# Extra review lenses spawned as parallel subagents at the validation gate (Finalize and the
|
||||||
# Validate intent), on top of the skill's built-in good-spine checklist and the lint_spine.py
|
# Validate intent), on top of the skill's built-in good-spine checklist and the lint_spine.py
|
||||||
# mechanical floor. Stakes-gated: high-stakes / cross-team spines run them, throwaway ones may skip.
|
# mechanical floor. The GATE is stakes-gated — a throwaway spine may run it quietly or skip it —
|
||||||
|
# but whenever the gate runs, every entry here runs with it (the configured floor, never cherry-
|
||||||
|
# picked); only ad-hoc lenses are optional, and headless never skips the gate.
|
||||||
#
|
#
|
||||||
# Entries follow the standard prefix convention:
|
# Entries follow the standard prefix convention:
|
||||||
# "skill:NAME" invoke the named review skill as a subagent against ARCHITECTURE-SPINE.md
|
# "skill:NAME" invoke the named review skill as a subagent against ARCHITECTURE-SPINE.md
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ No interactive user: infer everything, ask nothing, but never invent — record
|
||||||
|
|
||||||
Drive the run from the payload in the first message — `intent`, `altitude`, `purpose`, the driving input (spec package / PRD / raw intent / brownfield path), a parent spine path at lower altitude, and `doc_workspace` if a specific folder is required. Infer anything absent from the inputs or workspace; don't invent stack, constraints, or scope to fill a gap. You still verify named tech on the web (you can't ask, but you can check) and still drive every write through the shared `{project-root}/_bmad/scripts/memlog.py`. Run the full Reviewer Gate (`references/reviewer-gate.md`) non-interactively: `scripts/lint_spine.py` plus **every `{workflow.finalize_reviewers}` lens as a parallel subagent** (and any ad-hoc lens the spine's criticality warrants). Headless skips only the human picking from the menu — never the reviewers themselves; apply the clear fixes and record anything unresolved in `open_questions[]`. For a true authority collision, list it in `conflicts_with_prior_decisions[]`. For the Validate intent, always write the report to `{doc_workspace}` and add `"offer_to_update": true`. If intent stays ambiguous after inference, halt blocked.
|
Drive the run from the payload in the first message — `intent`, `altitude`, `purpose`, the driving input (spec package / PRD / raw intent / brownfield path), a parent spine path at lower altitude, and `doc_workspace` if a specific folder is required. Infer anything absent from the inputs or workspace; don't invent stack, constraints, or scope to fill a gap. You still verify named tech on the web (you can't ask, but you can check) and still drive every write through the shared `{project-root}/_bmad/scripts/memlog.py`. Run the full Reviewer Gate (`references/reviewer-gate.md`) non-interactively: `scripts/lint_spine.py` plus **every `{workflow.finalize_reviewers}` lens as a parallel subagent** (and any ad-hoc lens the spine's criticality warrants). Headless skips only the human picking from the menu — never the reviewers themselves; apply the clear fixes and record anything unresolved in `open_questions[]`. For a true authority collision, list it in `conflicts_with_prior_decisions[]`. For the Validate intent, always write the report to `{doc_workspace}` and add `"offer_to_update": true`. If intent stays ambiguous after inference, halt blocked.
|
||||||
|
|
||||||
End with JSON only, omitting keys for artifacts not produced:
|
End with JSON only, omitting keys for artifacts not produced — the shape below is the fully-produced (`complete`) case; a `blocked` run produces no spine, so it omits `spine`, `memlog`, and `companions` entirely (see the note under the block):
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|
@ -23,4 +23,4 @@ End with JSON only, omitting keys for artifacts not produced:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
`complete` stands alone · `partial` (spine produced, but `open_questions[]` non-empty or critical inputs inferred) means review before downstream use · `blocked` means no spine produced.
|
`complete` stands alone · `partial` (spine produced, but `open_questions[]` non-empty or critical inputs inferred) means review before downstream use · `blocked` means no spine produced — return only `status`, `intent`, `reason`, and `doc_workspace` (if bound), omitting `spine`, `memlog`, `companions`, and the artifact arrays that don't exist.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue