Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/bootstrap-diagnostics/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ When any diagnostic needs captain attention, report the plain consequence and re

- `MISSING: <tool> (install: <command>)` - list the missing tools to the captain with a one-line purpose each plus the printed install commands, wait for consent (one approval may cover the list), then run `bin/fm-bootstrap.sh install <approved tools...>`.
For `treehouse`, this also covers an installed version whose `treehouse get` lacks `--lease`; treat it as an upgrade request.
For `no-mistakes`, this also covers an installed version older than 1.31.2, because crewmate validation briefs delegate gate mechanics to no-mistakes' version-matched guidance.
For `no-mistakes`, this also covers an installed version older than 0.40.0, because crewmate validation briefs delegate gate mechanics to no-mistakes' version-matched guidance.
For any axi-family tool - `gh-axi`, `lavish-axi`, `tasks-axi`, `quota-axi` - an installed version below its floor is a plain upgrade request; [`bin/fm-bootstrap.sh`](../../../bin/fm-bootstrap.sh) owns the floor policy, and never argue the floor down to whatever the home happens to have installed.
For `tasks-axi`, this additionally covers an installed build that fails the separate feature probe (`bin/fm-tasks-axi-lib.sh` owns the definition); `config/backlog-backend=manual` only suppresses the verbose `BOOTSTRAP_INFO: tasks-axi available` fact, not this missing-tool report.
For `quota-axi`, bootstrap requires it because firstmate reads its current output directly before resolving every crew-dispatch profile array; without it, report the missing requirement and do not choose around an unexamined candidate.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ GitHub Actions and Dependabot are exempt so their automation keeps working, but

1. Fork the repo, then clone the parent repo or set your local `origin` back to the parent (`git@github.com:kunchenguid/firstmate.git`).
2. Create a branch and make your changes.
3. Initialize the gate with your fork as the push target: `no-mistakes init --fork-url git@github.com:<you>/firstmate.git` (firstmate expects **no-mistakes v1.31.2+**; without a fork, plain `no-mistakes init` still works for maintainers with push access).
3. Initialize the gate with your fork as the push target: `no-mistakes init --fork-url git@github.com:<you>/firstmate.git` (firstmate expects **no-mistakes v0.40.0+**; without a fork, plain `no-mistakes init` still works for maintainers with push access).
Comment thread
greptile-apps[bot] marked this conversation as resolved.
4. Commit your changes.
5. Push through the gate instead of pushing to `origin`:

