fabro/lib/apps
Bryan Helmkamp 1166caed0b
Give up on an unreachable worker control stream and reap .ft- test daemons
A worker whose server is killed outright retried its control-stream
connect forever at a 5 s capped backoff, so it never finalized, never
stopped its sandbox, and lived until reboot. The worker now tracks the
start of each run of continuous connection failure and gives up after
60 s (10 s once its parent is pid 1), through the existing fatal
control-loss path that interrupts interviews and cancels the run. After
that fatal fires, the runner keeps driving the cancelled pipeline for a
bounded grace so `conclude` can stop the sandbox before the process
exits, instead of dropping the pipeline future mid-flight.

The test harness's stale-daemon reaper only matched `fabro server`
titles bound under `/tmp/.tmp*`, but `TestContext` roots are
`.ft-<label>-*` under `std::env::temp_dir()`, so daemons bound there
were never reaped. The regex now also matches sockets below a `.ft-`
directory component under any parent, and the unit test covers both
roots plus real-looking paths and `.ft-` outside a directory component.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-19 07:27:55 -04:00
..
fabro-cli Give up on an unreachable worker control stream and reap .ft- test daemons 2026-09-19 07:27:55 -04:00
fabro-mcp-server Simplify run creation to registered workflow versions 2026-09-12 11:04:15 -06:00
fabro-server Bump lithos-llm to 43a42ac and migrate catalogs to the codecs schema 2026-09-18 22:07:00 -04:00
fabro-spa refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00