Skip to content

fix(daemon): start through one user supervisor - #684

Merged
zackees merged 1 commit into
mainfrom
fix/669-single-daemon-supervisor
Oct 18, 2026
Merged

zackees merged 1 commit into
mainfrom
fix/669-single-daemon-supervisor

Conversation

@zackees

@zackees zackees commented Oct 18, 2026

Copy link
Copy Markdown
Owner

Closes #669
Closes #596

The CLI now starts an enabled systemd or launchd entry through its user service manager. Autostart entries run the installed <state>/daemon/bosn-daemon, and existing entries are repaired before startup. With no entry, on-demand startup creates a new Unix session. A competing daemon serve exits cleanly when another process holds the registry writer lock.

Generated manager entries escape path arguments and are replaced atomically. AGENTS.md records the supervisor decision.

Validation:

  • RED: old unit binary assertion failed before implementation.
  • Focused autostart tests: 11 passed.
  • ./lint: passed.
  • Local gate: tests and Rust lanes passed; commit stamped.

The live development host's user unit is enabled but currently failed with its old CLI ExecStart. I did not restart that shared host unit while other sessions may be using the daemon; manager behavior was covered by fake-runner tests.

Local-Gate: v1 tree=5a8725839adff45c5f1cc93d0b1455d5a6bd8771 secs=264 lanes=rust:run,tests:run
Ci-Attestation: {"at":1792291514,"gate":"rust/all/fmt","host":"linux-x86_64","key":"1b41986c067621645fd3df2a44ad49e9b77e52f32f10b57edbaa1e4677439ec4","lane":"rust","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":264,"stamp":"1f189984816684a6963c181df08ce727","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
Ci-Attestation: {"at":1792291514,"gate":"rust/all/boundary","host":"linux-x86_64","key":"1b41986c067621645fd3df2a44ad49e9b77e52f32f10b57edbaa1e4677439ec4","lane":"rust","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":264,"stamp":"2e780c454d137f6e80264592c8516f52","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
Ci-Attestation: {"at":1792291514,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"1b41986c067621645fd3df2a44ad49e9b77e52f32f10b57edbaa1e4677439ec4","lane":"rust","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":264,"stamp":"f8c491ef54d9b87ca0739b0222c7cc66","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
Ci-Attestation: {"at":1792291514,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"1b41986c067621645fd3df2a44ad49e9b77e52f32f10b57edbaa1e4677439ec4","lane":"rust","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":264,"stamp":"f7a19cd80d12929aaa9182d1be98b378","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
Ci-Attestation: {"at":1792291514,"gate":"python/all/static","host":"linux-x86_64","key":"9f6427a42830aa2d9af6ad189004a04cd6162455db97fbfe530eb2b39c9ddadc","lane":"tests","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":242,"stamp":"1ac4fa1c8fa6d743a94bb1b18e1543e9","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
Ci-Attestation: {"at":1792291514,"gate":"general/all/ci-policy","host":"linux-x86_64","key":"9f6427a42830aa2d9af6ad189004a04cd6162455db97fbfe530eb2b39c9ddadc","lane":"tests","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":242,"stamp":"d41877b7be2e0fce6db76fa1c5fc51b4","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
Ci-Attestation: {"at":1792291514,"gate":"python/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"9f6427a42830aa2d9af6ad189004a04cd6162455db97fbfe530eb2b39c9ddadc","lane":"tests","parents":["2c9c5e756e9794e5aa9e7ce53819dd2d63991cde"],"secs":242,"stamp":"4f2b085f87a864f6d405bbc3df869edc","tree":"5a8725839adff45c5f1cc93d0b1455d5a6bd8771","v":1,"via":"run"}
@zackees
zackees merged commit 1841ffd into main Oct 18, 2026
14 checks passed
@zackees
zackees deleted the fix/669-single-daemon-supervisor branch October 18, 2026 02:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant