Gate: plan-change-justified
The changed plan/spec records the revision that says why it changed.
| Property | Value |
|---|---|
| Checker | plan-change-justified |
| Confronts | plan spec |
| Blocking by default — new project | yes |
| Blocking by default — existing project | no — informs |
How it measures
Section titled “How it measures”Confronts a modified plan or spec against the declaration of its change: planning makes mistakes, and whoever implements discovers them — but fixing the plan silently makes the project walk towards a destination nobody chose.
Drift is the greatest risk, and it is SILENT by construction: no STATE gate can catch it, because the corrected plan or spec is perfectly valid — the inconsistency was removed. What exposes the defect is not the state of the file, but the UNJUSTIFIED CHANGE.
For this reason, this gate inspects the diff rather than just the content: any plan or spec that
appears among the changed files must carry a declared revision (-R0001). Without it, the gate blocks.
The ruler relies on the explicit judgment of whoever made the change:
- An INNOCUOUS correction (wording, example, typo, an ambiguity with only one viable interpretation) — correct the text and register the sequential revision. The gate verifies that the revision exists.
- A correction that CHANGES DIRECTION, or any doubt about whether it does — do not fix it in-place.
Escalate via
anchors escalate(anchors:needs-user), halting delivery of the card until a decision is made.
The gate separates silent drift from transparent adaptation: it does not judge whether a correction is innocuous or directional, but ensures that a human or agent made the conscious choice and recorded it in the document itself instead of letting drift happen by omission.
Declaring it
Section titled “Declaring it”gates: - name: plan-change-justified on: [plan, spec] check: plan-change-justified