colibri/docs/internal/sessions/2026-05-27-colibri-live-daemon-client-smoke.md

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: fbcb7e6Add 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:

  1. Creates isolated DaemonConfig
  2. Starts real socket::serve(...)
  3. Creates real DaemonClient
  4. Calls status
  5. Calls glasspane_snapshot before spawn and verifies no panes
  6. Writes a fake local Pi JSONL agent script
  7. Calls spawn-agent with provider:"local"
  8. Verifies Glasspane state transitions via the daemon socket:
    • Idle
    • Working
    • Blocked
    • Done
  9. Verifies captured pi_session_id and cwd
  10. Calls kill-agent
  11. 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 model field is treated as executable path
  • no --mode json args 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-client for manual operator smoke.
  • Promote GlasspaneSnapshot to colibri-contracts once a second external consumer needs standalone deserialization.
  • Add HTTP/SSE transport later; Unix socket is sufficient for current Phase 4.