Harden macOS triad startup and degraded VFS workflows - #149
Merged
Conversation
GavinPacini
marked this pull request as ready for review
August 6, 2026 22:15
GavinPacini
force-pushed
the
agent/macos-vfs-dev-fixes
branch
from
August 6, 2026 23:10
5230681 to
5cf0a03
Compare
GavinPacini
marked this pull request as draft
August 6, 2026 23:15
GavinPacini
force-pushed
the
agent/macos-vfs-dev-fixes
branch
from
August 7, 2026 13:35
5e848df to
1e66979
Compare
GavinPacini
marked this pull request as ready for review
August 7, 2026 13:58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/next.mdexplicitly live-first with degraded cached behaviorbloom vfscommands--services-onlylauncher mode so Session Sentinel, Signer, and Broker stay alive while developers rebuild and restart Machine independentlyPATHthroughtriad.env, with deterministic owned-service teardown onCtrl-Cor terminal closureWhy
Local canary testing exposed two startup problems: enrollment generation rejected installer-created output directories with the wrong ownership boundary, and activation could perform its readiness check before Broker had published its socket. Separately, short-lived VFS commands triggered an untracked Broker projection refresh, and macOS versions without NFS 4.1 support could not use the generic triad developer harness at all.
Once the harness could run without a mount, Machine development still required restarting the whole triad for every rebuild. The new services-only mode keeps the stateful Broker and Signer processes stable in one foreground launcher while Machine remains fully developer-owned in another terminal.
This keeps production startup fail-closed where required, preserves degraded Broker-independent VFS operation, provides a supported IPC/VFS-only development path when kernel mounting is unavailable, and shortens Machine iteration without weakening service isolation. Explicitly requested mounts remain strict and fail with an actionable fallback message.
Services-only workflow
Start the dependencies in one terminal:
Then iterate on Machine in another terminal:
Validation
cargo fmt --checkbash -n scripts/triad-dev-launch.shcargo test -p bloom-vfs— 344 tests passed before the latest target update; after rebasing onto7bb1450, 335 unit tests pass and one upstream test fails becausededdd48changed single-payload Petal claims to the canonical batch digest without updating this VFS fixturecargo test -p bloom-daemon— 50 tests passed before the latest target update; after rebasing onto7bb1450, 46 unit tests pass and one upstream production-path test fails with the samededdd48payload-digest mismatchcargo test -p bloom-it --test triad_release— 32 tests passed before the latest target updatecargo test -p bloom-it --test triad_release triad_developer_launcher_— 6 tests passedcargo build -p bloom --no-default-features --features mount,triad-dev-harnessbloom vfs ls /andbloom vfs cat /next.mdbloomPATH resolution, absence of a launcher-owned Machine socket, and cleanup of runtime/readiness state onCtrl-CChecklist
docs/architecture/) updated if contracts or behavior changed — N/A: this PR changes startup lifecycle and developer tooling, not a published architecture contract; lifecycle design notes and local integration documentation are included in the PRcrates/bloom-vfs/src/docs/agent-guidance.mdand affected Petal READMEs) — N/A: no agent-guidance or Petal interface changes; the affected developer workflow is documented indocs/local-mainnet-integration.md