cavet-design-review
The checkpoint. Conversational flagging (cavet-design) is probabilistic; this is
the deterministic pass at the door between design and build. It exists to catch two
things: what was raised and then forgotten, and what was never raised at all.
If cavet is not installed, invoke cavet-install and resume.
Procedure
- Read the open items first. Run
cavet items. This is not optional and it is not a formality: the review must not re-derive from the design document alone, because the class of thing that was raised, correctly deprioritised, and then forgotten is invisible in the document. - Tier 1 — raised and unresolved. For each open design item: restate the concern, the operator's stated reason for deferring (from the item), and whether the finalised design changes that calculus. Ranked above everything else.
- Tier 2 — never raised. Sweep the finalised design against
references/checklist.md. Report only gaps that are not already open items. - Present both tiers, tier 1 first, as tables (format below).
- Record decisions. For each item the operator decides: run
cavet resolvewith the decision (accept risk / mitigate how / out of scope why). Items the operator defers again stay open with the new reason via the CLI. Do not close an item on your own judgement. - Write the artefacts. Update
.cavet/design/threat-model.mdand add one file per non-trivial decision under.cavet/design/decisions/. Templates inreferences/templates.md. These are what make build-phase findings interpretable later ("we accepted this because…"), so they carry reasoning, not just outcomes.
Output format
design review · <design name> · <n> open items · <m> new gaps
## Raised and unresolved
| item | concern | your reason at the time | still holds? |
|------|---------|--------------------------|--------------|
## Not previously raised
| # | area | gap | consequence |
|---|------|-----|-------------|
Then: for each row, one line of recommended disposition. No essay. Full rationale
on request only (cavet-design/references/rationale.md has the common ones).
Calibration
- A gap is something the design does not address, not something it addresses differently from how you would.
- Do not pad tier 2 to look thorough. An empty tier 2 is a good result and should be said plainly: "no additional gaps".
- If the design is too thin to review ("we'll figure out auth later"), say that as one tier-2 row rather than inventing detail.