From 382b4a918837f033281e8dad9885cca7ed4bc797 Mon Sep 17 00:00:00 2001 From: Sam & Claude Date: Wed, 24 Jun 2026 19:24:30 +0200 Subject: [PATCH] mother: preflight python3, document prereqs, route from build handoff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three reinforcing changes so the next agent's mother setup lands instead of failing late: - setup-mother.sh: fail-fast preflight for python3 (geodesic-dome-mcp is a python3 script that otherwise installs fine and fails only when invoked). - MOTHER-SETUP.md: new Prerequisites section — python3 on PATH, and the COLIBRI_AUTOSPAWN_RPC_PROMPT boot decision (set = auto-spawn agent on boot; unset = quiet token-free boot). - FREEBSD-BUILD-LANE-HANDOFF.md: pointer to MOTHER-SETUP.md/setup-mother.sh so the mother docs are discoverable from the build-lane entry point. Co-Authored-By: Claude Opus 4.8 --- docs/FREEBSD-BUILD-LANE-HANDOFF.md | 5 +++++ packaging/mother/MOTHER-SETUP.md | 10 ++++++++++ packaging/mother/setup-mother.sh | 15 +++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/docs/FREEBSD-BUILD-LANE-HANDOFF.md b/docs/FREEBSD-BUILD-LANE-HANDOFF.md index db18332..d570112 100644 --- a/docs/FREEBSD-BUILD-LANE-HANDOFF.md +++ b/docs/FREEBSD-BUILD-LANE-HANDOFF.md @@ -13,6 +13,11 @@ build, boot it, and run the acceptance checks. The `x86_64-unknown-freebsd` binaries must be compiled on the FreeBSD host; this lane belongs to the FreeBSD agent end to end. +> **Mother-node setup (osa):** standing up the mother MCP host that USB nodes +> register into is a separate step from this build lane — follow +> `packaging/mother/MOTHER-SETUP.md` and run `packaging/mother/setup-mother.sh` +> (check its Prerequisites first). + ## 0. Host evidence to report Run once and paste into the validation report: diff --git a/packaging/mother/MOTHER-SETUP.md b/packaging/mother/MOTHER-SETUP.md index 7a7721c..e2bc9c4 100644 --- a/packaging/mother/MOTHER-SETUP.md +++ b/packaging/mother/MOTHER-SETUP.md @@ -18,6 +18,16 @@ infrastructure. | `build-colibri.sh` | MCP tool: build a colibri crate (branch-allowlisted) | | `colibri-mcp-ssh` | SSH forced-command wrapper (allowlisted: `""`, `"tools"` only) | +## Prerequisites + +- **`python3` on PATH** — `geodesic-dome-mcp` is a python3 script (standard + library only, no `pip install`). `setup-mother.sh` preflights this and aborts + if it is missing. Install with `pkg install python3`. +- **`COLIBRI_AUTOSPAWN_RPC_PROMPT` (a decision, not a dependency)** — the daemon + reads this on boot (`crates/colibri-daemon/src/socket.rs`). Set it to have the + daemon auto-spawn an agent with that opening prompt on boot; leave it unset for + a quiet, token-free boot. Choose deliberately when configuring the daemon env. + ## Architecture ``` diff --git a/packaging/mother/setup-mother.sh b/packaging/mother/setup-mother.sh index 73ebbe9..98c8c34 100755 --- a/packaging/mother/setup-mother.sh +++ b/packaging/mother/setup-mother.sh @@ -62,6 +62,21 @@ ensure_dir() { chmod 750 "$1" } +# ── 0. preflight ────────────────────────────────────────────────────── +# Fail fast on hard dependencies before installing anything, so a missing +# tool surfaces here rather than as a silent runtime failure later. + +echo "--- 0. preflight ---" +if ! command -v python3 >/dev/null 2>&1; then + echo " ERROR: python3 not found on PATH." + echo " geodesic-dome-mcp is a python3 script; without python3 it" + echo " installs fine but fails when the MCP host invokes it." + echo " Install it first: pkg install python3" + exit 1 +fi +echo " python3: $(command -v python3) OK" +echo "" + # ── 1. colibri binaries ─────────────────────────────────────────────── echo "--- 1. colibri binaries ---" -- 2.45.3