layered-soul/skills/colibri-development/references/freebsd-daemon-smoke.md
Hermes & Sam 5c5df32101 Populate layered-soul: identity, memories, skills, plan (Hermes & Sam)
- SOUL.md: full agent identity, operating principles, voice
- IDENTITY.md: runtime identity, hosts, boundaries
- USER.md: operator context imported from hermes-soul
- AGENTS.md: actual operating rules, infrastructure, quick reference
- memories/curated/: 5 topics (tailscale, forgejo, agents, projects, vaultwarden)
- skills/: 9 cross-harness skills imported from hermes-soul after review
- docs/PLAN-CONFIGURE-PRIVATE-REPO.md: configuration plan
- Validate: passes clean
2026-06-14 00:21:26 +02:00

2 KiB

FreeBSD Daemon Smoke Test Pattern

When to use

Before running colibri-daemon as a real FreeBSD service, validate it in isolated /tmp paths. This is prototype validation — tear down after.

Quick smoke

# Build on FreeBSD
cargo build --release

# Isolated env
export COLIBRI_DAEMON_DATA_DIR=/tmp/colibri-osa-smoke-$USER
export COLIBRI_DAEMON_SOCKET=$COLIBRI_DAEMON_DATA_DIR/colibri.sock
export COLIBRI_DB_PATH=$COLIBRI_DAEMON_DATA_DIR/colibri.sqlite
export COLIBRI_HOST=osa-smoke

# Start daemon in background
target/release/colibri-daemon &
DAEMON_PID=$!

# Verify
target/release/colibri --socket "$COLIBRI_DAEMON_SOCKET" status
target/release/colibri --socket "$COLIBRI_DAEMON_SOCKET" snapshot
target/release/colibri --socket "$COLIBRI_DAEMON_SOCKET" spawn-local target/release/colibri-smoke-agent

# Check SQLite
sqlite3 "$COLIBRI_DB_PATH" "PRAGMA journal_mode;"

# Tear down
kill $DAEMON_PID
rm -rf "$COLIBRI_DAEMON_DATA_DIR"

Checks

  • Socket appears at the expected path
  • SQLite DB + -wal + -shm files created
  • journal_mode = wal
  • colibri status returns JSON with host/version/sessions/agents
  • colibri snapshot returns clawdie.glasspane.snapshot.v1 with pane list
  • spawn-local launches smoke agent, glasspane shows done state
  • create-task / list-tasks round-trips through SQLite
  • intake-task drains into SQLite via scheduler tick (30s)
  • Ctrl-C cleanly removes socket, no zombie processes
  • Restart against same /tmp paths recovers without error

rc.d service file

The prototype lives at packaging/freebsd/colibri_daemon.in. Do NOT install to /usr/local/etc/rc.d/ yet. The file uses daemon(8) to background the process, restart on crash, and log output. Review-only until validated on real FreeBSD hardware.

Session reports

Write results to docs/internal/sessions/YYYY-MM-DD-osa-freebsd-<topic>-smoke.md. Include: FreeBSD version, Rust version, commit hash, exact env vars, command outputs, and cleanup confirmation.