1. contracts.md: add TaskCostSummary to active schemas table
2. MCP: rename colibri_get_task_cost → colibri_get_task
(returns full task with cost, not just cost fields)
3. heartbeat: try_lock() instead of lock().unwrap()
- WouldBlock → warn + defer to next tick
- Poisoned → into_inner() recover (SQLite WAL protects data)
Sam & Hermes
Full protocol surface audit across Colibri's 5 current protocols
(~5,324 lines). Key finding: A2A is an interoperability play, not a
complexity reduction play.
Replaced:
- Mother MCP-over-SSH bridge → A2A HTTP endpoint (−160 lines, +380 lines)
- External MCP discovery → Agent Card (future, zero adopters today)
- Ad-hoc cost format → typed A2A part (negligible code impact)
Not replaced: Unix socket (local IPC), spawner (process lifecycle),
glasspane (PTY observer), store (SQLite), MCP editor bridge (human↔tool).
Net delta: ~0 lines (moves code, doesn't shrink it). Protocol count: 5→6.
Recommendation: A2A is Phase 3 — not Phase 2, not 0.12. The current
MCP-over-SSH bridge (437 lines) works for 4 nodes. A2A pays off at 10+
nodes or when third-party tools ship A2A support. The Agent Card design
in HIVE-PANE.md stays as a north star.
Cross-linked from hive-pane.md + wiki index. 182 refs, clean lint.
Merges: HIVE-PANE.md (glasspane for hive), end-to-end cost capture test,
runtime-agnostic usage accumulation, test agent --emit-usage flag,
heartbeat() pub for tests.
Both wiki entries (hive-routing + hive-pane) preserved in index.
ProviderSmokeResult → ProviderTestResult
PROVIDER_SMOKE_SCHEMA → PROVIDER_TEST_SCHEMA
clawdie.provider-smoke.result.v1 → clawdie.provider-test.result.v1
(manifests, golden tests, wiki, zot_rpc comments)
Rationale: smoke is jargon; test is clear and consistent with
the project's naming conventions (avoid dead/fake/smoke labels).
GLASSPANE-TUI-DESIGN.md was a self-declared "scratch space" working doc
— but everything in it had shipped (the attention bar, n/N jump keys,
the `a` filter, the All-sessions fix). Its enduring decisions lived
only in this stale plan, while the wiki carried just a keybindings
table and a TODO roadmap stub.
Fold the durable design decisions into wiki/tui.md (the natural home —
it already had the keybindings section):
- complete the keybindings table (was missing n/N + a)
- "The attention model" section: needs_attention() definition, the
4h stall threshold rationale, attention-bar layout spec, row-highlight
color spec, and the session-filter-AND composition contract
Repoint the one code reference (the all_sessions regression comment in
main.rs) from GLASSPANE-TUI-DESIGN.md to the wiki section it now lives
in. Delete the 208-line scratch doc — zero remaining references.
wiki-lint --strict: 147 pass. TUI crate: fmt/clippy/20 tests green.
(Sam & Claude)
PR #146 made colibri's .agent/skills/ the canonical skills home (54
skills now live there; ISO imports from colibri). But the "clawdie-ai
is the source of truth" claim survived across FOUR layers, unchanged —
the canonical, linted, translated knowledge base described an
architecture that no longer exists.
Fixed across all layers:
- crates/colibri-skills: crate doc, field comments, Cargo.toml
description — all now name colibri/.agent/skills/ as the home.
- docs/wiki/skills-catalog.md (en): rewrote the "Source of truth"
decision + 6 scattered refs; repointed the 3 `docs/COLIBRI-SKILLS.md`
links to the crate code / store-schema.
- docs/wiki/sl/skills-catalog.md (sl): same correction; also fixed a
broken `import-clawdie-skills.sh` link (that script was deleted in
the clawdie-iso PR #146 followup).
- docs/wiki/index.md + sl/index.md: skills-catalog one-liners.
Deleted docs/COLIBRI-SKILLS.md (232 lines) — a stale roadmap that
duplicated the wiki, still called clawdie-ai the source of truth x3,
and referenced retired clawdie-ai paths. Repointed the layered-soul.md
(en+sl) references to skills-catalog.md / store-schema.md, and fixed
two stale `COLIBRI-SKILLS-PLAN.md` refs in import-layered-soul.sh.
wiki-lint --strict: 141 pass. colibri-skills: fmt/clippy/12 tests green.
(Sam & Claude)
Two fixes in one commit:
1. Terminology: ozadnji proces → proces v ozadju
- More natural Slovenian — noun inflects, prepositional phrase stays fixed
- 60 replacements across 19 sl/ files
- Glossary header updated to match
- Reverts the bad merge that restored "demon" in glasspane.md and
task-board.md (including enouporabniški→enonajemniški fix)
- Forms: proces v ozadju / procesa v ozadju / procesu v ozadju /
procesom v ozadju / procesov v ozadju
2. New wiki page: daemon-not-demon (EN + SL)
- Explains the FreeBSD daemon (Beastie mascot, helper spirit) vs
Slovenian demon (devil, bad spirit)
- Documents the decision to use proces v ozadju in Slovenian
- Confirms daemon (with a) is the only English spelling in Colibri
- Linked from both EN and SL wiki indexes
Standardize Slovenian wiki terminology after 9ca7ac6 and dc752d6:
- krajevni → lokalni (glasspane, headroom-sidecar, task-board)
- oprema → vprega (glasspane, naming-decisions — harness context)
- vrata za poslušanje → vhodna vrata (glasspane)
- Vrata za branje/pisanje → Preverjanje za branje/pisanje (external-mcp)
- demon → proces (task-board — single-tenant context)
- enonajemniški → enouporabniški (task-board)
Skips (correct idiomatic Slovenian):
- vhodna vrata (agent-harness — front door, not quality gate)
- vmesna programska oprema (cost-model — middleware)
- demon (standalone — standard term for daemon process)
Sam & Hermes
Replace legacy just install / just setup-* references with
clawdie binary commands (clawdie plan, clawdie apply --yes).
Document scope: what the installer does not do (yet).
Trim the clawdie-ai just orchestrator step tables.
Rebased from #213 onto current main; supersedes #217.
Glossary alignment — demon (devil) replaced with the established ozadnji
proces (background process) per okrajsave.md glossary. Full sweep across
all sl/ wiki and guide files (61 replacements in 18 files).
demon→ozadnji proces (nominative, 15 instances)
demona→ozadnjega procesa (genitive, 42 instances)
demonom→ozadnjim procesom (instrumental, 1 instance)
demonov→ozadnjih procesov, demonovem/demonovim rephrased (3 instances)
krajevni→lokalni (7 instances across 4 files)
oprema→vprega (agent harness context, 3 instances)
vrata→preverjanje (quality gate context, 1 instance)
The agent harness page describes THREE agents: pi (fallback), zot (default),
and Colibri (supervisor). Title updated in both EN and SL.
Also: H1 extraction fallback for pages without YAML frontmatter —
content.match(/^#\s+(.+)$/m)?.[1] so pages with only markdown H1 still
get a proper <title> tag instead of the slug.
Match the lean SL style: one terse sentence, no legacy narration.
"clawdie provisions the host service. Jail, DB, CMS, and Git
provisioning are not yet in the installer."
- New page: docs/guide/sl/reference/okrajsave.md (15 abbreviations
explained in plain Slovenian — LLM, JSON, JSONL, ACL, PF, NAT,
ZFS, API, HTTPS, TCP, SHA, BCP, ISO, UI, VPS)
- Linked from reference index
- First occurrence of each abbreviation in every Slovenian page
now links to the glossary
- Fix broken ./install/ link (English + Slovenian)
- requirements title: 'Zahteve' → 'Osnovne zahteve'
- prettier-clean
- colibri.md: complete rewrite — was TypeScript "event fabric" with pi-centric
ingestion modules, proof gates, Herdr evaluation. Now describes the actual
v0.12 Rust control plane: crate map, agent model (zot/pi), mother MCP flow,
links to wiki decision pages.
- "broken" → "inconsistent" (docs-publishing), "compromised" (install),
"not suitable" (sdk-deep-dive)
- Zero remainders: no kill, smoke, fake, hacky, TODOs, stale pi patterns
Document the cross-host control-plane bridge (socat TCP on tailscale0 →
colibri-daemon Unix socket): FreeBSD rc.d vs Linux systemd parity, the
interface-scoped firewall gate (pf / ufw), the "tailnet boundary is the auth"
security model (no socket auth; scope :9190 via Tailscale ACL), and config
notes (TAILSCALE_IP_REQUIRED placeholder, socket-path parity, 0770 group).
Points at packaging/{freebsd,linux}/ for install. Linked from the architecture
index next to Control Plane. No real tailnet IPs (placeholders only).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The terminal-capture / signature-triage layer (colibri-glasspane terminal.rs
+ signatures.rs, driven by the daemon poll loop) had no guide coverage. Document
it: content-hash dedup history, edge-triggered signature alerts, per-OS
signature sets, the COLIBRI_TERMINAL_* / TELEGRAM_* config, and the
terminal-watch/unwatch/list/history/poll socket commands. Linked from the
operate index.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
agent-harness.md listed only zot's end-to-end proof (zot_rpc_smoke.rs,
ignored, ZOT_BIN-gated). pi now has better default CI coverage via
pi_spawn_live.rs (unignored, runs every test run), plus the new
default_agent_args unit tests proving the autospawn argv contract.
Also moves the autospawn argv reference into its own bullet for clarity.
Two new decisions captured, one page corrected:
terminal.md — the terminal-capability decision. Why colibri-tui and the agents
it supervises need modified-key reporting (Tab vs Shift-Tab, n vs N, Enter),
why the choice fell on Kitty, the tmux extended-keys + csi-u passthrough for
the in-tmux workflow, raw-vs-tmux distinction, the SSH xterm-kitty terminfo
gotcha, and pi's identical requirement. The decision is about capability;
Kitty is the instance.
operator-attention.md — the shipped attention system as one decision. Attention
as a derived view over the state machine (not a sixth variant), the TUI
bar/jump/filter/row-highlight, and the #193 terminal-capture + signature-triage
+ edge-triggered alerts. Records the has_attention session-filter bug and fix.
Lists what is still open (outbound push, answer-from-dashboard).
glasspane.md — corrected drift. The real AgentState enum is {Idle, Working,
Blocked, Done, Error}; Stalled is a derived flag, not a variant (the page's
diagram omitted Blocked and listed Stalled as a variant). The "Usability
roadmap (TODO)" listed the attention half as not-yet-built; it shipped via
#191/#193, so those items move to operator-attention.md and the roadmap keeps
only the genuinely-unbuilt direction.
index.md — two table rows (also satisfies the orphan-page check).
Verified: prettier-clean on all 4 files; wiki-lint --strict clean (144 pass /
0 fail, up from 137); no dangling refs, no orphans, no resurrected names.
(Sam & Claude)