Commit graph

306 commits

Author SHA1 Message Date
f56bdd48bc feat(iso): ship git-backed AI source checkouts (Sam & Codex)
Seed live /home/clawdie/ai repos as shallow git checkouts with .git metadata and .clawdie-source.json provenance, remove stale hardcoded ISO version strings, and keep markdown formatting green.\n\nChecks: sh -n build.sh; sh -n scripts/stage-colibri-iso.sh; git diff --check; npx --yes prettier@3 --check BUILD.md README.md live/operator-session/bootstrap.html; ./scripts/check-format.sh; local file:// shallow clone smoke.
2026-06-15 09:09:14 +02:00
Sam & Claude
718d5deaa9 feat(iso): live-rebuild lane covers zot + version-model cleanup (Sam & Claude)
Round 1 of the pre-final-build polish (Linux-safe, no FreeBSD runtime claims):

- Live rebuild lane now spans the whole agent stack, not just Colibri:
  - add `go` to pkg-list-live-operator.txt (builds zot on the booted USB)
  - seed the zot source snapshot at /home/clawdie/ai/zot via
    seed_live_ai_source_repo (skipped automatically if the checkout is absent)
  - docs/LIVE-COLIBRI-REBUILD.md: add the `go build` rebuild steps for zot and
    list `go` under required live packages
- CHANGELOG: reconcile the stale Repository Status table to the current
  zot (agent) + Colibri (control plane) architecture — pi demoted to spawnable
  backend, clawdie-ai being pruned, clawdie-shell archived — and record that the
  image version tracks the zot release (git describe), no invented ISO number.

Deferred to Round 2 (FreeBSD-validated): staging the `clawdie` binary and wiring
disk-install to run `clawdie apply` for the deployed-system service. That path
provisions ZFS + an rc.d service on the target and cannot be validated from
Linux, so it goes through the FreeBSD handoff rather than shipping unproven.

