Parent issue: #3747
Split from plan review of #3747 (estimated ~200 lines).
PR stack: this issue's branch should target nikw9944/doublezero-3795 (the previous sub-issue's branch).
- Creates
internal/abort/decider.go (central state machine, rolling
windows, p95 helpers, sentinel writer).
- Wires all collector outputs into the decider (replacing PR 1 stub
channels).
- Adds startup check that refuses to start when a stale
abort exists
in --working-dir unless --force.
- Adds unit test per trigger (full list in "Files to Change → New (tests)"
below).
- Updates README with abort-trigger table and operator-contract section.
Each chunk leaves the binary in a working, runnable state with the
previously shipped behavior intact.
Parent issue: #3747
Split from plan review of #3747 (estimated ~200 lines).
PR stack: this issue's branch should target
nikw9944/doublezero-3795(the previous sub-issue's branch).internal/abort/decider.go(central state machine, rollingwindows, p95 helpers, sentinel writer).
channels).
abortexistsin
--working-dirunless--force.below).
Each chunk leaves the binary in a working, runnable state with the
previously shipped behavior intact.