When Something Changes: STALE, Reaffirm and Who May Override
A quiet edit to an approved file leaves the design and plan built on it drifting. In sdlc its hash changes, so its gates go STALE along the dependency graph, with three ways out: reaffirm the diff, re-run, or a named person's override.
Key takeaways
- A gate log stores the SHA-256 of every file it judged, so an edit to an approved file turns that gate STALE.
- Staleness follows the dependency graph: a stale design reaches the plan but leaves unrelated gates alone.
- Reaffirm gives a reviewer only the diff and one question, whether the prior verdict still holds; a gate that is stale only by upstream clears when its origin has a new log.
- A gate's own artifact may be reaffirmed only for an edit of at most 40 lines with no heading or id change.
- Only a named person may override a gate or accept a default for an open decision; an agent never can.
Contents
FAQ
What happens if I edit an approved document?
Its hash no longer matches the gate log, so that gate and every gate depending on it go STALE. A small edit can be reaffirmed from its diff; a large one re-runs the stage.
Can the agent override a failed or stale gate?
No. An override is written in the log with a person's name and a reason, and an agent writing one for itself breaks the contract.
Does an open decision stop the pipeline?
No. The stage builds everything that does not depend on the answer and marks only the dependent work as blocked by the DEC id.
Sources
Only you and the owner see your answer and rating. Send private feedback
Enjoyed it? Support fx-blog with a coffee.
Related posts
The Board, the Rules and the Handoff to QA
Left to taste, agents write two styles, collide on a file and deploy on the developer's word. sdlc names each agent on a board, gives each rule one owner and one gate, and ends development at qa-handoff.md: G10 will not deploy until QA's report passes, dated after the shipped commit's G8 run.
Your First sdlc Run: case-search From Problem to Design
An AI review you cannot audit is a nod. A first sdlc run shows one that is not: it rejects 'fast' and 'usable', gets file paths only, and writes a log with the SHA-256 of every file it judged and relied on.
Your AI Coding Agent Grades Its Own Homework. Add Gates.
Your AI coding agent says done after grading its own work, and you find what nobody decided two weeks later. In sdlc the agent that writes a stage never approves it: a different subagent writes the review log, and the next command refuses to start without its PASS.
Comments
Oldest firstNo comments yet. Start the conversation.
Part 2 ended with one line of
requirements.mdtightened after G2 passed: does the design's approval still count? The board already knows.This series, in four parts:
One edit, three stale gates
Most review checks a document once and trusts it from then on. Someone makes a small, well-meant edit, and nobody re-reads the design that rested on the old wording. Months later the code matches a design that matches a requirement nobody holds any more.
On case-search, the G2 log recorded
requirements.mdas0000ade1…. After the edit the file hashes to974bade1…. G1 reviewed the edited file and recorded the new hash, so it stays passed.G2 judged the old bytes. It went stale on its own input, and G5 and G6, which depend on the design, followed it as "upstream G2". G0 never read the file and stayed passed.
You can still edit the file. You just cannot keep the approval.
Three ways out of STALE
A full re-review for every typo would make the whole thing unusable, so the contract gives three exits:
override: <name> — <reason>into the gate log, and owns the exception.The board's sidebar names the cheapest exit for you:
Reaffirming a gate's own file, as G1 did here, is allowed only for a small edit: at most 40 changed lines, no heading or id added or removed, measured by a script from the last full review. Gates stale only as "upstream" clear once their origin has a new log.
Who may override
That rule matters most for
DEC-001, title search or full text, still open and blocking one task. The pipeline built everything that does not depend on the answer and marked only TASK-003 as waiting. When a person answers, the answer is an input change, and the gates that relied on it go stale.Only those gates. I got this wrong at first: gates hashed the whole decision ledger, so every new row staled every gate that read it. One project ran 54 reaffirms, most of them for that reason. Since 1.3.0 a gate is judged only on the ledger rows it relied on.
case-search now has three stale gates and one open decision, all read from files. But several agents are building the tasks right now. Is any stuck, or touching the same file, and what stops the code shipping before QA has tested it? Part 4 opens the Agents tab on case-search.
Read this with your AI