Commit graph

372 commits

Author SHA1 Message Date
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
731e64a492 Merge pull request 'fix(build): honor GPU_DRIVER from the environment (Sam & Claude)' (#32) from fix-gpu-driver-env into main
Reviewed-on: #32
2026-06-04 23:20:41 +02:00
Sam & Claude
3491f532a2 fix(build): honor GPU_DRIVER from the environment (Sam & Claude)
build.cfg hard-set GPU_DRIVER="" , and build.sh sources build.cfg after the
environment is already set, so `env GPU_DRIVER=nvidia-590 ./build.sh` was
silently clobbered to "" (no NVIDIA branch baked). There is no --gpu-driver
flag in build.sh, so the environment is the only way to set it.

Use GPU_DRIVER="${GPU_DRIVER:-}" so an env value is honored; default stays "".
Verified: env nvidia-590 -> nvidia-590; no env -> "". Replaces the
detached-worktree workaround applied during the live build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 23:03:31 +02:00
972474e65a Merge pull request 'feat(gpu): universal NVIDIA lane — detect + install branch at boot (C&C)' (#31) from nvidia-universal-lane into main 2026-06-04 22:22:22 +02:00
Sam & Claude
a9323aeddc feat(gpu): universal NVIDIA lane — detect + install branch at boot (Sam & Claude)
Opt-in NVIDIA_UNIVERSAL lane (default NO; normal/single-branch builds unchanged):
one ISO that adapts to an unknown NVIDIA target.

- build.cfg: NVIDIA_UNIVERSAL flag.
- build.sh: install_nvidia_universal_repo() stages an on-image pkg repo with all
  three branches (390/470/580 + settings), pkg-repo metadata, and a file:// repo
  conf; universal mode bakes no branch and sets clawdie_live_gpu_mode=nvidia-auto.
- clawdie_live_gpu: nvidia-auto mode detects the device id (PR #30 fix) -> branch
  {390,470,590} -> pkg-name -> `pkg install -r clawdie-nvidia` -> kldload, all
  best-effort with fallback to integrated/scfb (never blocks boot).
- doc/NVIDIA-UNIVERSAL-HANDOFF.md: Codex FreeBSD build + hardware validation plan.

sh -n clean; detector+branch+pkg map unit-tested on Linux
(1c8c->590->nvidia-driver-580, 0fc8->470, 0e22->390). The pkg fetch/repo layout,
offline boot install, writable root, kernel ABI, and image size MUST be validated
on the FreeBSD build host + real NVIDIA hardware (see handoff).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 22:19:36 +02:00
49794906eb Merge pull request 'fix(gpu): NVIDIA auto-detection with corrected PCI device-id read + runtime mode support (C&C)' (#30) from nvidia-auto-detect into main 2026-06-04 22:09:58 +02:00
Sam & Claude
d2ec1b7a72 fix(gpu): make NVIDIA auto-detection actually read the right PCI id (Sam & Claude)
The #29 detector grepped `chip=0x10de...`, but FreeBSD's chip field is
chip=0x<device><vendor> with vendor 0x10de in the LOW 16 bits — so it never
matched and the device id / recommended-branch logic was dead.

- nvidia_device_id: match `chip=0x<4hex>10de` and strip to the device id
  (chip=0x1c8c10de -> 1c8c).
- nvidia_branch_for_device: non-overlapping architecture ranges returning the
  build's lane labels {390,470,590} so detected vs staged compare correctly;
  empty/unknown -> 590 (safe default for modern unknown hardware).

Validated on Linux against representative ids: Fermi 0e22->390, Kepler 0fc8->470,
Maxwell 1380 / Pascal 1b81 / Turing 1c8c / Ada 2684 ->590, empty->590. sh -n clean.

This is the detection brain for the universal NVIDIA auto-install lane; the
on-image NVIDIA repo + boot-time install is the FreeBSD build-side work (handoff).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 22:07:02 +02:00
c8fb5826c9 Merge pull request 'Prefer staged NVIDIA branch on dedicated live builds (Sam & Codex)' (#29) from fix/nvidia-runtime-mode into main
Reviewed-on: #29
2026-06-04 21:37:06 +02:00
2d0181bbd3 Prefer staged NVIDIA branch on dedicated live builds (Sam & Codex) 2026-06-04 21:30:38 +02:00
e1c9e415eb Merge pull request 'Restore live operator polish + formatting gate fixes (Codex)' (#28) from fix/restore-live-operator-polish into main 2026-06-04 21:05:09 +02:00
96b52baca5 docs: format deployment and Poudriere plans (Sam & Codex) 2026-06-04 20:59:47 +02:00
4426776b67 Show hostname in Pi footer on operator images (Sam & Codex) 2026-06-04 20:59:47 +02:00
3ce3ddfc8d Seed Pi tmux defaults and search tools (Sam & Codex) 2026-06-04 20:59:47 +02:00
9d968f29d1 Merge pull request 'Prepare NVIDIA-target live build path (Sam & Codex)' (#27) from fix/nvidia-live-target into main
Reviewed-on: #27
2026-06-04 20:04:23 +02:00
e3b2a5fdcd Merge pull request 'Fix colibri CLI for clawdie user' (#26) from fix/colibri-cli-clawdie-access into main 2026-06-04 20:04:23 +02:00
c46775aed7 Merge pull request 'pi/ml350p-bhyve-verification-plan' (#25) from pi/ml350p-bhyve-verification-plan into main 2026-06-04 20:04:23 +02:00
88dddb1860 Merge pull request 'Poudriere + bhyve plan: memory split, test VMs' (#24) from fix/poudriere-bhyve into main 2026-06-04 20:04:23 +02:00
0668cad94d Merge pull request 'Add Poudriere build server plan' (#23) from docs/poudriere-plan into main 2026-06-04 20:04:23 +02:00
f9b1eca005 Merge pull request 'Add deployment target doc + ipmitool' (#22) from fix/deploy-target-ipmitool into main 2026-06-04 20:04:23 +02:00
997949d736 Merge pull request 'Add clawdie rc.d service — coherent control plane entrypoint' (#21) from fix/clawdie-rc-service into main 2026-06-04 20:04:23 +02:00
24b86ea106 Merge pull request 'Import clawdie-ai skills into colibri catalog at build time' (#20) from fix/import-clawdie-skills into main 2026-06-04 20:04:23 +02:00
5603f2b206 Merge pull request 'Swap bootstrap: colibri-tui primary dashboard, Firefox for docs' (#19) from fix/bootstrap-colibri-tui into main 2026-06-04 20:04:23 +02:00
167d33e2a6 Merge pull request 'Seed colibri skills catalog at ISO build time' (#18) from fix/seed-colibri-skills into main 2026-06-04 20:04:23 +02:00
ee79110250 Merge pull request 'Enable DeepSeek cache warming + HTTP/2 compression' (#17) from fix/deepseek-cache-warming-http2 into main 2026-06-04 20:04:23 +02:00
3bc802bc66 Merge pull request 'Fix colibri daemon rc.d — 4 bugs resolved (v0.9.1)' (#16) from fix/colibri-rc-d-bugs into main 2026-06-04 20:04:23 +02:00
28c480ba26 Merge pull request 'XFCE panel icon-size fix + python symlinks + handoff docs' (#15) from final-xfce-merge into main 2026-06-04 20:04:23 +02:00
ef99f0cce5 Merge pull request 'docs/colibri-xfce-handoff' (#14) from docs/colibri-xfce-handoff into main
Reviewed-on: #14
2026-06-04 20:04:23 +02:00
79f34b296c Merge pull request 'docs: format builder handoff docs (Sam & Codex)' (#13) from fix/format-main-docs into main
Reviewed-on: #13
2026-06-04 20:04:23 +02:00
7c6a253c1e Merge pull request 'docs/colibri-xfce-handoff' (#12) from docs/colibri-xfce-handoff into main
Reviewed-on: #12
2026-06-04 20:04:23 +02:00
5b1b915e14 Merge pull request 'merge/all-three-fixes' (#11) from merge/all-three-fixes into main
Reviewed-on: #11
2026-06-04 20:04:23 +02:00
aa6b271343 Merge pull request 'XFCE default display layout from now on' (#10) from clawdie-patch-1 into main
Reviewed-on: #10
2026-06-04 20:04:23 +02:00
332ffd30d0 Merge pull request 'Fix XFCE SVG icon sniffing (Sam & Codex)' (#9) from fix/xfce-svg-pixbuf-icons into main
Reviewed-on: #9
2026-06-04 20:04:23 +02:00
5faeae821c Merge pull request 'fix(clawdie): pin clawdie_db_path in staged rc.conf for visibility' (#8) from fix/clawdie-db-path-rcconf into main 2026-06-04 20:04:23 +02:00
c4bee9754a Merge pull request 'docs: remove stale PR-blocking precondition from Codex handoff' (#7) from fix/handoff-stale-precondition into main 2026-06-04 20:04:23 +02:00
41dd4d11cd Merge pull request 'fix: clawdie pre-build hardening + Codex handoff' (#6) from fix/clawdie-prebuild-hardening into main 2026-06-04 20:04:23 +02:00