Verification log
What has been checked, how, and what has not. Machine checks run on every bash scripts/gate.sh 6. Live checks were run by a person on a real tailnet with real Claude Code sessions. Host names and ids are left out.
Machine checks (2026-10-28)
| Command | Last line |
|---|---|
bash scripts/gate.sh 0 to gate.sh 6 | GATE 0 PASS to GATE 6 PASS |
bash scripts/smoke.sh | SMOKE PASS |
bash scripts/e2e.sh | E2E PASS |
The gate covers: clean install with a frozen lockfile, typecheck, build, the Vitest suite (tests are tagged per design item and counted; skipped, focused or todo tests fail the gate), static checks (no bind-guard bypass, no SQLite in the shim, no permission relay), the smoke and end-to-end scripts, launchd plist lint, unit rendering, README and handoff checks, and the client setup script in dry-run mode.
systemd-analyze --user verify was skipped: not available on macOS.
Live checks (2026-10-28)
Numbers follow the repo's handoff checklist. Items 10 and 13 are open; see Not verified.
| # | Check | Result |
|---|---|---|
| 1 | Port registry entry for 47910 and 8443 | Done. A check that nothing else listens on them is still owed. |
| 2 | Bus host chosen | A laptop for now; an always-on host later. |
| 3 | Tailnet HTTPS certificates | Enabled; tailscale cert issued a certificate. .Self.CertDomains still read null on macOS. |
| 4 | ACL grant | Grant on tcp:8443 between tagged machines, plus two policy tests; read back. |
| 5 | Bus host checkout | Clean clone, install, build; gate.sh 6 printed GATE 6 PASS. |
| 6 | Install and expose | launchd unit running; tailscale serve on 8443. Over HTTPS: /healthz 200, unauthenticated POST /mcp 401, authenticated tools/list 200, bad token 401. (The tool list then had 6 tools; unregister was added later.) |
| 7 | Principal and tokens | Principal created; a 90-day token stored in 1Password via the stdin pipe; read back by item id. |
| 8 | Client entry on the bus host | bus Connected; a fresh claude -p listed the bus tools; grep -c sbus_ ~/.claude.json is 0; the token's last_used_at was set. Without the service-account override the helper failed to connect, as expected. |
| 9 | Second machine | Unauthenticated POST over HTTPS returned 401. Its own bus entry and token Connected. Round trip: the bus host sent message 1 to a session on the second machine, which read it, acked it and replied with message 2, read back on the bus host. |
| 11 | Push entry | bus-push Connected; leak check 0; a plain unnamed claude created no shim files; a named launch with the channels flag registered and the model answered with its session name. Stdio servers inherit claude's environment, so the --mcp-config fallback is not needed. Found: the channels flag is ignored while both telemetry variables are set. |
| 12 | Push to an idle session | On the bus host: with the session idle, a message from another session appeared as ← bus-push: ... within one poll interval; the model replied over the bus and acked with session=<meta.to>; doctor showed unacked: 0. |
Docs checks (2026-10-29)
Run while writing this site:
session-bus --helpoutput and the exit codes for usage errors (2), a refused bind (2), an unknown session indoctor(1),--ttl-days 91(1), andbackuponto an existing file (1).- Default token lifetime: 90 days.
setup-client.sh --dry-runandinstall-unit.sh --dry-run --systemdoutput.- The getting started path: a local
serve, a token inSESSION_BUS_TOKEN, aheadersHelperentry with no token in it, andclaude -p --mcp-configcallingregister,sendandinboxsuccessfully.
Not verified
- Client checkout on the second machine for push. Pull works there (check 9); push from or to the second machine has not been run.
- Push across machines. Push to an idle session was seen on the bus host only.
- HTTP channels experiment. Whether an HTTP MCP server can register as a channel is untested. ADR 0001 still records
deferred-human. - systemd. The unit renders and passes static checks, but has not been run on Linux.
- Direct tailnet bind in a live deployment. The bind guard is unit-tested with a stubbed
tailscale; the live deployment usedtailscale serve. - User-scope
${VAR}expansion in Claude Code entries. The defaultheadersHelperpath does not depend on it. --mcp-configwith the channels flag. Whetherserver:<name>resolves a server defined only there.- Plugin route.
/sb:session-busvia the plugin marketplace has only been tried lightly. The npm package is private and nothing is published. The skills release workflow has not run on GitHub. - Long-running behaviour. No soak test, no load test, no benchmark.