fix(bin): raise axi-family bootstrap floors to current-latest - #20
Merged
Merged
Conversation
Raise the axi-family bootstrap floors to their current published versions: lavish-axi 0.1.45, tasks-axi 0.2.4, quota-axi 0.1.17 (gh-axi 0.1.29 unchanged). State the floor policy (current-latest, never lowered to a feature minimum) beside the constants in bin/fm-bootstrap.sh, and point per-tool floor owners and the backlog handoff error text at that owner instead of duplicating version numbers.
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.
Intent
The captain decided this fork should diverge from the upstream kunchenguid/firstmate template rather than track it closely, but wants the ~10 low-risk, isolated fixes identified in the diff review (data/fm-upstream-firstmate-diff-review/report.md) cherry-picked now. Each fix must be verified as genuinely isolated - not touching fork-unique work (the AGY headless-crewmate harness adapter, codebase-memory MCP integration via Pi extension, progress-ledger skill, and spec-scaffold skill) - before applying. If a candidate turns out not to be as isolated as the review assessed, skip it and note why rather than forcing it in.
Assessment against the current fork tip found 7 of the 10 candidates already present (514f0ab Bash 3.2 brief scaffolding, 41ffd45 CLAUDE_CONFIG_DIR forwarding, e595611 .gitignore config/ directory, a117b41 Claude session-lock ancestry, c0c0881 Calm version ceiling, 7cbb3f6 subagent todo tools, 4a9979a stale AXI tools - the last already landed as fork commit 763179a), 1 remote-only (bea3d23 fm-remote-entrypoint.sh symlink fix, whose file is absent in this fork which has no remote secondmates), and 2 genuinely missing. Those 2 were applied: ef2c3a2 raises the axi-family bootstrap floors to current-latest (lavish-axi 0.1.45, tasks-axi 0.2.4, quota-axi 0.1.17, gh-axi 0.1.29 unchanged) and states the floor policy beside the constants, and 70aeba8 raises lavish-axi to 0.1.46. Conflict resolution dropped the remote-secondmate hunks (bin/fm-backlog-receive.sh, tests/fm-on.test.sh, tests/fm-remote-doctor.test.sh) that do not exist in this fork.
What Changed
MISSING.bin/fm-bootstrap.sh; the per-tool libs (fm-tasks-axi-lib.sh,fm-quota-axi-lib.sh), bootstrap diagnostics, and docs now reference that policy instead of restating per-tool rationale.fm_fake_version_toolhelper, pinned the new floors across fixtures, and added a readiness-file handshake in the watcher-lock test to remove a startup race.Risk Assessment
✅ Low: The change is well-bounded and mechanical: it raises three axi-family bootstrap floors and adds a lavish-axi floor gate with a documented policy, updates docs and test fixtures consistently, and includes one correct test-flakiness fix, with no defects, stale references, or intent contradictions found.
Testing
I ran the bootstrap behavior suite and a manual end-to-end exercise of bin/fm-bootstrap.sh against a fake toolchain, confirming each raised axi-family floor (lavish-axi 0.1.46, tasks-axi 0.2.4, quota-axi 0.1.17, gh-axi unchanged at 0.1.29) reports the exact MISSING install line below the floor and is silent at/above it, and that the newly-added lavish-axi gate flips an old 0.1.45 build from silently accepted (base) to MISSING (target); all touched test suites pass, with only a pre-existing watcher-lock timing test flaking once before passing on retry.
Evidence: axi-floor bootstrap transcript (MISSING vs silent at each boundary)
=== lavish-axi floor (LAVISH_AXI_MIN=0.1.46) === lavish-axi 0.1.45 (below floor) => MISSING: lavish-axi (install: npm install -g lavish-axi && lavish-axi setup hooks) lavish-axi 0.1.46 (at floor) => (silent - accepted) lavish-axi 0.1.47 (above floor) => (silent - accepted) === tasks-axi floor (FM_TASKS_AXI_MIN=0.2.4) === tasks-axi 0.2.3 (below floor) => MISSING: tasks-axi (install: npm install -g tasks-axi) tasks-axi 0.2.4 (at floor) => (silent - accepted) === quota-axi floor (FM_QUOTA_AXI_MIN=0.1.17) === quota-axi 0.1.16 (below floor) => MISSING: quota-axi (install: npm install -g quota-axi) quota-axi 0.1.17 (at floor) => (silent - accepted) === gh-axi floor unchanged (GH_AXI_MIN=0.1.29) === gh-axi 0.1.29 (at unchanged floor) => (silent - accepted)Evidence: lavish-axi floor before/after (base silently accepts 0.1.45, target reports MISSING)
base (lavish-axi 0.1.45) => (silent - accepted) target (lavish-axi 0.1.45) => MISSING: lavish-axi (install: npm install -g lavish-axi && lavish-axi setup hooks)Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
tests/fm-watcher-lock.test.sh:334- test_lock_empty_pid_uses_minimum_grace failed once on the first run ('rc=0 held=' - the freshly-created empty lock dir was stolen with zero stale threshold), then passed on three consecutive reruns. The test and bin/fm-wake-lib.sh lock logic are byte-identical between base and target commits (this diff only touched test_watch_restart_attaches_to_healthy_peer's peer-readiness signaling), so this is a pre-existing timing flake under load, not a regression introduced by the axi-floor change.bash tests/fm-bootstrap.test.shbash tests/fm-session-start.test.shbash tests/fm-teardown.test.shbash tests/fm-x-mode.test.shbash tests/fm-startup-memory-budget.test.shbash tests/fm-shared-captain-inheritance.test.shbash tests/fm-secondmate-harness.test.shbash tests/fm-secondmate-liveness.test.shbash tests/fm-secondmate-sync.test.shbash tests/fm-watcher-lock.test.sh (flaked once, passed on 3 reruns)bash /tmp/fm-axi-floor-demo.sh (runs real bin/fm-bootstrap.sh with fake lavish-axi/tasks-axi/quota-axi/gh-axi at boundary versions)FM_BASE_ROOT=<base-commit-tree> bash /tmp/fm-axi-before-after.sh (real base vs target fm-bootstrap.sh against lavish-axi 0.1.45)✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.