decisions, vikunja-setup: decision 128, recover() gap filed as Vikunja #244 (#1585)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 18:47:59 -05:00
co-authored by Claude Opus 5.5
parent d199c51f62
commit cfc7fb1aa4
3 changed files with 103 additions and 0 deletions
+22
View File
@@ -2857,3 +2857,25 @@ which stay with him. Each item names who decided it and what happened.
between changed what a file's imports are allowed to load.
- Harness runs on the 21-path candidate in Filbert's review and in
Sage's landing gate, not in a separate Dewey slot.
128. **The launcher's recover() gap is a follow-up, not a row 91 blocker
(2026-10-12).** Darkwing found it building row 91 (build.md, "Found,
not fixed"). `recover()` in `packages/cli/src/launcher.mjs` sends
SIGKILL to a leftover bwrap session, waits up to 5 s, then binds and
ends the run whether or not the process is gone. Ending the run
releases the role, so `registry.running` no longer refuses
`instance-running`, and a launch of that instance could reach
`ensureCheckouts` while the old process still writes the clone.
That is the check-then-use gap decision 126 closed for live sessions.
- Not a blocker for row 91: it needs a bus start that finds a leftover
session whose SIGKILL hasn't taken effect within 5 s (a process
stuck in uninterruptible sleep, for one). Row 91 doesn't widen it.
- Filed as Vikunja #244 (P19). The fix releases the role only once the
process is confirmed gone, or keeps it held and refuses the relaunch
with a named reason, tested with a stand-in that outlives the window.
It gets a queue row and brief before sessions use row 91's clone in
daily work. It touches `packages/cli`, so decision 109's notice to
Mos applies.
- Filbert's row 91 review says whether the session-live guard depends
on anything else that assumes the role release means the process is
gone.