Normalize agent instructions and workplan frontmatter (STATE-WP-0067)

- Align agent files with on-disk workplan prefixes (infer from workplan ids)
- Set workplan domain to registered domain_slug; add topic_slug where applicable
- Repair frontmatter delimiter formatting; migrate legacy task status literals
- Regenerate AGENTS.md, CLAUDE.md, and .claude/rules from State Hub templates
This commit is contained in:
2026-06-22 23:16:24 +02:00
parent 79736d8b08
commit a0f79af2ab
19 changed files with 148 additions and 300 deletions

View File

@@ -1,15 +1,3 @@
## Agent entry points
| Runtime | Canonical instructions |
| --- | --- |
| **Grok / Codex** (shell) | `AGENTS.md` at repo root |
| **Claude Code** | This file tree via `CLAUDE.md` |
`AGENTS.md` and `.claude/rules/` are kept in sync for repo-specific content.
Fleet-wide credential routing is mirrored in `credential-routing.md` and the
matching section of `AGENTS.md` — re-sync from `~/ops-warden/wiki/CredentialRouting.md`
when the catalog changes.
## Kaizen Agents
Specialized agent personas available on demand via the state-hub MCP.
@@ -29,4 +17,4 @@ Common agents:
| `project-management` | process | Track status, determine next steps |
| `datamodel-optimization` | quality | Optimize dataclasses and data structures |
All 17 agents: call `list_kaizen_agents()` for the full list.
All 17 agents: call `list_kaizen_agents()` for the full list.

View File

@@ -1,23 +1,8 @@
## Architecture
**Request pipeline** (`src/cya/orchestrator.py`):
1. Collect local context (`context/collector.py`)
2. Recall memory via phase-memory ports (`memory/__init__.py`)
3. Classify risk (`safety/risk.py`) — rule-based; memory signals add caution only
4. Call LLM via `LLMAdapter` Protocol (`llm/adapter.py`) — FakeLLMAdapter today
5. Render explainable response (Rich)
**Memory (Profile 0 + Profile 1 spike):**
- User-controlled local JSON behind explicit ports (`remember`, `recall`, `forget`, `export`)
- Kinds: `preference`, `retrospection`, `interaction_goal`, `reflection`
- Directory/project-bound activation via `activation_context`
- `cya retrospect` feeds higher-order memory; optional verbal lesson capture (Profile 1)
**Boundaries:** See `repo-boundary.md`. No production path bypasses the adapter or memory ports.
<!-- TODO: Describe the key design decisions and component structure.
Key modules, data flows, external integrations, state machines, etc. -->
## Quick Reference
- Memory contract: `MemoryVision.md`
- Activation/retrospection concept: `docs/cya-memory-activation-and-retrospection-concept.md`
- phase-memory feedback: `docs/phase-memory-optimization-suggestions.md`
- `~/state-hub/mcp_server/TOOLS.md` — MCP tool reference
`~/state-hub/mcp_server/TOOLS.md` — MCP tool reference

View File

