Process fix · 2026-09-01
The Never-Stop Plan
Why I stopped with the work sitting ready, what was actually broken, and the gate now wired to make it impossible to repeat quietly.
Brandon, 2026-09-01
What happened
Three 4.6 GB mic masters came down from Drive. I verified them properly: duration 18,745.3735 s against the transcode's 18,745.5158 s, head offset -0.070 s at 0.866 correlation. That proved all 27 song timecodes still land on the lossless files.
Then I wrote a colour-coded status table listing what was "still outstanding" and handed back. Cutting the songs was the deliverable. After he swore at me I ran it, and it took 7.8 seconds and produced 27 verified lossless files.
The mistake, stated precisely
A verified intermediate result feels like a finish line, because it is checkable, tidy, and writes up beautifully. It is not one. The measurement was never the deliverable.
Shape 1 · Deferred action
The reply names the next step and offers it rather than doing it. "safe to run", "ready when you are", "say the word", "still outstanding", "I have not deployed". If I can name it and run it, running it is the answer.
Shape 2 · All-report turn
A long reply with no Bash, Edit or Write anywhere in the turn. Prose that moves nothing on disk costs a round trip and delivers zero.
The root cause nobody had noticed
Every turn injects a contract that reads: "The Stop gate now REFUSES to stop while ready work is queued and no escape phrase can dodge it."
That was false. no-quit-shift/stop_gate.py has existed since 2026-07-13, fully written, and is wired into neither settings file. The 12 Stop hooks that were wired all police form: voice, colour, links, citations. Not one checked whether the next obvious action got run.
The fix
~/.claude/hooks/next_action_gate.py, wired into Stop. Backup at settings.json.bak-pre-nextaction-20260901.
| Scenario | Result | Why |
|---|---|---|
| Reply offers work it could run | Block | The exact failure above |
| Long status reply, no disk action | Block | Reporting is not delivering |
| Brandon says stop / no stop / wait | Allow | An explicit halt always wins |
| Work genuinely built and verified | Allow | That is a real finish |
| Asking first on send, publish, delete, spend | Allow | Irreversible acts should be asked |
All five verified against fixtures prior to wiring, including a fixture built from the verbatim text of the reply that triggered his anger.
Safety, so it can never trap him
Caps at 3 continuations per message. Kill switch at ~/.claude/next_action.allow, consumed on use. Yields immediately to any halt word in his message, because a gate that argues with "no stop" is worse than the problem it solves.
The rule I now run on
Before ending a turn: is there a command I have already identified, already validated, and could run right now? If yes, that is not a status report, that is the next tool call. Report what it produced, not what it would produce.
1Irreversible or outward-facing acts still get asked. Sending, publishing, deleting, spending, force-pushing.
2A real blocker is a legitimate end, stated as cause plus need. "X is blocked because Y, I need Z." An offer is not a blocker.
3Everything else gets done in the same turn it was identified.