Expand Down
9 changes: 7 additions & 2 deletions bin/fm-bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
# treehouse is also MISSING when its installed version lacks
# "treehouse get --lease" support.
# no-mistakes is also MISSING when its installed version is older than
# 1.31.2.
# 0.40.0.
# The AXI-family floor policy is owned beside GH_AXI_MIN and
# LAVISH_AXI_MIN below; the per-tool owners point there. An installed
# build below its floor reports MISSING like no-mistakes, so the operator
Expand Down Expand Up @@ -792,7 +792,12 @@ if ! BACKEND_TOOLS=$(fm_backend_required_tools "$BACKEND"); then
BACKEND_TOOLS=""
fi
TOOLS="$BACKEND_TOOLS $COMMON_TOOLS"
NO_MISTAKES_MIN=1.31.2
# NO_MISTAKES_MIN is the minimum-compatibility floor: the oldest no-mistakes
# release that supports firstmate's crewmate-validation workflow. Unlike the
# axi-family floors below, it is NOT bumped to the latest release on each
# captain update; it moves only when firstmate requires a newer no-mistakes
# capability and the install base has had time to catch up.
NO_MISTAKES_MIN=0.40.0
Comment thread
greptile-apps[bot] marked this conversation as resolved.
# AXI-FAMILY FLOOR POLICY. Every axi-family floor is the CURRENT LATEST published
# version of that tool, captain-bumped periodically to keep the whole fleet on the
# newest axi tools. It is NOT the minimum feature-introduced version. These floors
Expand Down
2 changes: 1 addition & 1 deletion docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ Secondmate homes inherit this file from the primary, so a secondmate's own crewm
On session start the first mate detects what its required toolchain is missing or too old and lists each problem with either an exact install command or manual instructions.
It installs automatically supported tools only after you say go; manual-only tools remain for you to install from the printed instructions.
Required tools come in two parts: a universal toolchain every home needs regardless of backend, and a per-backend delta that follows the runtime backend actually resolved for this home.
The universal toolchain is node, git, gh with GitHub auth via `gh auth login`, no-mistakes v1.31.2 or newer, compatible gh-axi, chrome-devtools-axi, compatible lavish-axi, compatible tasks-axi per "Backlog backend" above, and compatible quota-axi.
The universal toolchain is node, git, gh with GitHub auth via `gh auth login`, no-mistakes v0.40.0 or newer, compatible gh-axi, chrome-devtools-axi, compatible lavish-axi, compatible tasks-axi per "Backlog backend" above, and compatible quota-axi.
[`bin/fm-bootstrap.sh`](../bin/fm-bootstrap.sh) owns the axi-family floor policy and the gh-axi and lavish-axi floors, while [`bin/fm-tasks-axi-lib.sh`](../bin/fm-tasks-axi-lib.sh) and [`bin/fm-quota-axi-lib.sh`](../bin/fm-quota-axi-lib.sh) hold their own tools' floor constants.
This section is the single owner of that universal toolchain list; backend guides' prerequisites point here and add only their backend-specific tools.
In that list, no-mistakes runs the validation pipeline, gh-axi, chrome-devtools-axi, and lavish-axi cover GitHub, browser, and rich-review operations, and tasks-axi plus quota-axi back backlog mutations and quota-aware array dispatch.
Expand Down
10 changes: 5 additions & 5 deletions tests/fm-bootstrap.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' "${FM_FAKE_NO_MISTAKES_VERSION:-no-mistakes version v1.31.2 (fake) 2026-06-27T00:02:18Z}"
printf '%s\n' "${FM_FAKE_NO_MISTAKES_VERSION:-no-mistakes version v0.40.0 (fake) 2026-06-27T00:02:18Z}"
exit 0
fi
exit 0
Expand Down Expand Up @@ -332,10 +332,10 @@ test_no_mistakes_min_version() {
[ "$out" = "$missing" ] || fail "$label: expected '$missing', got: $out" ;;
esac
done <<'ROWS'
minimum no-mistakes version is accepted^no-mistakes version v1.31.2 (fake)^empty
newer no-mistakes minor is accepted^no-mistakes version v1.32.0 (fake)^empty
newer no-mistakes major is accepted^no-mistakes version v2.0.0 (fake)^empty
older no-mistakes patch reports an upgrade^no-mistakes version v1.31.1 (fake)^missing
minimum no-mistakes version is accepted^no-mistakes version v0.40.0 (fake)^empty
newer no-mistakes minor is accepted^no-mistakes version v0.41.0 (fake)^empty
newer no-mistakes major is accepted^no-mistakes version v1.0.0 (fake)^empty
older no-mistakes patch reports an upgrade^no-mistakes version v0.39.9 (fake)^missing
unparseable no-mistakes version reports an upgrade^no-mistakes development build^missing
ROWS
pass "bootstrap enforces no-mistakes minimum version"
Expand Down
2 changes: 1 addition & 1 deletion tests/fm-secondmate-harness.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1088,7 +1088,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' 'no-mistakes version v1.31.2 (fake)'
printf '%s\n' 'no-mistakes version v0.40.0 (fake)'
exit 0
fi
exit 0
Expand Down
2 changes: 1 addition & 1 deletion tests/fm-secondmate-liveness.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' 'no-mistakes version v1.31.2 (fake)'
printf '%s\n' 'no-mistakes version v0.40.0 (fake)'
exit 0
fi
exit 0
Expand Down
2 changes: 1 addition & 1 deletion tests/fm-secondmate-sync.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' 'no-mistakes version v1.31.2 (fake)'
printf '%s\n' 'no-mistakes version v0.40.0 (fake)'
exit 0
fi
exit 0
Expand Down
2 changes: 1 addition & 1 deletion tests/fm-session-start.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' 'no-mistakes version v1.31.2 (fake) 2026-06-27T00:02:18Z'
printf '%s\n' 'no-mistakes version v0.40.0 (fake) 2026-06-27T00:02:18Z'
exit 0
fi
exit 0
Expand Down
2 changes: 1 addition & 1 deletion tests/fm-shared-captain-inheritance.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' 'no-mistakes version v1.31.2 (fake)'
printf '%s\n' 'no-mistakes version v0.40.0 (fake)'
exit 0
fi
exit 0
Expand Down
2 changes: 1 addition & 1 deletion tests/fm-startup-memory-budget.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ SH
cat > "$fakebin/no-mistakes" <<'SH'
#!/usr/bin/env bash
if [ "${1:-}" = --version ]; then
printf '%s\n' 'no-mistakes version v1.31.2 (fake)'
printf '%s\n' 'no-mistakes version v0.40.0 (fake)'
fi
SH
cat > "$fakebin/tasks-axi" <<'SH'
Expand Down
Loading