Files
the-custodian/workplans/CUST-WP-0001-custodian-agent-runtime.md
tegwick 2fdbcb5d7a feat(CUST-WP-0001): implement Custodian Agent Runtime bootstrap
T2 complete: OODA loop skeleton with LLM integration, bounded actions,
and 32 offline unit tests.

Deliverables:
- runtime/agent.py     — CLI entry point (--domain/--all/--dry-run/--llm)
- runtime/context.py   — Observe: fetch_state + build_context
- runtime/actions.py   — Act: parse_plan + execute (3 sanctioned writes)
- runtime/README.md    — usage guide and architecture overview
- runtime/tests/       — 32 tests, fully offline
- runtime/pyproject.toml — standalone package with llm-connect dep
- canon/architecture/adr-002-custodian-agent-runtime-design.md

Key design decisions (ADR-002):
- Lives in runtime/ (not a new repo) — tight canon/state-hub coupling
- ClaudeCodeAdapter by default (local-first, no API key)
- Single-pass synchronous OODA for v0.1 simplicity
- Exactly 3 sanctioned write ops: add_progress_event, update_task_status, flag_for_human
- LLM returns JSON block in markdown for structured+auditable output

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 22:36:24 +01:00

71 lines
2.2 KiB
Markdown

---
id: CUST-WP-0001
type: workplan
title: "Custodian Agent Runtime — Bootstrap"
domain: custodian
status: done
owner: custodian
topic_slug: custodian
state_hub_workstream_id: a2d9919d-62ec-49e7-9533-ba650757e70a
created: "2026-02-25"
updated: "2026-03-12"
---
# Custodian Agent Runtime — Bootstrap
## Summary
Design and bootstrap the Custodian as an acting agent: a standalone
LLM-powered service that uses the State Hub as its coordination layer.
Distinct from the State Hub tooling itself.
## Context
The State Hub provides the read model and MCP interface. The Agent Runtime
is a separate concern: the loop, policy engine, and tool adapters that
make the Custodian an autonomous (or semi-autonomous) participant rather
than a passive data store.
## Dependencies
Both dependencies resolved and removed from the dependency graph (2026-03-11):
- ~~`markitect/llm-shared-library` (llm-connect)~~ — resolved 2026-02-27:
llm-connect extracted as standalone installable package and integrated.
- ~~`railiance/phase-0-operational-baseline`~~ — resolved 2026-03-11:
Railiance01 operational with k3s + HA failover tested + backup verified
(RAIL-BS-WP-0002, RAIL-BS-WP-0003, RAIL-BS-WP-0004 all completed).
**This workstream is unblocked. T2 is ready to execute.**
## Tasks
### T1 — Bootstrap blocked: awaiting markitect/llm-shared-library
```task
id: CUST-WP-0001-T01
state_hub_task_id: ac42e548-10bf-4851-94e2-c8d35876f2f9
status: done
priority: high
```
All implementation tasks for the agent runtime were blocked until
llm-connect was extracted as a standalone installable package from
markitect. Resolved 2026-02-27: llm-connect integrated in state-hub as
editable dependency; markitect llm-check smoke test green.
### T2 — Define agent architecture and capability scope
```task
id: CUST-WP-0001-T02
state_hub_task_id: 9a9297cd-bd3c-409c-8384-6f06cfc6faa2
status: done
priority: medium
```
Decide the Custodian agent's primary loop: what is the core OODA cycle?
What tools does it need beyond the State Hub MCP? Where does it live —
new repo or `runtime/` in the-custodian? Produce an architecture sketch
covering: entry point, LLM integration (via llm-connect), tool manifest,
state-hub interaction pattern, and deployment target.