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>
71 lines
2.2 KiB
Markdown
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.
|