Grouped because each is a one-line fix. Full reasoning in docs/notes/2026-08-20-plan-3a-review-triage.md under "HIGH findings that do not block". Split out any one that turns out to be bigger.
- A stale Status write that lands late is stamped unrecoverable —
board.rb:78
- The
running? guard does not stop two walkers — poller.rb:108. (Partly addressed 2026-08-21: running? now also answers true while a run is being started, which is what that guard's own comment always claimed. Re-check whether anything remains.)
- A refused launch destroys the stage's session id —
runner.rb:129. The @sessions assignment runs before the case. Tests miss it because scripted hardcodes session: 'sess-1'.
reload restores sessions the runner deliberately discarded, and discards an interrupted stage's — runner.rb:67
- A slow
git worktree add inside claim's transaction fails healthy concurrent runs — supervisor.rb:59, runner.rb:94. Measured: second write RAISED after 6.2s: BusyException
- A chmod-drifted secrets file raises out of
Repo.prepare and stops the whole poller — repo.rb:81. prepare rescues Mill::Git::Error; check_mode! raises its parent Mill::Error. The method's own comment claims this cannot happen.
.mill.yml falls back to a local ref a stage can move — repo.rb:102
The two comment-cursor HIGHs are tracked with the cursor-scoping issue instead, since one change likely fixes all three.
Grouped because each is a one-line fix. Full reasoning in
docs/notes/2026-08-20-plan-3a-review-triage.mdunder "HIGH findings that do not block". Split out any one that turns out to be bigger.board.rb:78running?guard does not stop two walkers —poller.rb:108. (Partly addressed 2026-08-21:running?now also answers true while a run is being started, which is what that guard's own comment always claimed. Re-check whether anything remains.)runner.rb:129. The@sessionsassignment runs before thecase. Tests miss it becausescriptedhardcodessession: 'sess-1'.reloadrestores sessions the runner deliberately discarded, and discards an interrupted stage's —runner.rb:67git worktree addinsideclaim's transaction fails healthy concurrent runs —supervisor.rb:59,runner.rb:94. Measured:second write RAISED after 6.2s: BusyExceptionRepo.prepareand stops the whole poller —repo.rb:81.preparerescuesMill::Git::Error;check_mode!raises its parentMill::Error. The method's own comment claims this cannot happen..mill.ymlfalls back to a local ref a stage can move —repo.rb:102The two comment-cursor HIGHs are tracked with the cursor-scoping issue instead, since one change likely fixes all three.