Skip to content

fix: add durable watcher session runner#131

Open
JTInventory wants to merge 10 commits into
kunchenguid:mainfrom
JTInventory:fix/watch-session-runner-0629
Open

fix: add durable watcher session runner#131
JTInventory wants to merge 10 commits into
kunchenguid:mainfrom
JTInventory:fix/watch-session-runner-0629

Conversation

@JTInventory

@JTInventory JTInventory commented Jun 29, 2026

Copy link
Copy Markdown

Summary

Active supervision can now stay alive in harness lanes where tracked background tasks are not durable. bin/fm-watch-session.sh start creates one tmux runner per FM_HOME/state pair and loops through the existing verified fm-watch-arm.sh path, so it does not use broad process matching or disturb sibling homes.

The guard now requires real watcher proof before staying quiet: state/.watch.lock must name a live bin/fm-watch.sh process for the same home, with matching pid identity, and the liveness beat must be fresh. A fresh .last-watcher-beat by itself now warns instead of hiding a stopped watcher.

Docs now point Codex/API-style lanes at the session runner and describe the stronger liveness proof.

Tests

  • bash -n bin/fm-guard.sh bin/fm-watch-session.sh tests/fm-watcher-lock.test.sh tests/fm-watch-session.test.sh tests/fm-wake-queue.test.sh
  • git diff --check
  • bash tests/fm-watch-session.test.sh && bash tests/fm-watcher-lock.test.sh
  • bash tests/fm-wake-queue.test.sh && bash tests/fm-watch-triage.test.sh && bash tests/fm-wake-daemon-lifecycle-e2e.test.sh

Compound Engineering
GPT-5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant