Deleted 8 stale docs (~1,700 lines) and merged their essential intent into AGENTS.md and README.md: Merged into AGENTS.md: - Architecture Roles section (zot=agent, Colibri=control plane, pi=backend) - ISO Takeover Gates table (Gates 1-5 with status) Merged into README.md: - glasspane row names zot/pi (not just Pi) - architecture diagram names zot/pi JSONL - removed Herdr dependency reference Deleted (content merged or obsolete): - docs/HERDR-VS-COLIBRI-GRAPH.md (migration artifact) - docs/ADR-agent-harness-consolidation.md (merged into AGENTS.md) - docs/COLIBRI-GLASSPANE-DESIGN.md (merged into README, rest in code) - docs/COLIBRI-DAEMON-GLASSPANE-INTEGRATION.md (code is source of truth) - docs/MULTIAGENT-WORKFLOW-IMPROVEMENTS.md (already in AGENTS.md) - docs/T1.4-PROMPT-DISCIPLINE-PLAN.md (gaps tracked in priority handoff #3) - docs/ISO-INTEGRATION-PLAN.md (gates merged into AGENTS.md) - .hermes/plans/2026-05-27-colibri-cutover.md (old plan, superseded) Also cleaned Herdr references from Rust doc comments in colibri-glasspane/src/lib.rs and colibri-client/src/lib.rs. Result: 18 docs → 11 docs, 66 Herdr references → 0. Gates: fmt/clippy/test all green.
3.3 KiB
3.3 KiB
ISO Acceptance Runbook — Colibri Service
Use this after Colibri has been staged into an ISO/image root and booted on FreeBSD.
0. Pre-flight
freebsd-version
id colibri
ls -l /usr/local/bin/colibri /usr/local/bin/colibri-daemon
ls -l /usr/local/etc/rc.d/colibri_daemon
sysrc colibri_daemon_enable
Expected:
colibriuser exists.- binaries are executable.
- rc.d script is executable.
- service is enabled for ISO acceptance, or can be started manually.
1. Start service
service colibri_daemon start
sleep 2
service colibri_daemon status
Expected:
- service reports running.
/var/run/colibri/colibri.sockexists./var/db/colibri/exists and is owned by the service user./var/log/colibri/daemon.logexists or is created on first output.
Triage:
tail -100 /var/log/colibri/daemon.log
ls -la /var/run/colibri /var/db/colibri
sockstat -u | grep colibri || true
2. Operator status
colibri status
Expected fields:
daemon/version/host
paths.data_dir
paths.db_path
paths.socket_path
cost.mode
cost.session_max_bytes
cost.max_uncompacted_turns
sessions
agents / agent_list
panes
tasks
scheduler.interval_secs
Confirm cost.mode matches colibri_cost_mode from rc.conf.
3. Task board smoke
colibri create-task --title "iso smoke" --description "direct CLI task"
colibri list-tasks --status queued
Expected: list contains iso smoke with status queued.
4. Scheduler/intake smoke
colibri intake-task \
--title "iso intake smoke" \
--description "scheduler should persist this" \
--capability freebsd
# scheduler tick is currently 30s
sleep 35
colibri list-tasks --status queued
Expected: list contains iso intake smoke.
5. Glasspane smoke
colibri snapshot
Expected: valid JSON snapshot. It may have no panes before an agent is spawned.
Optional local fake-agent smoke if colibri-smoke-agent is included:
colibri spawn-local /usr/local/bin/colibri-smoke-agent --session-id iso-smoke
sleep 4
colibri snapshot
Expected: a pane transitions through idle/working/blocked/done.
6. Stop service
service colibri_daemon stop
sleep 2
service colibri_daemon status || true
ls -l /var/run/colibri/colibri.sock || true
ls -l /var/db/colibri/colibri.sqlite*
Expected:
- daemon exits.
- socket is removed or no longer connectable.
- SQLite DB remains.
7. Restart persistence
service colibri_daemon start
sleep 2
colibri list-tasks --status queued
Expected: tasks created before stop are still present.
8. Live desktop acceptance
Run when the test machine is available:
boot ISO from USB
log into XFCE
launch Zed
run colibri status from terminal
launch colibri-tui if included
Expected:
- XFCE starts.
- Zed launches with GPU behavior acceptable for our requirements.
- Colibri service is running without the TypeScript control service.
- CLI/TUI remain responsive.
Pass criteria
The ISO candidate passes Colibri service acceptance when:
- rc.d starts/stops the daemon cleanly.
colibri statusexposes paths, cost, scheduler, tasks, panes.- direct tasks persist to SQLite.
- intake tasks drain on scheduler tick.
- glasspane snapshot is reachable.
- restart preserves SQLite state.
- no TypeScript control service is required for core supervision.