Decision Coverage Gates (workflow.context_coverage_gate)
When discuss-phase writes implementation decisions into CONTEXT.md <decisions>, two gates ensure those decisions survive the trip into plans and shipped code (issue #2492).
| Setting | Type | Default | Description |
|---|---|---|---|
workflow.context_coverage_gate | boolean | true | Toggle for both decision-coverage gates. When false, both the plan-phase translation gate and the verify-phase validation gate skip silently. |
What the gates do
Plan-phase translation gate (BLOCKING). Runs immediately after the existing requirements coverage gate, before plans are committed. For each trackable decision in <decisions>, it checks that the decision id (D-NN) or its text appears in at least one plan's must_haves, truths, or body. A miss surfaces the missing decision by id and refuses to mark the phase planned.
Verify-phase validation gate (NON-BLOCKING). Runs alongside the other verify steps. Searches every shipped artifact (PLAN.md, SUMMARY.md, files modified, recent commit subjects) for each trackable decision. Misses are written to VERIFICATION.md as a warning section but do not flip the overall verification status. The asymmetry is deliberate — by verify time the work is done, and a fuzzy substring miss should not fail an otherwise green phase.
How to write decisions the gates accept
The discuss-phase template already produces D-NN-numbered decisions. The gate is happiest when:
- Every plan that implements a decision cites the id somewhere —
must_haves.truths: ["D-12: bit offsets exposed"]or aD-12:mention in the plan body. Strict id match is the cheapest, deterministic path. - Soft phrase matching is a fallback for paraphrases — if a 6+-word slice of the decision text appears verbatim in a plan/summary, it counts.
Opt-outs
A decision is not subject to the gates when any of the following apply:
- It lives under the
### Claude's Discretionheading inside<decisions>. - It is tagged
[informational],[folded], or[deferred]in its bullet (e.g.,- **D-08 [informational]:** Naming style for internal helpers).
Use these escape hatches when a decision genuinely doesn't need plan coverage — implementation discretion, future ideas captured for the record, or items already deferred to a later phase.