Commit graph

197 commits

Author SHA1 Message Date
2cdefc00a0 Merge pull request 'docs: FreeBSD validation handoff for the clawdie installer' (#52) from docs/clawdie-installer-handoff into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-14 00:35:09 +02:00
Sam & Claude
f7942c61d1 docs: FreeBSD validation handoff for the clawdie installer
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Codex validates the disk-touching + service-install paths (zfs/zpool create,
pw/rc.d service) that can't be exercised off-host. Includes read-only checks,
destructive provisioning steps for a scratch pool, teardown, and acceptance
criteria.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 00:35:01 +02:00
341a594ead Merge pull request 'feat(clawdie): ZFS-aware storage strategy + optional pool creation' (#51) from feat/clawdie-zfs-strategy into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-14 00:32:30 +02:00
Sam & Claude
325951be5c feat(clawdie): ZFS-aware storage strategy + optional pool creation
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
clawdie chooses storage per host:
- FreeBSD: ZFS required (datasets under the pool)
- Linux with ZFS + a pool: datasets under the pool
- Linux without ZFS: plain-dir fallback, reporting ZFS benefits + spare disks
- --create-pool /dev/DEV runs `zpool create` (needs --pool NAME)

Pool creation is destructive and guarded: refused unless the disk is detected
empty (no partitions/filesystem/mount, not the root disk) or --force is given,
and only with --yes. `discover` lists block devices with candidacy. New
disk-candidacy parser + storage resolver are unit-tested (13 tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 00:32:21 +02:00
4f03f24a34 Merge pull request 'docs: note clawdie installer as deployed-system prototype, not live USB (Sam & Claude)' (#50) from docs/clawdie-installer-iso-note into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 23:41:58 +02:00
Sam & Claude
b41846643b docs: note clawdie installer as deployed-system prototype, not live USB (Sam & Claude)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
The clawdie crate (PR #46) is a ZFS layout + service installer for
disk-installed systems. The live USB uses colibri-daemon directly.
2026-06-13 23:41:36 +02:00
70b6ddf846 Merge pull request 'fix(spawner): stage jailed env payloads (Sam & Codex)' (#49) from fix/jail-staged-env-main into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #49
2026-06-13 23:32:50 +02:00
56c405904d fix(spawner): stage jailed env payloads (Sam & Codex)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Replace inherited env delivery for jailed agent and external MCP spawns with staged launcher/env files under the jail-visible root. Add JailConfig.root_path for named jails that need staged payload delivery.

Tests: pass — cargo fmt --all; cargo test -p colibri-daemon jail_tests -- --nocapture; cargo test -p colibri-mcp -- --nocapture
2026-06-13 23:28:19 +02:00
d83455ff98 Merge pull request 'fix: refresh workspace lockfile and AGENTS formatting (Sam & Codex)' (#47) from fix/format-agents-main into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 23:27:08 +02:00
9bd605fc56 fix: refresh workspace lockfile and AGENTS formatting (Sam & Codex)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Adds the restored clawdie installer crate to Cargo.lock and formats AGENTS.md so the repository markdown gate passes after the latest main merges.\n\nChecks: ./scripts/check-format.sh; cargo fmt --check; git diff --check; cargo test -p clawdie --all-targets; cargo test -p colibri-mcp --all-targets; cargo metadata --locked --no-deps --format-version 1
2026-06-13 23:24:26 +02:00
03ff924aa2 Merge pull request 'feat(clawdie): host installer/deployer crate (FreeBSD + Linux)' (#46) from feat/clawdie-installer into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 22:56:39 +02:00
ebff77b326 docs: list clawdie in the workspace crate tables
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:56:31 +02:00
Sam & Claude
c902f75813 feat(clawdie): host installer/deployer crate (FreeBSD + Linux)
New crates/clawdie binary. Discovers a host's ZFS layout and provisions the
clawdie service, cross-platform via a Platform backend (FreeBSD rc.d + native
ZFS; Linux systemd + ZFS-on-Linux).

- discover: read-only OS + pool/dataset inspection
- plan: render the ZFS layout + service-install steps (dry-run)
- apply: executes the plan, and only with --yes (dry-run otherwise)

apply writes to disk only with --yes. Discovery + plan logic is unit-tested (7);
the disk-touching path must be validated on real hosts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:55:23 +02:00
900874c847 Merge pull request 'docs: sync AGENTS.md + stale doc references to current codebase (Sam & Claude)' (#45) from docs/sync-agents-and-stale-refs into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 22:29:01 +02:00
Sam & Claude
7eec5a2533 docs: sync AGENTS.md + stale doc references to current codebase (Sam & Claude)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
AGENTS.md:
- Crate table: add colibri-store, colibri-skills, colibri-mcp (was 8, now 11)
- Remove stale 'Next planned crate' section (skills + mcp both scaffolded)
- Add Jail Confinement + Skills/External MCP sections
- Fix doc/ -> docs/ paths
- Replace stale Herdr remote smoke ref with external MCP doc

ISO-INTEGRATION-PLAN.md:
- Jail status: MISSING -> READY (shipped PRs #35/#37/#39)
- Pi jail workers: 'design only' -> 'shipped'

CLAWDIE-STUDIO-PROPOSAL.md:
- colibri-harness -> colibri-glasspane-tui (correct crate name)
- colibri-mcp: remove 'NEW' marker (exists + has external host)
- colibri-skills: remove 'future' marker

T1.4-PROMPT-DISCIPLINE-PLAN.md:
- colibri-skills: 'parked on feature branch' -> 'scaffolded workspace member'

MULTIAGENT-WORKFLOW-IMPROVEMENTS.md:
- Fix doc/ -> docs/ paths
2026-06-13 22:28:30 +02:00
23aef71fc9 Merge pull request 'feat: import Layered Soul skills into Colibri' (#44) from feat/layered-soul-import into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 22:14:26 +02:00
Sam & Claude
252c282298 feat: import Layered Soul skills into Colibri (+ integration doc)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Wires clawdie/layered-soul (the portable identity/context source) into Colibri.
scripts/import-layered-soul.sh reads its reviewed skills/**/*.md into the existing
`skills` catalog (mirrors import-clawdie-skills.sh; idempotent, frontmatter
name/description, category from the skill's parent dir).

Honest scope: only skills are wired. The adapter's "Layered Memory Fabric"
(system_brain / system_ops + a richer system_skills) is design-only
(COLIBRI-SKILLS-PLAN.md), so curated memory is reported-but-not-imported and the
gap is documented in docs/INTEGRATION-LAYERED-SOUL.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:14:14 +02:00
6a72befbb4 Merge pull request 'docs: rewrite ADR + jail-spawn design to match shipped code' (#43) from docs/decisions-match-code into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 21:56:25 +02:00
Sam & Claude
8eff3c6eff docs: rewrite ADR + jail-spawn design to match shipped code
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Both were written as proposals; the decisions are now working code, so slim them
to plain "how it works" docs (code is the source of truth).

- ADR-agent-harness-consolidation: Proposed -> Accepted/implemented; drop the
  migration plan + gates (all shipped), fold in the pi-demotion correction, and
  drop the dangling CLAWDIE-AGENT-WIKI reference (deleted in #34). 116 -> ~55 lines.
- COLIBRI-JAILED-AGENT-SPAWN-DESIGN: proposal -> implemented; describe the shipped
  spawner (name-vs-path lifecycle, command= syntax, PrivMode mdo/helper, socket
  wiring, external-MCP reuse) instead of the original code sketch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:56:01 +02:00
6dbc9f6ada Merge pull request 'docs: remove stale Herdr hub runbook + T1.4 cache-warming design' (#42) from docs/remove-stale-docs into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 21:43:05 +02:00
Sam & Claude
c7f87cdb2d docs: remove stale Herdr hub runbook + T1.4 cache-warming design
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Per cleanup decision: HERDR-HUB-RUNBOOK.md is stale (Herdr is now an optional
Linux UI only, not a hub), and T1.4-CACHE-WARMING-DESIGN.md is superseded (cache
warming is implemented via config flags). Also drops the now-dangling link to the
latter from COLIBRI-TOKENOMICS-TRIFECTA.md.

Kept (still useful): ISO-INTEGRATION-PLAN.md, CLAWDIE-STUDIO-PROPOSAL.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:42:42 +02:00
7fd53ff337 Merge pull request 'docs: fix stale Herdr wire-type names in glasspane integration doc' (#41) from docs/glasspane-colibri-names into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 21:38:51 +02:00
Sam & Claude
06483b66eb docs: rename stale Herdr wire-type names to Colibri in glasspane doc
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Salvages the non-stale part of docs/colibri-socket-name-cleanup. The daemon's
wire types are ColibriCommand/ColibriResponse (renamed from Herdr* long ago), but
COLIBRI-DAEMON-GLASSPANE-INTEGRATION.md still documented the old Herdr* names.

(The branch's other edit touched docs/CLAWDIE-BUILD.md, which #34 deleted, so it
is dropped.)

Co-authored-by: Sam & Codex (docs/colibri-socket-name-cleanup)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:38:19 +02:00
2b9aaf36a5 Merge pull request 'docs: agent-harness consolidation ADR (pi-guidance corrected)' (#40) from docs/adr-consolidation-pi-corrected into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 21:35:56 +02:00
c8f6c7d024 Merge pull request 'fix(spawner): FreeBSD jail command=<binary> syntax (salvaged from Codex)' (#39) from fix/jail-command-syntax into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 21:35:53 +02:00
Sam & Claude
f9977c60dd docs: salvage agent-harness consolidation ADR + correct pi guidance
Some checks failed
CI / markdown (pull_request) Has been cancelled
CI / rust (pull_request) Has been cancelled
Adds the canonical ADR referenced by build.cfg and the consolidation work
(from docs/adr-agent-harness-consolidation, which merges clean). Prepends a
dated Update note: the ADR's "remove Pi" guidance is superseded — Pi is DEMOTED
to a spawnable backend (kept on-image, Node stays), zot is the primary harness,
per docs/COLIBRI-JAILED-AGENT-SPAWN-DESIGN.md. Original record preserved.

Co-authored-by: Sam & Claude (original ADR)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:33:41 +02:00
Sam & Claude
c38f6e5a73 fix(spawner): use FreeBSD jail command=<binary> parameter syntax
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Salvages Codex's FreeBSD-validated fix from
fix/jail-spawner-freebsd-command-format, taking ONLY the spawner.rs change onto
current main. (The original branch also re-ran a markdown formatter and would
have re-corrupted the jailed-spawn design doc + README, so those are dropped.)

My merged jail_wrap emitted the ephemeral jail command as two argv tokens
("command", binary), but jail(8) expects a single name=value parameter
(command=<binary>). Without this the `jail -c` ephemeral path fails on FreeBSD.
Fixes the ephemeral builder and the two jail_tests expectations.

Co-authored-by: Sam & Codex (fix/jail-spawner-freebsd-command-format)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:29:39 +02:00
3ce2840823 Merge pull request 'feat(mcp): confine external MCP servers in a jail (reuse spawner primitive)' (#38) from feat/jail-external-mcp into main
Some checks are pending
CI / markdown (push) Waiting to run
CI / rust (push) Waiting to run
Reviewed-on: #38
2026-06-13 20:35:26 +02:00
4490543284 Merge pull request 'finish/jail-socket-and-doc-fixup' (#37) from finish/jail-socket-and-doc-fixup into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #37
2026-06-13 20:34:35 +02:00
Sam & Claude
87c075d6ba feat(mcp): confine external MCP servers in a jail (reuse spawner primitive)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
External MCP servers are arbitrary third-party binaries — at least as untrusted
as the agents the spawner already jails — but the #36 prototype spawned them
directly on the host. Close that gap by reusing the existing confinement
primitive instead of growing a second one.

- ExternalMcpServer gains `jail: Option<JailConfig>` (#[serde(default)]).
- ExternalMcpSession::start routes Command::new through
  colibri_daemon::spawner::jail_wrap with the shared COLIBRI_JAIL_PRIV_MODE
  policy (mdo live / helper deploy). No jail => unchanged. stdio (incl. the
  piped JSON-RPC stdin/stdout) flows through jexec/jail/mdo unaffected.
- docs/COLIBRI-EXTERNAL-MCP-PROTOTYPE: document the `jail` field + confinement.
- 3 tests (no-jail passthrough, jexec wrap, registry jail deserialize).

colibri-mcp already depends on colibri-daemon, so no new dep. Build/test/clippy/
fmt green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 20:08:24 +02:00
Sam & Claude
7058f3e2b5 docs: fix markdown corruption from #36 formatter + crate count
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
A prettier-style pass in #36 mangled the jailed-spawn design doc — `mac_do`
became `mac*do` (eating the underscore and opening stray italics) and the
`_which_` / `_not_` emphasis turned into broken `\_which*` / `\_not*`. Restore
the text and wrap `mac_do` in backticks so a future formatter leaves it alone.

Also correct the README status line ("11 crates" → "10 crates") to match the
workspace table; clawdie was removed in #34 and #36 added no new crate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 20:02:36 +02:00
Sam & Claude
c2f631b53c feat(socket): accept jail on the spawn-agent command
Wires JailConfig through the control-plane socket so a jailed agent spawn is
reachable end-to-end:

- ColibriCommand::SpawnAgent gains `jail: Option<JailConfig>` (#[serde(default)],
  so existing/raw JSON clients are unaffected).
- socket dispatch + cmd_spawn_agent thread it onto AgentSpawnConfig.jail, where
  jail_wrap applies it.
- colibri-client::spawn_agent sets jail: None (signature unchanged); the typed
  CLI keeps its own separate Command enum. A client/CLI flag to actually request
  a jail is a follow-up — the socket now carries the field for internal callers
  (scheduler/supervisor) and any JSON client.

daemon+client build clean; daemon lib tests (58) green; clippy -D warnings clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 20:01:02 +02:00
e0a1298809 Merge pull request 'feat(mcp): prototype external MCP host tools (Sam & Codex)' (#36) from feat/external-mcp-client-prototype into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #36
2026-06-13 19:55:15 +02:00
5ce93206b2 feat(mcp): prototype external MCP host tools (Sam & Codex)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Adds stdio external MCP server registry support to colibri-mcp with read-only discovery by default and explicit COLIBRI_MCP_EXTERNAL_CALL gating for proxying external tools. Also smooths the merged jail-spawn formatting/FreeBSD command parameter edge so repository gates pass.\n\nChecks: cargo test -p colibri-mcp --all-targets; cargo fmt --check; ./scripts/check-format.sh; git diff --check; fake stdio MCP server smoke via colibri-mcp --external-config --external-call
2026-06-13 19:53:21 +02:00
abc9174caf Merge pull request 'feat(spawner): JailConfig + jail_wrap for jailed agent spawn' (#35) from feat/spawner-jail-confinement into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #35
2026-06-13 19:40:35 +02:00
Sam & Claude
66cbc76a5b feat(spawner): JailConfig + jail_wrap for jailed agent spawn
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Implements the spawner half of docs/COLIBRI-JAILED-AGENT-SPAWN-DESIGN.md so
Colibri can confine a spawned agent (e.g. pi) in a FreeBSD jail. zot untouched.

- PrivMode {Mdo, Helper, None}: how the (unprivileged) daemon gets the root that
  jail attach/create needs. Resolved from COLIBRI_JAIL_PRIV_MODE (default mdo —
  the live-USB posture); deployed hosts set helper. Only consulted when a spawn
  requests a jail.
- JailConfig {name, path, ip4, user}: `name` enters a persistent jail (jexec,
  precedence); `path` makes an ephemeral `jail -c command=` that self-cleans on
  exit. Neither set = no-op. (Refines the design's `ephemeral` flag into the
  clearer name-vs-path choice.)
- jail_wrap(): pure (binary,args)->(program,argv) wrapper. No-op without a jail.
  jexec runs without -l so injected COLIBRI_*/provider env is inherited; stdio
  flows through mdo/jexec/jail so glasspane ingestion is unchanged.
- AgentSpawnConfig gains `jail: Option<JailConfig>` (#[serde(default)]); spawn()
  resolves PrivMode/helper once and routes the command through jail_wrap.
- kill(): documented jail teardown semantics + the in-jail process-group reaping
  follow-up.
- 7 jail_wrap unit tests. Full daemon lib suite (58) green; clippy -D warnings clean.

Not wired through the SpawnAgent socket command yet (it builds AgentSpawnConfig
with jail=None) — that protocol field is the next small step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 19:31:09 +02:00
f87d37b0ca Merge pull request 'cleanup: drop the experimental clawdie mini-binary' (#34) from cleanup/drop-clawdie-mini-binary into main
Some checks are pending
CI / markdown (push) Waiting to run
CI / rust (push) Waiting to run
Reviewed-on: #34
2026-06-13 19:22:02 +02:00
Sam & Claude
1f2377d4dd cleanup: drop the experimental clawdie mini-binary
Some checks failed
CI / markdown (pull_request) Has been cancelled
CI / rust (pull_request) Has been cancelled
The `clawdie` crate (Telegram+DeepSeek mini-agent over the control-plane core)
was an experimental operator-lane candidate. Per the agent-harness
consolidation, the live USB runs colibri_daemon + the zot agent, and the
deployed `service clawdie` is a reserved name, not this binary — so the
mini-binary is dead weight. Remove it and its now-orphaned docs.

- delete crates/clawdie (leaf crate; nothing depended on it)
- delete packaging/freebsd/clawdie.in (its rc.d candidate)
- delete docs/CLAWDIE-AGENT-WIKI.md + docs/CLAWDIE-BUILD.md (only described it)
- drop it from workspace members + Cargo.lock; tidy the strip-profile comment
- README: 11 → 10 crates, remove the clawdie row
- COLIBRI-TOKENOMICS-TRIFECTA: drop the stale clawdie-lane scope note

No "relay" existed in this repo (already gone). zot is untouched. The Clawdie
brand, the clawdie operator user, and the reserved deployed `service clawdie`
name are unaffected — this only removes the experimental Rust mini-binary.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 19:19:07 +02:00
c3e68e98f2 Merge pull request 'docs: design note for colibri-spawned pi in a FreeBSD jail' (#33) from design/colibri-jailed-agent-spawn into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #33
2026-06-13 19:08:38 +02:00
Sam & Claude
b1e23f4022 docs: design note for colibri-spawned pi in a FreeBSD jail
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Colibri already spawns pi (spawner.rs) and captures its JSONL for glasspane;
this documents adding optional jail confinement to that existing path rather
than touching zot (whose swarm is self-only + no isolation — keeps the mirror
clean).

Covers: JailConfig + jail_wrap at the Command::new site, jail-aware teardown,
and the privilege decision for the root-only jexec step —

  - live USB    → `mdo -u root` (reuses mac_do; daemon == operator trust domain)
  - deployed    → setuid/Capsicum helper (narrow root surface on exposed hosts)

mac_do rules are identity-based (gid=0>uid=0), not command-filtered, so mdo
grants the daemon full root; that's acceptable on the single-operator live USB
but not on a deployed/exposed box, hence the split. Selected via PrivMode at
daemon config time so one spawner serves both.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 19:06:21 +02:00
b4e764da10 Merge pull request 'feat(mcp): add colibri-mcp crate — MCP bridge for editor integration (Sam & Claude)' (#32) from feat/colibri-mcp into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
2026-06-13 13:03:19 +02:00
Sam & Claude
21800a8775 feat(mcp): add colibri-mcp crate — MCP bridge for editor integration (Sam & Claude)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
- 7 Phase 1 tools: status, snapshot, list_tasks, list_skills,
  create_task, intake_task, set_cost_mode
- Write tools gated behind COLIBRI_MCP_WRITE=1 (default read-only)
- stdio JSON-RPC server for MCP protocol compliance
- 10 integration tests with mock Unix socket server
- Uses ColibriCommand/ColibriResponse (post-rename from PR #30)
- Design doc: docs/CLAWDIE-STUDIO-PROPOSAL.md
2026-06-13 12:53:43 +02:00
773f7294c1 Merge pull request 'docs: clarify Herdr as optional Linux display (Sam & Codex)' (#31) from docs/herdr-platform-boundary-cleanup into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #31
2026-06-13 12:30:32 +02:00
6e78ea630d docs: clarify Herdr as optional Linux display (Sam & Codex)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
Cleans stale Herdr socket/API naming after the Colibri socket rename, preserves Herdr as an optional Linux/macOS display client, marks the clawdie mini-binary service as experimental rather than ISO/deployed-service contract, and removes old internal session logs.\n\nChecks: ./scripts/check-format.sh; cargo fmt --check; git diff --check; sh -n packaging/freebsd/colibri_daemon.in packaging/freebsd/clawdie.in
2026-06-13 12:29:11 +02:00
c0dfcd6c3c Merge pull request 'refactor: rename the daemon socket API Herdr* -> Colibri* (Sam & Claude)' (#30) from refactor/rename-herdr-socket-to-colibri into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #30
2026-06-13 11:09:27 +02:00
Sam & Claude
b11bff2b00 refactor: rename the daemon socket API Herdr* -> Colibri* (Sam & Claude)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
The colibri-daemon's own control-plane socket was named after Herdr (the AGPL
Linux supervision tool whose protocol shape it borrowed), which made logs/types
("Herdr socket API listening", HerdrCommand/HerdrResponse) look like a Herdr
dependency. There is none — no herdr crate, process, or network call. zot is the
agent; this is Colibri's control-plane socket.

Renamed Colibri's OWN API only:
- HerdrCommand -> ColibriCommand, HerdrResponse -> ColibriResponse (daemon defs +
  socket.rs + colibri-client usages).
- log/doc/Cargo strings: "Herdr socket API"/"operator dashboard"/"Herdr Unix
  socket" -> "Colibri control-plane socket" (daemon, clawdie).

Wire-compatible: the JSON `cmd` values come from #[serde(rename=...)] and are
unchanged. Kept legitimate references to Herdr *the tool* (glasspane lineage
"reimplements Herdr's glasspane capability", "Herdr's 5-state model"; client
"display clients (Herdr on Linux…)"; tui "herdr-like").

build + test + clippy -D warnings + fmt --check clean; runtime confirms the
daemon now logs "Colibri control-plane socket listening".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 11:07:58 +02:00
604f1c8088 Merge pull request 'feat(glasspane): runtime-aware ingestion so zot panes parse precisely (Sam & Claude)' (#29) from feat/glasspane-zot-runtime-ingest into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #29
2026-06-13 10:53:43 +02:00
Sam & Claude
6c6420ff2a feat(glasspane): runtime-aware ingestion so zot panes parse precisely (Sam & Claude)
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
The daemon already spawns agents and streams stdout JSONL into the glasspane
(cmd_spawn_agent: take_stdout + attach_pane + stream_agent_stdout_to_glasspane),
but the streaming ingestor was Pi-only — zot panes were only *incidentally*
correct (shared lifecycle names) and dropped zot's tool/streaming events to the
default arm.

- PiJsonlIngestor: add a `runtime` field; ingest_line_at normalizes via
  zot_event_type for Zot panes (tool_use_* -> tool_execution_*, response
  success:false -> error, response/usage -> skipped), raw type for Pi/Local.
- SupervisedPane::new_with_runtime + PaneSupervisor::attach_pane_with_runtime
  (existing new/attach_pane_at delegate with Pi — no behavior change).
- socket.rs cmd_spawn_agent: derive runtime from the binary basename
  (`zot` -> Zot, else Pi) and attach the pane with it. The stdout streamer is
  unchanged — it now ingests with the pane's runtime.

Tests: 34 pass incl. a new runtime-aware test feeding RAW zot lines (tool_use_*,
turn_end) through PaneSupervisor.ingest_line_at -> Working mid tool-loop, Done at
turn_end. clippy -D warnings clean.

Completes the daemon spawn -> glasspane wiring for zot (ADR migration step).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 10:48:21 +02:00
a5f49dfb61 Merge pull request 'add-ci-checks' (#28) from add-ci-checks into main
Some checks are pending
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
Reviewed-on: #28
2026-06-13 09:57:59 +02:00
56097e5ce5 Merge pull request 'chore(docs): delete legacy migration/cutover artifacts; repoint handoff refs (Sam & Claude)' (#26) from chore/purge-legacy-docs into main
Reviewed-on: #26
2026-06-05 12:53:25 +02:00