diff --git a/AGENTS.md b/AGENTS.md index 35b83765..99506260 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,14 +6,14 @@ The XFCE operator USB work now uses a git-coordinated split. Agents may review or suggest across boundaries, but should not silently take over another role's load-bearing responsibility. -| Role name | Identity | Owns | Restrictions | -| ---------------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| **Pi ISO Developer** | Pi harness (this dev agent) | Source changes, docs, static checks, commits, pushes | Does not start ISO builds or flash media unless explicitly assigned | -| **Codex ISO Builder** | codex pkg on the FreeBSD build host | `./build.sh`, mounted-image inspection, publishing, hardware validation | Should avoid broad source refactors; reports exact logs/output back through git or handoff notes | -| **Hermes USB/IMG Deployer** | Hermes on Debian/Linux | Downloading verified published artifacts, USB target identification, flashing | Does not need git-host access; never flashes unverified artifacts or partition paths | -| **Claude Reviewer / XFCE Tweaker** | Claude (Linux) | Review/plans plus Track E XFCE GUI polish | Cannot build ISO, cannot run FreeBSD-only validation, should mark speculative runtime claims as such | -| **Opencode / Z.ai Integrator** | Opencode CLI on Linux | Linux-side Colibri/dashboard experiments plus Pi/DeepSeek v4 provider-lane smoke wiring | Cannot claim FreeBSD runtime proof; uses Sam-provided API keys only for provider validation | -| **Operator (Sam)** | Human operator | Product, hardware, acceptance, release judgment | Human approval required for release/tagging decisions | +| Role name | Identity | Owns | Restrictions | +| ---------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| **Pi ISO Developer** | Pi harness (this dev agent) | Source changes, docs, static checks, commits, pushes | Does not start ISO builds or flash media unless explicitly assigned | +| **Codex ISO Builder** | codex pkg on the FreeBSD build host | `./build.sh`, mounted-image inspection, publishing, hardware validation | Should avoid broad source refactors; reports exact logs/output back through git or handoff notes | +| **Hermes USB/IMG Deployer** | Hermes on Debian/Linux | Downloading verified published artifacts, USB target identification, flashing | Does not need git-host access; never flashes unverified artifacts or partition paths | +| **Claude Reviewer / XFCE Tweaker** | Claude (Linux) | Review/plans plus Track E XFCE GUI polish | Cannot build ISO, cannot run FreeBSD-only validation, should mark speculative runtime claims as such | +| **Opencode / Z.ai Integrator** | Opencode CLI on Linux | Linux-side Colibri/dashboard experiments plus Pi/DeepSeek v4 provider-lane validation wiring | Cannot claim FreeBSD runtime proof; uses Sam-provided API keys only for provider validation | +| **Operator (Sam)** | Human operator | Product, hardware, acceptance, release judgment | Human approval required for release/tagging decisions | ## Agent / Codebase Check-In Matrix @@ -21,14 +21,14 @@ Use this as the lightweight "who checks in where" matrix while work spans multiple repos. Pushed commits, mounted-image reports, manifests, or explicit handoff docs are the expected check-in surface. -| Agent lane / identity | Primary codebase(s) | Typical check-in artifact | -| ------------------------------ | ---------------------------------------------------------- | -------------------------------------------------------------- | -| **Pi ISO Developer** | `clawdie-iso` | Small pushed commit on active branch plus static-check result | -| **Codex ISO Builder** | `/home/clawdie/ai/clawdie-iso`, `/home/clawdie/ai/colibri` | Build log, mounted-image sweep, publish manifest, smoke notes | -| **Hermes USB/IMG Deployer** | published ISO artifacts | Checksum/manifest verification plus flash-target confirmation | -| **Claude Reviewer / Tweaker** | `clawdie-iso` | Review/GUI-polish commit or explicit handoff note | -| **Opencode / Z.ai Integrator** | `clawdie-ai`, `colibri` | Provider smoke output, small manifest, or handoff doc | -| **Operator (Sam)** | all three repos | Final acceptance note, branch choice, release/publish approval | +| Agent lane / identity | Primary codebase(s) | Typical check-in artifact | +| ------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------------ | +| **Pi ISO Developer** | `clawdie-iso` | Small pushed commit on active branch plus static-check result | +| **Codex ISO Builder** | `/home/clawdie/ai/clawdie-iso`, `/home/clawdie/ai/colibri` | Build log, mounted-image sweep, publish manifest, validation notes | +| **Hermes USB/IMG Deployer** | published ISO artifacts | Checksum/manifest verification plus flash-target confirmation | +| **Claude Reviewer / Tweaker** | `clawdie-iso` | Review/GUI-polish commit or explicit handoff note | +| **Opencode / Z.ai Integrator** | `clawdie-ai`, `colibri` | Provider validation output, small manifest, or handoff doc | +| **Operator (Sam)** | all three repos | Final acceptance note, branch choice, release/publish approval | ### Git Coordination Rules @@ -43,7 +43,7 @@ handoff docs are the expected check-in surface. checksums on Linux, identifies the USB target, and owns the final image-to-USB deployment handoff. - Opencode / Z.ai Integrator owns Linux-side Colibri/dashboard experiments and - the Pi/DeepSeek v4 smoke lane when Sam provides a `ZAI_API_KEY`; findings + the Pi/DeepSeek v4 validation lane when Sam provides a `ZAI_API_KEY`; findings should come back as exact commands, output, provider/version notes, and small manifests/summaries that Colibri can ingest. - If a change needs a long ISO build, USB flash, or real hardware proof, hand it @@ -104,7 +104,7 @@ the ISO does **not** build Rust while the image is mounted. skill (§Colibri artifact preflight). - Staging layout (installed paths, rc.d, directory ownership) is owned by Colibri `docs/ISO-INTEGRATION-PLAN.md`. -- Required by ISO preflight: `colibri-daemon`, `colibri`, `colibri-smoke-agent`, +- Required by ISO preflight: `colibri-daemon`, `colibri`, `colibri-test-agent`, and `colibri-mcp`. `colibri-tui` is optional in staging code but desired for this USB target and should be verified alongside the required binaries. diff --git a/PLAN-OPERATOR-USB-NEXT.md b/PLAN-OPERATOR-USB-NEXT.md index e53ef479..f37c7523 100644 --- a/PLAN-OPERATOR-USB-NEXT.md +++ b/PLAN-OPERATOR-USB-NEXT.md @@ -144,7 +144,7 @@ This round does **not** ship a full installer. It sets up the plumbing. will later pull `pkg-list-kde.txt`; not creating that file yet). 3. **Hook from `firstboot.sh`.** Call the new function after base firstboot completes, before `clawdie_shell_deploy_*` runs. -4. **Bhyve smoke test.** A shell script under `scripts/` that boots the +4. **Bhyve validation test.** A shell script under `scripts/` that boots the built image in bhyve, runs the disk-install path with `CLAWDIE_PROFILE=xfce`, and asserts `blender` (the roadmap-essential member of disk-install-extras) ends up installed on the target disk. @@ -225,15 +225,15 @@ contract between agents. **Manifest surfaces:** -| Surface | Example skill / script | Schema target | Purpose | -| ------------------ | ------------------------------ | ---------------------------------- | ----------------------------------------------------- | -| Build result | `iso-build` | `clawdie.iso.build.v1` | Commit, flags, log path, output files, static checks | -| Publish result | `iso-publish` | `clawdie.iso.publish.v1` | Public URLs, checksums, manifest path, symlink state | -| Flash verification | `iso-flash-verify` | `clawdie.iso.flash.v1` | Download, checksum, xz test, target disk fit, flash | -| Mounted validation | `iso-validate-image` | `clawdie.iso.validation.v1` | SDDM, CLIs, `mdo`, seed slice, no-blank, panel assets | -| Hardware report | `iso-hardware-report-ingest` | `clawdie.iso.hardware.v1` | GPU/KMS, GL renderer, input, audio, Wi-Fi, SDDM/XFCE | -| Package audit | `iso-package-audit` | `clawdie.iso.package-audit.v1` | Category, size, flat size, reason kept, deferral risk | -| Provider smoke | `pi-provider-smoke` equivalent | `clawdie.provider-smoke.result.v1` | Pi JSONL events, provider/model identity, pass/fail | +| Surface | Example skill / script | Schema target | Purpose | +| ------------------- | ------------------------------ | ---------------------------------- | ----------------------------------------------------- | +| Build result | `iso-build` | `clawdie.iso.build.v1` | Commit, flags, log path, output files, static checks | +| Publish result | `iso-publish` | `clawdie.iso.publish.v1` | Public URLs, checksums, manifest path, symlink state | +| Flash verification | `iso-flash-verify` | `clawdie.iso.flash.v1` | Download, checksum, xz test, target disk fit, flash | +| Mounted validation | `iso-validate-image` | `clawdie.iso.validation.v1` | SDDM, CLIs, `mdo`, seed slice, no-blank, panel assets | +| Hardware report | `iso-hardware-report-ingest` | `clawdie.iso.hardware.v1` | GPU/KMS, GL renderer, input, audio, Wi-Fi, SDDM/XFCE | +| Package audit | `iso-package-audit` | `clawdie.iso.package-audit.v1` | Category, size, flat size, reason kept, deferral risk | +| Provider validation | `pi-provider-check` equivalent | `clawdie.provider-smoke.result.v1` | Pi JSONL events, provider/model identity, pass/fail | **Key architectural decisions:** @@ -687,15 +687,15 @@ split: Role definitions are canonical in `AGENTS.md`. This table only maps those roles to this round: -| Role | Owns in this round | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Pi ISO Developer** | Primary source implementation: shell scripts, validation hooks, package-list mechanics, docs updates, static checks, commits and pushes. | -| **Codex ISO Builder** | Build + flash + validate on Intel and AMD after each build target lands. Runs mounted-image checks, the validation script, USB flashing, and NVIDIA validation when hardware arrives. Reports exact logs/output back through git or handoff notes. | -| **Claude Reviewer / XFCE Tweaker** | Reviews plans/diffs, identifies blind spots, owns Track E XFCE GUI tweaks, and reviews the ISO manifest surface for Colibri compatibility. | -| **Opencode (z.ai-GLM4.7)** | Owns Linux-side Colibri/dashboard experiments and the GLM-4.7/DeepSeek provider smoke lanes. Reports results as manifests/summaries. GLM-4.7 transport already proven (this session runs on it); DeepSeek uses Sam's own key with `--provider deepseek`. | -| **Pi + DeepSeek v4** | Provider-lane validation target: prove `pi --mode json` works against DeepSeek v4 with Sam's DeepSeek API key, report provider/model identity, and hand exact command/output back before anyone treats the lane as production-ready. | -| **Codex (FreeBSD endpoint)** | Build/validate endpoint for ISO manifests: runs skills on FreeBSD, emits exact build/hardware results, and keeps `watchdog`/`hostd` as local safety boundaries. | -| **Operator (Sam)** | Final product direction, hardware purchases, hands-on acceptance, release/tag decisions, and NVIDIA/portable-workstation UX judgment. | +| Role | Owns in this round | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Pi ISO Developer** | Primary source implementation: shell scripts, validation hooks, package-list mechanics, docs updates, static checks, commits and pushes. | +| **Codex ISO Builder** | Build + flash + validate on Intel and AMD after each build target lands. Runs mounted-image checks, the validation script, USB flashing, and NVIDIA validation when hardware arrives. Reports exact logs/output back through git or handoff notes. | +| **Claude Reviewer / XFCE Tweaker** | Reviews plans/diffs, identifies blind spots, owns Track E XFCE GUI tweaks, and reviews the ISO manifest surface for Colibri compatibility. | +| **Opencode (z.ai-GLM4.7)** | Owns Linux-side Colibri/dashboard experiments and the GLM-4.7/DeepSeek provider validation lanes. Reports results as manifests/summaries. GLM-4.7 transport already proven (this session runs on it); DeepSeek uses Sam's own key with `--provider deepseek`. | +| **Pi + DeepSeek v4** | Provider-lane validation target: prove `pi --mode json` works against DeepSeek v4 with Sam's DeepSeek API key, report provider/model identity, and hand exact command/output back before anyone treats the lane as production-ready. | +| **Codex (FreeBSD endpoint)** | Build/validate endpoint for ISO manifests: runs skills on FreeBSD, emits exact build/hardware results, and keeps `watchdog`/`hostd` as local safety boundaries. | +| **Operator (Sam)** | Final product direction, hardware purchases, hands-on acceptance, release/tag decisions, and NVIDIA/portable-workstation UX judgment. | Cross-agent handoff: use git as the shared control plane. Suggestion commits are welcome, but each build target should be re-fetched and checked before build. diff --git a/TESTING.md b/TESTING.md index 7b3848c2..b63e794e 100644 --- a/TESTING.md +++ b/TESTING.md @@ -336,7 +336,7 @@ sudo mdconfig -d -u md0 bhyve is an **on-demand** verification lane, not a per-change gate — it's slow and needs the ML350p, so run it when you want boot/runtime confidence before committing to physical hardware, not on every iteration. The cheap gates that run -every change are the static checks (`sh -n`, the staging smoke) and `cargo test`. +every change are the static checks (`sh -n`, staging self-tests) and `cargo test`. When you do run it, treat bhyve as authoritative for boot/runtime plumbing and still treat real hardware as the final authority for GPU, panel, input, Wi-Fi, diff --git a/build.cfg b/build.cfg index 81c2e3c8..972aa727 100644 --- a/build.cfg +++ b/build.cfg @@ -18,7 +18,7 @@ BUILD_CHANNEL="${BUILD_CHANNEL:-dev}" # dev | release # Output image # User-facing operator image format: -# clawdie---usb-DD.MM.YY.img +# clawdie--.img # # USB KEY SIZING GUIDE: # 32GB USB → IMAGE_SIZE="28G" (current fast-iteration default) @@ -28,8 +28,7 @@ BUILD_CHANNEL="${BUILD_CHANNEL:-dev}" # dev | release # Current validation target: 32GB-class USB sticks. # Raise IMAGE_SIZE manually when the workflow shifts back to larger media. IMAGE_SIZE="28G" -# build.sh derives IMAGE_NAME from desktop, the FreeBSD major-version codename, -# and the build date. +# build.sh derives IMAGE_NAME from the FreeBSD codename and ISO_VERSION. # Clawdie-AI ref to bundle from Forgejo. # Use main for install validation so ISO firstboot exercises the current diff --git a/docs/POUDRIERE-BUILD-SERVER.md b/docs/POUDRIERE-BUILD-SERVER.md index ee4cdeac..62220058 100644 --- a/docs/POUDRIERE-BUILD-SERVER.md +++ b/docs/POUDRIERE-BUILD-SERVER.md @@ -229,9 +229,9 @@ This gives us: - `colibri` - `colibri-daemon` -- `colibri-tui` -- `colibri-smoke-agent` +- `colibri-test-agent` - `colibri-mcp` +- `colibri-tui` (optional in current raw-binary staging, desired for operator USB) All with proper pkg metadata, upgradeable, with dependencies tracked. diff --git a/packages/pkg-list-xfce.txt b/packages/pkg-list-xfce.txt index 5d2d2e38..f13da61e 100644 --- a/packages/pkg-list-xfce.txt +++ b/packages/pkg-list-xfce.txt @@ -20,7 +20,7 @@ adwaita-icon-theme-legacy gtk-update-icon-cache shared-mime-info desktop-file-utils -# Keep xterm as a tiny canonical Xorg rescue/smoke-test client. If startx is +# Keep xterm as a tiny canonical Xorg rescue/validation client. If startx is # invoked without a working xinitrc, Xorg defaults to xterm rather than failing # with "Unable to run program xterm". xterm diff --git a/scripts/test-release-gate.sh b/scripts/test-release-gate.sh index e76909f3..aee0e2b9 100755 --- a/scripts/test-release-gate.sh +++ b/scripts/test-release-gate.sh @@ -47,4 +47,4 @@ _release_errors=0; assert_clean_repo modified "${modified}"; check "${_release_e _release_errors=0; assert_clean_repo nogit "${TMP}/does-not-exist"; check "${_release_errors}" 0 "non-git path is skipped" -[ "${fail}" -eq 0 ] && echo "PASS: release gate smoke test" || { echo "FAILED"; exit 1; } +[ "${fail}" -eq 0 ] && echo "PASS: release gate self-test" || { echo "FAILED"; exit 1; } diff --git a/skills/iso-build/SKILL.md b/skills/iso-build/SKILL.md index d16fdbb7..ba88e90c 100644 --- a/skills/iso-build/SKILL.md +++ b/skills/iso-build/SKILL.md @@ -150,15 +150,21 @@ cargo build --workspace --release ls -lh target/release/colibri-daemon \ target/release/colibri \ - target/release/colibri-smoke-agent \ - target/release/colibri-mcp \ - target/release/colibri-tui + target/release/colibri-test-agent \ + target/release/colibri-mcp file target/release/colibri-daemon \ target/release/colibri \ - target/release/colibri-smoke-agent \ - target/release/colibri-mcp \ - target/release/colibri-tui + target/release/colibri-test-agent \ + target/release/colibri-mcp + +# Optional in the staging script, but desired for this operator USB target. +if [ -x target/release/colibri-tui ]; then + ls -lh target/release/colibri-tui + file target/release/colibri-tui +else + echo "WARN: optional colibri-tui artifact is missing" +fi target/release/colibri --help | head ```