2.5 KiB
Colibri Phase 4 Live Daemon/Client Smoke Report
Date: 27.maj.2026
Host: osa.smilepowered.org — FreeBSD 15.0-RELEASE-p8 amd64
Repo: Clawdie/Colibri
Commit tested: fbcb7e6 — Add live daemon client smoke with local fake agent
Status: PASS
Purpose
Prove that Phase 4 is not only unit-level: a real colibri-daemon Unix socket
server can run in parallel with existing services, and colibri-client can talk
to it over the socket without sudo or production paths.
Isolation
The smoke uses a temp data directory and socket under the current user's temp area. It does not touch production services, global sockets, or privileged paths.
No sudo is required.
What the smoke covers
The new integration test:
crates/colibri-client/tests/live_socket_smoke.rs
performs this full path:
- Creates isolated
DaemonConfig - Starts real
socket::serve(...) - Creates real
DaemonClient - Calls
status - Calls
glasspane_snapshotbefore spawn and verifies no panes - Writes a fake local Pi JSONL agent script
- Calls
spawn-agentwithprovider:"local" - Verifies Glasspane state transitions via the daemon socket:
IdleWorkingBlockedDone
- Verifies captured
pi_session_idandcwd - Calls
kill-agent - Sends daemon shutdown and removes temp data
Local provider behavior added
Provider::Local was added for no-network smoke/local tools:
- no API key required
- no fallback to remote providers
- socket
modelfield is treated as executable path - no
--mode jsonargs are injected
This keeps live daemon/client testing deterministic and independent of Pi, DeepSeek, OpenRouter, Anthropic, or existing agent services.
Validation commands
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo build --workspace --release
Result
All gates passed on FreeBSD 15.
50 tests passed, 0 failed
release build OK
Current conclusion
Colibri Phase 4 now has a working typed client plus real socket smoke coverage. The daemon/client/glasspane path is proven end-to-end with a local fake Pi JSONL agent, while remaining safe to run in parallel with existing services.
Next candidates
- Add a small CLI wrapper around
colibri-clientfor manual operator smoke. - Promote
GlasspaneSnapshottocolibri-contractsonce a second external consumer needs standalone deserialization. - Add HTTP/SSE transport later; Unix socket is sufficient for current Phase 4.