7f0f06d36a
refactor: rename golden tests → fixtures (consistent positive framing) ( #267 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 10:22:17 +02:00
5b3511ae86
refactor: rename zot_rpc_smoke → zot_rpc_driver ( #266 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 10:01:23 +02:00
743e349a13
fix(test): zot_rpc_smoke — remove #[ignore], fall back to PATH ( #265 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 09:45:14 +02:00
274652a9fb
feat: T2.x eval harness + RPC task dispatch ( #264 )
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Co-authored-by: Sam & Claude <hello@clawdie.si>
Co-committed-by: Sam & Claude <hello@clawdie.si>
2026-06-28 08:43:28 +02:00
4fc02a6b28
refactor: rename clawdie-hw-probe → clawdie-system-probe ( #263 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 08:34:22 +02:00
3b826e1ab2
feat(schema): add blender_available detection to derive_capabilities() trigger ( #262 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 08:31:47 +02:00
8de42704ae
feat(daemon): add blender detection to probe_capabilities() fallback ( #261 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 08:17:55 +02:00
0a1c6b3604
feat(daemon): direct ollama/llama.cpp probing fallback in probe_capabilities() ( #260 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 08:13:00 +02:00
47d43e8d46
Merge pull request 'fix: cargo fmt drift on probe_capabilities call' ( #259 ) from fix/socket-fmt-drift into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #259
2026-06-28 07:38:14 +02:00
Sam & Claude
a47282d908
fix: cargo fmt on probe_capabilities call
...
PR #258 introduced a long line that cargo fmt wants reformatted.
No functional change — just formatting.
Sam & Claude
2026-06-28 07:13:54 +02:00
8071bd0d0d
Merge pull request 'feat(daemon): dynamic agent capabilities via clawdie-hw-probe --capabilities' ( #258 ) from feat/dynamic-agent-capabilities into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #258
2026-06-28 01:41:14 +02:00
3b25668c9e
feat(daemon): dynamic agent capabilities via clawdie-hw-probe --capabilities
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Replaces hardcoded ["shell","freebsd","code"] with a call to
clawdie-hw-probe --capabilities during autospawn agent registration.
probe_capabilities():
- Runs clawdie-hw-probe --capabilities (cross-platform, < 100ms)
- Parses the JSON array from stdout: ["shell","freebsd","code"]
- Falls back to ["shell","code"] if probe unavailable
Platform examples:
FreeBSD: ["shell","freebsd","code"]
Linux: ["shell","linux","code","vulkan"]
This is Phase 1b of the dynamic capabilities plan. The hw-probe change
(Phase 1a) is in clawdie-iso feat/hw-probe-capabilities.
Phase 2 (T2.x) adds ollama/llama.cpp/cuda detection to the same probe
pipeline — no new env vars, no protocol changes.
2026-06-28 01:38:52 +02:00
1681eeca60
Merge pull request 'fix(astro): EN index reads from src/content, not ../../docs/wiki' ( #257 ) from fix/astro-index-path into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #257
2026-06-28 01:34:01 +02:00
2f0f9a2d24
fix(daemon): extract hardcoded values in autospawn registration ( #254 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 01:30:33 +02:00
56af070b6e
Merge pull request 'fix(daemon): register autospawned agent in store for task routing' ( #253 ) from fix/autospawn-agent-registration into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #253
2026-06-28 01:07:02 +02:00
8df6613410
fix(astro): EN index reads from src/content, not ../../docs/wiki
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Bug: EN index.astro used path.resolve('../../docs/wiki') which only
works in the dev environment. Production builds from staged copy at
astro/wiki/src/content/ — the other 3 pages already used this.
Added 'sl' to EXCLUDE so Slovenian pages don't leak into EN index.
Verified: 28 EN pages, zero SL leaks. model-selection-and-eval.md
and hive-routing.md render correctly at live wiki.clawdie.si.
2026-06-28 00:59:13 +02:00
4f3f9f1a4a
fix(daemon): register autospawned agent in store for task routing
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
After autospawn spawns zot, the agent was never registered in the
local SQLite store. The scheduler only routes tasks to registered
agents — so every task stayed stuck in 'queued' forever.
This commit adds a store.register_agent() call right after the spawn
succeeds, before the bootstrap RPC prompt. The agent is registered
with [shell, freebsd, code] capabilities and the current hostname.
Uses try_lock() to avoid blocking the daemon on store contention.
2026-06-28 00:58:31 +02:00
5d8016eaf0
Merge pull request 'style: fix pre-existing Prettier drift in 3 docs (structured-reports, cost-dashboard, mother-hive)' ( #251 ) from fix/prettier-drift-3-files into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #251
2026-06-28 00:25:13 +02:00
9ac7d39d30
Merge pull request 'fix/skills-pf-validate-cleanup' ( #250 ) from fix/skills-pf-validate-cleanup into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #250
2026-06-28 00:23:52 +02:00
Sam & Claude
40f091135d
fix(skills): remove duplicate PF validate line in freebsd-admin SKILL
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
The PR added a 'validate PF before reload' bullet in the Controlplane
service ports subsection, but the original file already had one at the
end using the FreeBSD-native 'service pf reload'. Keep only the one
at the bottom — avoids confusing operators with two different reload
commands.
Sam & Claude
2026-06-28 00:20:33 +02:00
43c43a4848
feat(skills): fail2ban-tailscale + freebsd-admin PF rate limiting
...
fail2ban-tailscale (new skill):
Root cause: key negotiation triggers password-fallback, fail2ban bans IP
Path A: PasswordAuthentication no — one line, zero maintenance
Path B: Specific fleet IP whitelist — if passwords must stay on
Path C: Both — production hardening
Security: do NOT whitelist 100.64.0.0/10 (trusts every tailnet)
FreeBSD PF equivalent: max-src-conn-rate + overload table
Platform table: Linux fail2ban / FreeBSD PF / Mother PF
freebsd-admin (PF SSH rate limiting):
max-src-conn-rate 5/60 + overload <ssh_brutes> table
Manual operations: show, delete specific IP, flush
Cross-reference to fail2ban-tailscale skill
Rule placement guidance (block drop all last, pass out first)
Wiki-lint: 187 refs, 0 failures. Prettier 3.8.4: clean.
2026-06-28 00:15:44 +02:00
2406441b4d
fix: remove legacy references — Rust source + agent skills (5 files) ( #249 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 00:10:50 +02:00
fd1fc6352d
docs: remove legacy references — positive framing pass (11 files) ( #248 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 00:07:17 +02:00
7d7bc5ca33
style: fix pre-existing Prettier drift in 3 docs (structured-reports, cost-dashboard, mother-hive) ( #247 )
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
2026-06-28 00:05:12 +02:00
39f74b1c8c
Merge pull request 'docs(hive-routing): fleet SSH reliability — password off, agent keys, PF limits' ( #246 ) from fix/ssh-agent-keys-persistence into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #246
2026-06-27 23:51:01 +02:00
123kupola
fece199390
style: fix pre-existing Prettier drift in 3 docs (structured-reports, cost-dashboard, mother-hive)
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
2026-06-27 23:47:50 +02:00
780b06de56
docs(hive-routing): fleet SSH reliability — password off, agent keys, PF limits
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Covers the three root causes discovered during osa→debby SSH setup:
1. PasswordAuthentication no — removes fail2ban's reason to exist
2. AddKeysToAgent yes — prevents ksshaskpass popups on reconnect
3. FreeBSD PF rate limiting — defense in depth for osa
Sam & Hermes
2026-06-27 23:22:23 +02:00
20408bf7f3
Merge pull request 'fix(dashboard): restore dual-proof lightbox — screenshot + text badges' ( #245 ) from fix/dual-proof-lightbox-restore into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #245
2026-06-27 22:36:37 +02:00
ff9c8511f9
fix(dashboard): restore dual-proof lightbox — screenshot + text badges
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Restores structure removed by PR #242 :
<img id=lb-img> for screenshot proofs (future — daemon doesn't populate yet)
<pre id=lb-text> for proof_text (glasspane state JSON)
Typed badges: ▸ screenshot when screenshot_uuid populated, ▸ text otherwise
Co-authored-by: Hermes <hermes@clawdie.si>
2026-06-27 22:34:40 +02:00
80543c5f46
Merge pull request 'docs/model-selection-and-eval' ( #244 ) from docs/model-selection-and-eval into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #244
2026-06-27 22:24:25 +02:00
Sam & Claude
b096168aee
docs(wiki): model selection + evaluation harness design
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
New wiki page: model-selection-and-eval.md (445 lines)
Completes the T2.x trifecta design:
- Evaluation harness: 3 modes (self-report, local LLM, cloud LLM)
- Model selection: weighted scoring (success rate, cost, capability, latency)
- Integration with hive-routing: data flow + implementation phases
- 4 implementation phases, ~10 days total, ~570 lines
Indexed in both en/index.md and sl/index.md.
Follows PR #241 (conflict marker fix) and the now-merged screenshot
pipeline. The eval harness provides the feedback loop that makes
model-selection decisions data-driven rather than heuristic.
Sam & Claude
2026-06-27 22:18:18 +02:00
Sam & Claude
08cdae1c47
fix(tests): cargo fmt on cost_pipeline.rs — PR #243 followup
...
Cargo fmt drift in the new cost pipeline integration tests:
- Multi-line .args() calls (8+ args per line)
- Multi-line assert!() with format strings
- Braced if-let-else blocks
Sam & Claude
2026-06-27 22:18:18 +02:00
6e40944389
Merge pull request 'test: cost pipeline — SSH roundtrip + MCP cost dispatch + typo fix' ( #243 ) from test/cost-pipeline-tests into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #243
2026-06-27 22:12:08 +02:00
ed252ab159
Merge pull request 'fix/dashboard-dead-screenshot-code' ( #242 ) from fix/dashboard-dead-screenshot-code into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #242
2026-06-27 22:10:45 +02:00
0323a9817e
fix(dashboard): remove dead screenshot_uuid badge/code — daemon never populates it
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
The screenshot.rs module was never committed to main (PR #239 commit message
was aspirational). The daemon pushes only proof_text (glasspane JSON).
Removed:
- hasScreenshot / ▸ screenshot badge branch
- <img> lightbox path (only proof_text <pre> remains)
- Orphaned else-if block from dual-badge logic
Kept:
- screenshot_uuid column in schema (future-proof, harmless)
- Comment explaining why only proof_text is checked
- JSON panel includes screenshot_uuid (raw field, matches schema)
2026-06-27 22:08:31 +02:00
d4aa7f9b9f
test: cost pipeline — SSH roundtrip + MCP cost dispatch + typo fix
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
SSH integration tests (gated on COLIBRI_MOTHER_HOST):
- ssh_mother_report_task_cost_roundtrip: stdin payload → INSERT 0 1
- ssh_mother_tools_lists_daemon_tools: verify tools discovery
- ssh_mother_rejects_unknown_commands: validate allowlist
MCP dispatch tests (mocked daemon):
- tool_list_task_costs_returns_cost_data: cost fields in output
- tool_get_task_returns_cost_fields: task lookup with cost
Bug fix:
- colibrie_deploy_ → colibri_deploy_ (two MCP tool names)
Sam & Hermes
2026-06-27 22:06:56 +02:00
bcc24002f8
fix(mother): replace pg_read_file with psql variable interpolation
...
pg_read_file('/dev/stdin') requires superuser — colibri role had only INSERT.
Use psql -v json_input="$(cat)" + :'json_input' for parameterized JSON ingestion.
Works with non-superuser PostgreSQL roles.
2026-06-27 21:43:12 +02:00
a5c9da3ef6
Merge pull request 'fix: resolve merge conflict markers in mcp-ssh + schema (PR #240 merge artifact)' ( #241 ) from hotfix/merge-conflict-markers into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #241
2026-06-27 21:32:02 +02:00
3becc6c190
fix: resolve merge conflict markers in mcp-ssh + schema (PR #240 merge artifact)
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Two files had unresolved <<<<<<< HEAD / >>>>>>> markers committed to main:
- colibri-mcp-ssh: resolved to JSON proof_text example + screenshot_uuid
- mother_schema.sql: resolved to both columns (proof_text + screenshot_uuid)
2026-06-27 21:30:08 +02:00
1034842145
Merge pull request 'fix/polish-proof-text-refs' ( #240 ) from fix/polish-proof-text-refs into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #240
2026-06-27 21:26:00 +02:00
d36407766e
docs: replace stale tmux-screenshot refs in cost-dashboard.md
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
2026-06-27 21:22:47 +02:00
b9b7626efe
chore: polish proof_text — stale comments, duplicate column, schema docs, fmt
...
- schema: removed duplicate proof_text column, fixed stale tmux-screenshot comment
- mcp-ssh: example now shows real proof_text JSON instead of UUID placeholder
- daemon: trimmed stale COLIBRI_TASK_SCREENSHOT_UUID comment
- wiki/cost-dashboard: updated architecture diagram + JSON example
- fmt: trailing whitespace in colibri-mcp lib.rs
2026-06-27 21:20:21 +02:00
5702c33c30
Merge pull request 'feat: screenshot proof pipeline — module + proof_text + visual PNG' ( #239 ) from merge/screenshot-proof-pipeline into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #239
2026-06-27 21:10:39 +02:00
339c87ce51
feat: screenshot proof pipeline — module + proof_text + visual PNG
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Combines:
- screenshot.rs module (is_enabled, generate_uuid, capture) with
CaptureError enum (4 variants: Disabled, SpawnFailed, ExitFailed, NoPng)
- proof_text: glasspane text evidence at task exit
- screenshot_uuid: visual terminal proof (PNG capture UUID)
- Daemon: fire-and-forget capture in heartbeat, both fields in payload
- Schema: proof_text + screenshot_uuid columns (no duplicates)
- SSH wrapper: INSERTs both fields via NULLIF
- Dashboard: dual lightbox — <img> for screenshots, <pre> for text
▸ badge shows type: 'screenshot' or 'text'
- Deploy: FreeBSD /etc/crontab (not Linux cron.d)
- JSON export: includes both proof_text and screenshot_uuid
Sam & Hermes
2026-06-27 21:08:42 +02:00
59bd530a81
Merge pull request 'feat/proof-text-inline' ( #237 ) from feat/proof-text-inline into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #237
2026-06-27 19:22:08 +02:00
79b4011c9e
feat: replace screenshot_uuid PNG proof with inline proof_text
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Option C — text proofs instead of screenshots.
- daemon: capture proof_text from glasspane at task exit
(agent name, state, session, tokens, cost_usd → JSON string)
- mother_schema: screenshot_uuid → proof_text TEXT column
- colibri-mcp-ssh: INSERT proof_text instead of screenshot_uuid
- export-costs.sh: include proof_text in JSON export
- dashboard: lightbox shows <pre> text proof instead of <img>
openProof() looks up task from DATA by task_id
Zero disk overhead — proof_text is inline text (~200 bytes),
not a PNG file (~200KB).
2026-06-27 19:09:07 +02:00
cb124a014f
feat(deploy): add colibri-deploy crate + MCP tools
...
New crate: colibri-deploy
- run(target, command) → shell on host or Bastille jail
- list_targets() → host + active Bastille jails (graceful sudo fallback)
New MCP tools (2):
- colibri_deploy_run: run a command on host or jail
- colibri_deploy_targets: list available targets
Tests: host echo, host fail, list_targets includes host.
Tool count: 18 → 20
2026-06-27 18:57:55 +02:00
9e8e25d535
Merge pull request 'chore: delete dashboard handoff — Steps 1-3 done, Step 4 filed as task' ( #236 ) from chore/delete-dashboard-handoff into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #236
2026-06-27 18:19:44 +02:00
25f4611772
chore: delete dashboard handoff — Steps 1-3 done, Step 4 filed as task
...
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
Steps 1-2 (schema + daemon plumbing): merged.
Step 3 (dashboard HTML): built differently than spec, deployed.
Step 4 (OSA setup): filed as create-task on the board — tracked,
not rotting in a stale doc.
2026-06-27 18:17:38 +02:00
0d4d0f7fb1
Merge pull request 'chore/merge-all-uncommitted' ( #235 ) from chore/merge-all-uncommitted into main
...
CI / rust (push) Waiting to run
CI / markdown (push) Waiting to run
CI / port (push) Waiting to run
CI / agent-jail-pkgs (push) Waiting to run
Reviewed-on: #235
2026-06-27 18:11:48 +02:00