# Design review protocol

Read before running brainstorm step 8. This reference owns the main-agent side: the spawn ladder, the resolve loop, the unavailable record. The reviewer’s contract is the `pwk-design-reviewer` role file — self-contained, so a provider spawns it without this skill loaded.

## Spawn ladder

Enumerate the session’s tools first (`Array.from(ALL_TOOLS)` under a batch executor, otherwise the tools the host lists) — absence from documentation is not absence from the session. Then in order:

1. A compatible delegation provider with the role installed → request `pwk-design-reviewer` through it.
2. Any subagent or spawn capability → spawn generically: the framing is the role file (installed `.agents/agents/pwk-design-reviewer.md` when present, else the kit’s packaged `agents/pwk-design-reviewer.md`) plus the design-doc path and repo root; constraints ride the prompt — fresh context by mechanism, read-only by instruction or a read-only agent type when the host offers one, bounded, findings only.
3. No spawn mechanism at all → append one trailing line to the design doc, `> Design review: unavailable — <enumeration result>`, and proceed to human approval.

A failed, empty, or truncated report is a failed spawn: retry once, then take the next rung. **Inline review is never a rung.** The reviewer’s value is context the author lacks; an inline pass re-runs the assumption gate and sells it as fresh review. This deliberately diverges from the execute-time review’s inline fallback, which exists because one agent genuinely can review a diff.

## Resolve loop

Findings return numbered (`severity | location | issue | recommendation`); the human dispositions each in one reply, the frontier-round format:

- **Fix** — edit the design doc, re-run the validator. A fix needing a business fact re-opens the numbered-question format; findings never introduce unconfirmed behavior.
- **Reject** — a `(rejected: …)` clause in Key decisions, only when the fork was real.
- **Defer** — only the human converts it: an explicit `### Review` value (`inline` or `parallel`) on the specific requirement, or production-risk notes that drive `auto`. The design never sets it.

One round; re-review only when the human asks. The approval gate closes step 8.

## Umbrella

Each leaf’s design is reviewed when written — later leaves against implemented predecessors, which is where cross-slice drift gets caught.
