src/bmm-skills/ship/bmad-build/step-04-review.md
{{.communication_language}}. Write any file output in {{.document_output_language}}.Change {spec_file} status to in-review in the frontmatter before continuing.
Read {baseline_commit} from {spec_file} frontmatter. If {baseline_commit} is missing or NO_VCS, use best effort to determine what changed. Otherwise, construct {diff_output} covering all changes — tracked and untracked — since {baseline_commit}.
Do NOT git add anything — this is read-only inspection.
Execute these review layers in parallel wherever their execution methods allow: substitute the runtime placeholders (e.g. {diff_output}) into each layer's instruction. When an instruction launches a reviewer subagent, launch that child with the prompt text after placeholder substitution; do not load the reviewer instruction file yourself. For any other customized instruction, execute it as written. Parallel means several blocking calls awaited together in this turn — never backgrounded or detached, never ending the turn to await results. When running layers as subagents, spawn every reviewer before reading or reacting to any of their output; begin collection and triage only once all are launched.
{workflow.review_layers}
If a layer's instruction requires subagents and none are available, for each such layer write under {{.implementation_artifacts}} the exact child prompt from that layer's instruction after placeholder substitution (not a path-only pointer), then HALT. Ask the human to run each in a separate session (ideally a different LLM) and paste back the findings.
low: none or cosmeticmedium: tolerablehigh: intolerable{spec_file} frontmatter review_loop_iteration (missing means 0), increment it by 1, and write it back. If it exceeds 5, HALT and escalate to the human.
<frozen-after-approval>. Revert code changes. Loop back to the human to resolve. Once resolved, read fully and follow [[bmad-snapshot:step-02-plan.md]] to re-run steps 2–4.<frozen-after-approval>. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the ## Spec Change Log in {spec_file} and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow [[bmad-snapshot:step-03-implement.md]] to re-derive the code, then this step will run again.{spec_file}'s ## Verification section, if present; if verification fails and the failure cannot be fixed, HALT and escalate to the human.{{.implementation_artifacts}}/deferred-work.md using this format. Do not modify existing entries or look for duplicates.
- source_spec: `{spec_file}`
summary: <one sentence>
evidence: <why this is real>
Read fully and follow [[bmad-snapshot:step-05-present.md]]