@@ -1,8 +1,5 @@
# Credential and access routing
> Fleet template mirrored in `AGENTS.md` (Credential and access routing section).
> Re-sync both from `~/ops-warden/wiki/CredentialRouting.md` when the catalog changes.
**Audience:** Codex, Claude Code, Grok, and custodian agents that call **llm-connect**
for inference. Run this check **before** requesting secrets, API keys, SSH access,
login tokens, or database passwords — in any repo, not only `ops-warden`.
@@ -28,14 +25,13 @@ Requires the `warden` CLI from `~/ops-warden` (`uv tool install .` or `uv run wa
### Quick routing table
Prefer `warden route find` for repo-specific needs. Common routes:
| I need… | Owner | ops-warden executes? |
| --- | --- | --- |
| SSH cert (`adm`/`agt`/`atm`) | ops-warden | **Yes**`warden sign` |
| API key, DB password, provider token | OpenBao (`railiance-platform`) | No — route only |
| Login / OIDC / MFA | key-cape / Keycloak | No — route only |
| Authorization decision | flex-auth | No — route only |
| activity-core → issue-core emission | activity-core + issue-core | No — `warden route show activity-core-issue-sink` |
| SSH tunnel | ops-bridge (+ `cert_command` from warden) | No — route only |
### Anti-patterns (do not do these)

View File

@@ -1,18 +1,19 @@
## First Session Protocol
Triggered when `get_domain_summary("capabilities")` shows **no workstreams**.
Triggered when `get_domain_summary("agents")` shows **no workstreams**.
The project is registered but work has not yet been structured.
**Step 1 — Read, don't write**
- `INTENT.md`, `README.md`, `SCOPE.md`, `AGENTS.md`, `MemoryVision.md`
- Scan repo root: `src/cya/`, `workplans/`, `tests/`
- `~/the-custodian/canon/projects/agents/project_charter_v0.1.md` — purpose, scope
- `~/the-custodian/canon/projects/agents/roadmap_v0.1.md` — planned phases
- Scan repo root: README, directory structure, existing code or docs
**Step 2 — Survey in-progress work**
Look for TODOs, open branches, half-finished files. Note done vs. started but incomplete.
**Step 3 — Propose workstreams to Bernd**
Propose 13 workstreams — each a coherent strand, weeks to months, anchored to
INTENT/SCOPE. **Wait for approval before creating.**
Propose 13 workstreams — each a coherent strand, weeks to months, anchored to a
roadmap phase. **Wait for approval before creating.**
**Step 4 — Create workplan file first, then DB record (ADR-001)**
```
@@ -27,11 +28,11 @@ create_task(workstream_id="<id>", title="...", priority="high|medium|low")
**Step 5 — Record the setup**
```
add_progress_event(
summary="First session: structured capabilities/can-you-assist into N workstreams, M tasks",
summary="First session: structured agents into N workstreams, M tasks",
event_type="milestone",
topic_id="64418556-3206-457a-ba29-6884b5b12cf3",
detail={"workstreams": [...], "tasks_created": M}
)
```
<!-- Past first session for this repo — retained for fleet consistency -->
<!-- Delete or archive this file once past first session -->

View File

@@ -1,11 +1,8 @@
## Repo boundary
This repo owns **can-you-assist** (`cya`) only. It does not own:
This repo owns **can-you-assist** only. It does not own:
- LLM provider access, API clients, or model hosting → `llm-connect`
- Durable memory storage, profile planners, graph/event stores, or lifecycle algorithms → `phase-memory`
- Global work tracking, decisions, or cross-repo coordinationState Hub / custodian
- Credential custody (API keys, DB passwords, OIDC) → OpenBao / key-cape / operator paths (route via `warden route`)
- SSH certificate issuance → `ops-warden` (`warden sign` only)
`cya` integrates via stable seams (`LLMAdapter` Protocol, memory ports). State Hub is non-runtime.
<!-- TODO: List what belongs in adjacent repos, e.g.:
- SSH key management → railiance-infra/
- State hub code state-hub/
-->

View File

@@ -1,7 +1,5 @@
**Purpose:** Console-native, backend-agnostic LLM assistant (`cya`) for practical local work from the shell, using user-controlled context, memory, and provider configuration.
**Purpose:** Console-native, backend-agnostic LLM helper for practical local shell, repository, filesystem, and note workflows.
**Domain:** capabilities
**Domain:** agents
**Repo slug:** can-you-assist
**Topic ID:** 64418556-3206-457a-ba29-6884b5b12cf3
**Workplan prefix:** CYA-WP-
**Command name:** cya

View File

@@ -1,6 +1,7 @@
## Session Protocol
State Hub: http://127.0.0.1:8000 (remote tunnel: http://127.0.0.1:18000)
Dev Hub (State Hub API): http://127.0.0.1:8000
MCP server name in `~/.claude.json`: `dev-hub`
**Step 1 — Orient**
@@ -10,12 +11,11 @@ cat .custodian-brief.md
```
Then call the MCP tool for richer cross-domain context when MCP tools are exposed:
```
get_domain_summary("capabilities")
get_domain_summary("agents")
```
If MCP tools are unavailable in the current agent session, use the REST API:
```bash
curl -s "http://127.0.0.1:8000/workstreams/?topic_id=64418556-3206-457a-ba29-6884b5b12cf3&status=active" \
| python3 -m json.tool
curl -s "http://127.0.0.1:8000/state/summary" | python3 -m json.tool
```
If the hub is offline: `cd ~/state-hub && make api`
@@ -40,11 +40,11 @@ curl -s -X PATCH "http://127.0.0.1:8000/messages/<id>/read" \
ls workplans/
```
For each file with `status: ready`, `active`, or `blocked`, note pending
`todo`/`in_progress` tasks.
`wait`/`todo`/`progress` tasks.
**Step 4 — Present brief**
1. **Active workstreams** for `capabilities` — title, task counts, blocking decisions
1. **Active workstreams** for `agents` — title, task counts, blocking decisions
2. **Pending tasks** from `workplans/` + any `[repo:can-you-assist]` hub tasks
3. **Goal guidance** — if `goal_guidance` in summary:
- `needs_workplan`: surface as top action — *"Repo goal '{title}' has no workplan yet"*
@@ -54,12 +54,7 @@ For each file with `status: ready`, `active`, or `blocked`, note pending
If no workstreams: follow First Session Protocol (`first-session.md`).
**During work:**
- Keep changes small and inspectable.
- Treat command execution safety as product behavior: explain destructive commands and require explicit confirmation before suggesting execution.
- Do not commit secrets, API keys, local transcripts, private notes, or hidden memory contents.
- Before requesting API keys, SSH access, login tokens, or database passwords, run `warden route find` / `warden route show` per `credential-routing.md`.
- `record_decision()` · `add_progress_event()` · `resolve_decision()`
**During work:** `record_decision()` · `add_progress_event()` · `resolve_decision()`
> State Hub is a *read model*. Bootstrap tools (`create_workstream`, `create_task`)
> are First Session Protocol only. Work structure belongs in repo files (ADR-001).
@@ -87,4 +82,4 @@ cd ~/state-hub && make fix-consistency-remote REPO=can-you-assist
```
**C-15** (DB task ahead of file) is normal in multi-machine workflows — writeback
will sync the file to match DB. **C-16** (repo behind remote) blocks all writes
until you pull — intentional to prevent clobbering remote progress.
until you pull — intentional to prevent clobbering remote progress.

View File

@@ -1,38 +1,19 @@
## Stack
- **Language:** Python 3.11+
- **CLI:** Typer + Rich
- **Config:** TOML
- **Packaging:** setuptools + setuptools_scm (`src/` layout)
- **Tests:** pytest
<!-- TODO: Fill in language, frameworks, and key dependencies -->
- **Language:**
- **Key deps:**
## Dev Commands
```bash
# Recommended: install latest development code
make dev-install
# TODO: Fill in the standard commands for this repo
# Install dependencies
# Run tests
make test
# or: python3 -m pytest tests/ -q
# Build distribution packages
make dist
make release-prep
make check-dist
# Lint / type check
# Run the assistant
cya "your natural language request here"
cya --help
cya --explain-context "show me what context would be collected"
cya retrospect
# Version / inspection
make version
git status --short
rg --files
# Build / package (if applicable)
```
Current memory baseline: **Profile 0** (local JSON + activation + retrospection).
Profile 1 verbal reflections shipped as a minimal spike (CYA-WP-0005); production
hardening tracked in CYA-WP-0006.

View File

@@ -25,4 +25,16 @@ Ecosystem todos from other agents arrive as `[repo:can-you-assist]` hub tasks
visible at session start. Pick one up by creating the workplan file, then registering
the workstream.
<!-- Ralph Loop rules and HEUREKA sequence: ~/.claude/CLAUDE.md — do not duplicate here -->
Task blocks use this shape:
```task
id: CYA-WP-NNNN-T01
status: wait | todo | progress | done | cancel
priority: high | medium | low
state_hub_task_id: "<uuid>" # written by fix-consistency — do not edit
```
Status progression is `todo``progress``done`; use `wait` for waiting or
blocked work and `cancel` for stopped work.
<!-- Ralph Loop rules and HEUREKA sequence: ~/.claude/CLAUDE.md — do not duplicate here -->