Checks: sh -n build.sh OK; prettier clean on changed docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 09:03:22 +02:00
f7d5e39b4d feat(iso): ship git-backed AI source checkouts (Sam & Codex)
Seed live /home/clawdie/ai repos as shallow git checkouts with .git metadata and .clawdie-source.json provenance, remove stale hardcoded ISO version strings, and keep markdown formatting green.\n\nChecks: sh -n build.sh; sh -n scripts/stage-colibri-iso.sh; git diff --check; npx --yes prettier@3 --check BUILD.md README.md live/operator-session/bootstrap.html; ./scripts/check-format.sh; local file:// shallow clone smoke.
2026-06-15 08:04:31 +02:00
d9f6a4a518 Merge pull request 'feat(iso): stage colibri test agent and provider key help (Sam & Codex)' (#55) from feat/colibri-test-agent-provider-help-v2 into main
Reviewed-on: #55
2026-06-15 07:51:50 +02:00
c45360864a feat(iso): stage colibri test agent and provider key help (Sam & Codex)
Switch ISO staging/docs from colibri-smoke-agent to colibri-test-agent, include rust/pkgconf for live Colibri rebuilds, stage provider.env.sample, wire the provider env rc.conf path, and document LLM key setup on the Firefox bootstrap page.\n\nChecks: npx --yes prettier@3 --check docs/LIVE-COLIBRI-REBUILD.md live/operator-session/bootstrap.html BUILD.md TESTING.md README.md; sh -n scripts/stage-colibri-iso.sh; sh -n build.sh; fake Colibri staging + sh -n staged rc.d script; git diff --check.
2026-06-15 07:49:43 +02:00
3dd5eaae59 Merge pull request 'docs/live-colibri-rebuild-lane' (#52) from docs/live-colibri-rebuild-lane into main
Reviewed-on: #52
2026-06-15 07:42:59 +02:00
1f8e1f0614 docs: remove legacy rc wording from staging checks (Sam & Codex)
Keep staging validation focused on the current rc.d contract and avoid legacy variable references in the live rebuild lane branch.\n\nChecks: sh -n scripts/stage-colibri-iso.sh; fake Colibri staging + sh -n staged rc.d script; git diff --check.
2026-06-14 23:25:22 +02:00
e5aceb4756 docs: keep live rebuild lane action-focused (Sam & Codex)
Remove historical fix-it wording from the live rebuild runbook and make ISO staging validate the corrected Colibri rc.d contract directly instead of rewriting older variants.\n\nChecks: npx --yes prettier@3 --check docs/LIVE-COLIBRI-REBUILD.md; sh -n scripts/stage-colibri-iso.sh; fake Colibri staging + sh -n staged rc.d script; git diff --check.
2026-06-14 23:24:41 +02:00
1d5d0e89fb Merge pull request 'docs: add live Colibri rebuild runbook (Sam & Codex)' (#51) from docs/live-colibri-rebuild-lane into main
Reviewed-on: #51
2026-06-14 23:15:52 +02:00
54c92d5993 docs: add live Colibri rebuild runbook (Sam & Codex)
Document how a running live USB can clone, build, install, and validate Colibri without a full ISO rebuild, plus the future helper-script shape.\n\nChecks: npx --yes prettier@3 --check docs/LIVE-COLIBRI-REBUILD.md; git diff --check. Note: ./scripts/check-format.sh still reports existing PLAN-OPERATOR-USB-NEXT.md formatting drift outside this change.
2026-06-14 23:14:32 +02:00
45dd9274d9 Merge pull request 'fix(iso): accept corrected colibri rc source (Sam & Codex)' (#50) from fix/colibri-rc-source-compat into main
Reviewed-on: #50
2026-06-14 22:12:20 +02:00
db7d8fe3f9 fix(iso): accept corrected colibri rc source (Sam & Codex)
Keep ISO staging compatible with Colibri rc.d sources that already use colibri_daemon_binary and include pid/socket chmods. This lets the source rc.d file be copied directly for live USB repair while preserving compatibility with older Colibri sources.\n\nChecks: sh -n scripts/stage-colibri-iso.sh; fake staging against old and corrected Colibri rc sources; sh -n staged rc.d scripts; git diff --check.
2026-06-14 22:09:54 +02:00
9a5bfced83 Merge pull request 'fix(iso): avoid corrupting staged colibri rc script (Sam & Codex)' (#49) from fix/colibri-rc-sed-corruption into main
Reviewed-on: #49
2026-06-14 21:48:40 +02:00
04fe519814 fix(iso): avoid corrupting staged colibri rc script (Sam & Codex)
Replace fragile BSD sed append usage with awk when adding poststart chmods to the staged colibri_daemon rc.d script. The previous sed form appended the socket chmod after every line, corrupting the live USB service script.\n\nChecks: sh -n scripts/stage-colibri-iso.sh; fake COLIBRI_ARTIFACT_DIR staging; sh -n staged usr/local/etc/rc.d/colibri_daemon; git diff --check.
2026-06-14 21:45:08 +02:00
df82c272b4 Merge pull request 'build: document Go+Rust build-host toolchains + preflight check' (#48) from build/document-go-rust-toolchains into main 2026-06-14 12:27:28 +02:00
Sam & Claude
579a8ccd74 build: document Go+Rust build-host toolchains + toolchain-aware preflight
Go (builds the zot agent) and Rust (builds the Colibri release binaries) are
required on the build host to produce the binaries build.sh stages, but were
undocumented. Add them to REQUIREMENTS.md (build-host only, not the image), and
make the binary-missing preflights note when the matching toolchain (go/cargo)
isn't installed so that case surfaces up front instead of later.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 12:27:17 +02:00
3cd60aa170 Merge pull request 'switch published image + flashing to .xz' (#47) from build/publish-xz into main 2026-06-14 12:05:10 +02:00
Sam & Claude
f3f47c8cdd docs/skills: switch published image + flashing from .gz to .xz
Smaller downloads that Rufus/balenaEtcher/RPi-Imager still read directly (zstd
would break Windows flashers). Switches the image artifact, flashing commands
(xz -dc | dd, xz -t, unxz), publish flow (xz -T0 -c), the artifact-manifest
script, and all skills + docs to .img.xz. Adds a Windows (Rufus/Etcher) flashing
section + README pointer. Source tarballs (clawdie-ai *.tar.gz) unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 12:04:56 +02:00
bc2fcd437d Merge pull request 'build: image name clawdie-<codename>-<version>.img' (#46) from build/image-name-version into main 2026-06-14 10:59:04 +02:00
Sam & Claude
005bf2ad32 build: name image clawdie-<codename>-<version>.img
IMAGE_NAME is now clawdie-${codename}-${ISO_VERSION}.img (e.g.
clawdie-quindecim-0.2.29.img), the version tracking zot. Drops desktop/usb/date/
commit from the filename; per-build provenance (date, clawdie-iso commit, zot
commit) lives in build-manifest.json. Removes the now-unused date/commit name
vars. Updates docs + publish-skill globs (clawdie-*) to the new format.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:58:54 +02:00
5a90add6ff Merge pull request 'build: ISO version auto-tracks zot' (#45) from build/iso-version-tracks-zot into main 2026-06-14 10:51:10 +02:00
Sam & Claude
606ace1127 build: ISO version auto-tracks the zot release it is built on
Drop the hand-maintained ISO_VERSION=0.1.0. Default ISO_VERSION=auto resolves at
build time from the zot checkout (git describe --tags), falling back to the pinned
ZOT_VERSION, and strips the leading v (v0.2.29 -> 0.2.29). Records zot_version +
zot_commit in build-manifest.json; the banner shows which zot it tracks. Set
ISO_VERSION=x.y.z to override.

Also drops the stale 'independent from Clawdie-AI runtime version' comment — the
version's only anchor is zot now.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:50:58 +02:00
831fd3b856 Merge pull request 'feat(iso): stage external MCP profile examples (Sam & Codex)' (#44) from feat/stage-colibri-mcp into main 2026-06-13 21:36:00 +02:00
47b0db16e4 docs: add external MCP profile examples to ISO (Sam & Codex)
Adds sample external MCP registry and explicit external-call client profile alongside the default read-only Colibri MCP examples.\n\nChecks: ./scripts/check-format.sh; sh -n build.sh scripts/stage-colibri-iso.sh; python3 -m json.tool MCP examples; git diff --check
2026-06-13 19:54:17 +02:00
72cfcec91a Add Colibri MCP client examples to live image (Sam & Codex)
Installs read-only and trusted-write MCP client config examples under /usr/local/share/clawdie-iso/mcp-examples and links them from the bootstrap page.\n\nChecks: ./scripts/check-format.sh; sh -n build.sh scripts/stage-colibri-iso.sh; python3 -m json.tool MCP examples; git diff --check
2026-06-13 19:36:03 +02:00
368e663965 Stage colibri-mcp in operator USB by default (Sam & Codex)
Makes colibri-mcp a required Colibri artifact for the live operator USB, copies it into the image, documents the read-only default and explicit trusted COLIBRI_MCP_WRITE profile, and updates ISO build handoff docs.\n\nChecks: ./scripts/check-format.sh; sh -n build.sh scripts/stage-colibri-iso.sh; git diff --check
2026-06-13 19:29:31 +02:00
4f4a244915 Merge pull request 'Fold the agent harness under the colibri feature (drop FEATURE_ZOT)' (#43) from fold-zot-agent-under-colibri into main
Reviewed-on: #43
2026-06-13 18:43:15 +02:00
Sam & Claude
480c5bdcb5 Fold the agent harness under the colibri feature (drop FEATURE_ZOT)
The agent (a static Go binary) was a separately-named opt-in stage gated by
FEATURE_ZOT=NO, so baseline builds shipped colibri without its agent. It is
really a component of colibri, not its own product surface — so name and stage
it under the colibri umbrella.

- build.cfg: remove FEATURE_ZOT; add internal COLIBRI_STAGE_AGENT (default YES,
  undocumented escape hatch for daemon-only debug builds). Keep ZOT_REPO/
  ZOT_VERSION as internal staging inputs (they point at the real agent repo+tag).
- build.sh: preflight + install now gate on FEATURE_COLIBRI (and the hidden
  COLIBRI_STAGE_AGENT), banner folds the agent into the Colibri line, messages
  use colibri-agent naming.
- README: agent harness presented under the colibri control plane; pi retained
  as a spawnable agent backend rather than the default harness.

Behavior change for the builder: with FEATURE_COLIBRI=YES (default) the agent
now stages on baseline builds, so preflight FAILS if the agent binary is not
prebuilt in $ZOT_REPO/bin. Build it first (GOOS=freebsd go build -o bin/zot
./cmd/zot) or pass COLIBRI_STAGE_AGENT=NO for a daemon-only image.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 18:42:01 +02:00
b050273878 Merge pull request 'Drop unresolved Clawdie service staging from USB (Sam & Codex)' (#42) from docs/clarify-colibri-usb-clawdie-deploy into main
Reviewed-on: #42
2026-06-13 12:14:10 +02:00
0e6d8cbe53 Drop unresolved Clawdie service staging from USB (Sam & Codex)
Keeps service clawdie as a deployed-system contract only, removes the old mini-binary FEATURE_CLAWDIE staging lane from the ISO build, and adds explicit Linux-vs-FreeBSD proof boundaries for provider/runtime claims.\n\nChecks: ./scripts/check-format.sh; git diff --check; sh -n over scripts/ firstboot/ live/operator-session/ executables
2026-06-13 12:12:34 +02:00
7fb99a3f5d Merge pull request 'Clarify Colibri live and Clawdie deploy service split (Sam & Codex)' (#41) from docs/clarify-colibri-usb-clawdie-deploy into main
Reviewed-on: #41
2026-06-13 12:02:22 +02:00
6d0290d07e Clarify Colibri live and Clawdie deploy service split (Sam & Codex)
Removes stale Herdr references, reserves service clawdie for deployed disk/server targets, and keeps the live USB on colibri_daemon. Drops the baseline live rc.d/clawdie wrapper so the mounted-image contract matches the docs.\n\nChecks: ./scripts/check-format.sh; git diff --check; sh -n over scripts/ firstboot/ live/operator-session/ executables
2026-06-13 12:00:57 +02:00
bcb59f3f27 Merge pull request 'docs: clarify current SDDM and Qt deps (Sam & Codex)' (#40) from docs/current-sddm-guardrail-wording into main
Reviewed-on: #40
2026-06-13 11:41:37 +02:00
fb8c71be80 docs: clarify current SDDM and Qt deps (Sam & Codex)
Rewords live display-manager guardrails around SDDM without stale LightDM framing, clarifies qt6/kf6 rows as package dependencies rather than installer direction, and fixes the CHANGELOG trailing EOF blank flagged by diff-check.\n\nChecks: ./scripts/check-format.sh; git diff --check
2026-06-13 11:38:28 +02:00
19637d9be6 Merge pull request 'docs: purge historical cruft (Lumina/LightDM/QML/Qt6) + de-stale README' (#39) from docs/iso-readme-and-cleanup into main
Reviewed-on: #39
2026-06-13 11:30:45 +02:00
Sam & Claude
9e7034b094 docs: purge historical cruft (Lumina/LightDM/QML/Qt6) + de-stale README
Broad removal of obsolete decisions and dead subsystems across docs and code:

Deleted
- firstboot/gui/** — entire Qt6/QML installer subsystem (qml-installer,
  helloworld, Phase4 notes) — never the active live-session path
- live/installer-session/** — orphaned QML installer session
- .archive/completed-work/** — 14 historical planning/impl docs
- ROADMAP-v1.0.0.md, RELEASE-NOTES-v0.9.0.md — Lumina/LightDM/Qt6-era history
- .opencode/plans/phase0-gpu-fix-unified-iso.md — stale Lumina/LightDM plan
- dated/handoff docs: PHASE4-TEST-REPORT, COLIBRI-XFCE-HANDOFF,
  CLAWDIE-CODEX-HANDOFF, CANONICAL-BUILD-PATHS-HANDOFF

README de-stale
- present-tense intro (drop xfce-operator-usb branch framing)
- harness reality: pi (npm global) + Colibri daemon staged/rc.d-enabled;
  clawdie + zot as opt-in build flags
- GPU: NVIDIA auto-detect + universal driver lane (drop "conservative fallback")
- drop dead "historical installer/QML files in-tree" limitation

CHANGELOG
- drop dead "## Archive" + Qt6 "## For v1.0.0" sections
- correct stale sudo wording: live image uses mac_do/mdo, not sudo/doas
- drop RELEASE-NOTES-*.md pointer (file removed)

build.sh
- WARN no longer mentions removed QML build stage

.gitignore
- drop firstboot/gui qml-installer/helloworld ignore rules

Live decision guardrails retained (SDDM-over-LightDM notes); BUILD.md qt6
package deps retained (current runtime deps, not history).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 11:29:12 +02:00
8a19ac213b Merge pull request 'feat(iso): stage zot agent (pinned) + populate ZOT_HOME/auth.json (Sam & Claude)' (#38) from feat/stage-zot-agent into main
Reviewed-on: #38
2026-06-13 10:35:39 +02:00
Sam & Claude
7704fae717 feat(iso): stage zot agent (pinned) + populate ZOT_HOME/auth.json (Sam & Claude)
First concrete step of the zot consolidation (colibri ADR). Opt-in FEATURE_ZOT
(default NO; Pi stays default during migration).

- build.cfg: FEATURE_ZOT, ZOT_VERSION (pinned v0.2.29), ZOT_REPO,
  ZOT_ARTIFACT_DIR, ZOT_DEEPSEEK_KEY (optional bake).
- scripts/stage-zot-iso.sh: install the prebuilt zot binary -> /usr/local/bin/zot;
  populate the operator's $ZOT_HOME (~/.local/state/zot) with auth.json
  ({"deepseek":{"api_key":...}}, 0600) when a key is given, else an
  auth.json.sample template + README (telegram via `zot telegram-bot setup`).
- build.sh: status line, resolve_zot_paths, preflight_zot_artifacts (errors with
  the GOOS=freebsd go-build hint — zot has no FreeBSD release), install_zot_agent
  (+ chown operator state), wired into preflight + install sequences.

zot is built on the FreeBSD host from the pinned tag:
  (cd $ZOT_REPO && git checkout v0.2.29 && GOOS=freebsd GOARCH=amd64 \
     go build -trimpath -o bin/zot ./cmd/zot)

sh -n clean; staging smoke-tested (binary staged, auth.json 0600 valid).
Credentials use zot's own resolution (--api-key -> env -> auth.json), replacing
baked-into-binary keys. Default build unchanged (FEATURE_ZOT=NO).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 10:33:37 +02:00
3b7c5b2bea Merge pull request 'bhyve-qa-gate' (#37) from bhyve-qa-gate into main
Reviewed-on: #37
2026-06-05 12:51:57 +02:00
Sam & Claude
667ebdc210 fix(bhyve): EU display dates (DD.mmm.YYYY) per AGENTS date rule (Sam & Claude)
User-facing timestamps in run-bhyve-test.sh used the ambiguous numeric form
%Y-%m-%d. Switch to European display (date +%d.%b.%Y %H:%M:%S). Log filename
keeps sortable ISO 8601 basic (machine artifact, per the rule's internal-storage
exemption).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 12:05:32 +02:00
63e72d0550 Merge pull request 'Fix XFCE tray volume and clock sizing (Sam & Codex)' (#36) from fix/xfce-panel-volume-clock into main
Reviewed-on: #36
2026-06-05 11:51:43 +02:00
5a379556f0 Fix XFCE tray volume and clock sizing (Sam & Codex) 2026-06-05 11:47:45 +02:00
Sam & Claude
58443b0f8c feat(bhyve): QA gate in run-bhyve-test.sh — assert clean boot, fail on regressions (Sam & Claude)
bhyve-test.sh captures the guest serial console; this adds a QA gate over that
log so the harness can be used as a build gate (appliance runbook §3):

- CRITICAL (gate the exit): no kernel panic, no reboot loop, boot reached
  login/sddm, and no "permission denied" (regression guard for the colibri
  socket EACCES we just fixed).
- INFO (best-effort console markers): colibri socket ready, no store-open panic,
  clawdie-live-gpu ran.
- Prints the deeper in-guest checklist (socket mode, glasspane query, GPU
  branch) that lives in guest logs, not the console.

Exit is non-zero if the boot harness failed OR any critical assert failed.
Also pass-through args to bhyve-test.sh (ISO path / --name).

sh -n clean; gate logic unit-tested (clean boot → pass/exit0; panic+EACCES+no-login
→ fail). INFO/CRITICAL patterns should be confirmed against a real boot console
on first run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 11:45:58 +02:00
e2e1aeda15 Merge pull request 'feat(iso): auto-start the Colibri daemon at boot (Sam & Claude)' (#35) from enable-colibri-daemon-at-boot into main
Reviewed-on: #35
2026-06-05 10:56:59 +02:00
Sam & Claude
5157db0d8c feat(iso): auto-start the Colibri daemon at boot (Sam & Claude)
Re-landed on current main (the earlier branch never merged — main moved under
it). Flip COLIBRI_DAEMON_ENABLE default NO -> YES now that live boot is proven
on AMD hardware. rc.d is REQUIRE: LOGIN, so it starts after login and cannot
block SDDM/XFCE. Still env-overridable. Pair with colibri socket-perms fix so
operators connect without EACCES. CLAWDIE_ENABLE left NO.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 10:53:41 +02:00
d2c1985d20 Merge pull request 'Standardize ISO build checkouts under /home/clawdie/ai (Sam & Codex)' (#34) from fix/canonical-ai-root into main 2026-06-05 00:41:23 +02:00
7ba92ed116 Standardize ISO build checkouts under /home/clawdie/ai (Sam & Codex) 2026-06-05 00:39:37 +02:00
4dc665b7a5 Merge pull request 'Pin Pi CLI 0.78.0 + fix detached worktree AI source paths (Sam & Codex)' (#33) from fix/pi-0.78.0-pin into main 2026-06-05 00:15:20 +02:00
8f3adb9aea Fix live AI source snapshot paths for detached builds (Sam & Codex) 2026-06-05 00:13:25 +02:00
674b914d5a Pin Pi CLI to 0.78.0 for ISO builds (Sam & Codex) 2026-06-04 23:36:10 +02:00