fix(install): bump BOI pin v3.3.1→v3.3.2 + atomic-rename deploy (FIX-017)#18
Merged
Merged
Conversation
…017)
The stale BOI_VERSION=v3.3.1 pin made install.sh (run by codex-parity tests)
revert ~/.boi/src/boi to v3.3.1 + rebuild + relink on every run — a version
flap that regressed the deployed daemon off the v3.3.2 stability cluster.
Two changes:
- VERSIONS: BOI_VERSION v3.3.1 → v3.3.2 (the released latest) so install.sh
short-circuits instead of reverting.
- install.sh: deploy the built binary as a real file via atomic rename
(cp tmp + mv) instead of `ln -sf` to the live cargo build output. Rebuilding
in place overwrote the Mach-O the running daemon was mapped from → macOS AMFI
SIGKILLed it ("Code Signature Invalid"); atomic rename gives a fresh inode so
the live process keeps its own until its next restart. Fast-path now requires
a non-symlink real file (`[ ! -L ]`) to force one-time migration off the old
symlink layout.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Problem
The deployed BOI daemon kept flapping between v3.3.2 and v3.3.1, silently regressing off the released stability cluster. Root cause:
VERSIONSstill pinnedBOI_VERSION=v3.3.1while v3.3.2 was the released latest. Thecodex-paritytest suite runsinstall.sh, whoseinstall_or_upgrade_boiread the stale pin and reverted~/.boi/src/boito v3.3.1 → rebuilt in place → relinked, on every run.Separately, that in-place rebuild overwrote the Mach-O the running daemon was mapped from → macOS AMFI SIGKILLed the live daemon ("Code Signature Invalid"; crash report
boi-2026-06-16-142615.ips).Fix
BOI_VERSIONv3.3.1 → v3.3.2 (the released latest) soinstall.shshort-circuits ("already installed ✓") instead of reverting → stops the flap.cpto a sibling tmp +mv -f) instead ofln -sfto the live cargo build output. Atomicrename(2)givesboi_bina fresh inode so a live daemon keeps its own inode until its next restart instead of being AMFI-killed. Fast-path guard now requires a non-symlink real file ([ ! -L ]) to force one-time migration off the old symlink layout.Review
Counter-reviewed (sonnet code-reviewer): mergeable. Blast-radius clean — doctor
boi_healthusesis_file()(works for a real file),NoBrokenSymlinksscans only.hex//.agents/, no test hard-codes the symlink contract (test-boi-upgrade.sh/test-boi-install.shalready branch on[ -L ]and accept a real file), rename is same-filesystem/atomic andset -euo pipefail-guarded, ad-hoc Mach-O signature survivescp.Known residuals (tracked in fix-backlog FIX-017, not closed here)
cargo buildat install.sh:421 still writestarget/release/boiin place, so a migration run where a daemon is still on the old symlink could AMFI on relink. Window is empty for the shipped v3.3.2→v3.3.2 (incremental no-op) but real for future bumps unless the build also targets a temp dir.test-boi-upgrade.sh6b cleanup restore no-ops after the real-file switch (benign;on_exitrm -rf cleans up).🤖 Generated with Claude Code