generated from coulomb/repo-seed
Regenerate agent instruction files for dev-hub MCP name
Refresh session-protocol and related rule files after template update.
This commit is contained in:
@@ -1,14 +1,7 @@
|
|||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
State Hub uses a **repo-anchored classification spine** (STATE-WP-0065):
|
<!-- TODO: Describe the key design decisions and component structure.
|
||||||
|
Key modules, data flows, external integrations, state machines, etc. -->
|
||||||
- **Primary anchor:** `managed_repos` + committed `.repo-classification.yaml`
|
|
||||||
- **Market domain:** derived from classification (`domain` field) — 14 fixed values
|
|
||||||
- **Workplans:** table `workplans`, `repo_id` required, `topic_id` optional
|
|
||||||
- **Legacy:** `/workstreams/` REST routes and `workstream_*` MCP tools are aliases
|
|
||||||
|
|
||||||
Classification canon lives in `the-custodian/canon/standards/`.
|
|
||||||
Validation: `api/classification.py` · registration: `make register-from-classification`.
|
|
||||||
|
|
||||||
## Quick Reference
|
## Quick Reference
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
## First Session Protocol
|
## First Session Protocol
|
||||||
|
|
||||||
Triggered when `get_domain_summary("custodian")` shows **no workstreams**.
|
Triggered when `get_domain_summary("infotech")` shows **no workstreams**.
|
||||||
The project is registered but work has not yet been structured.
|
The project is registered but work has not yet been structured.
|
||||||
|
|
||||||
**Step 1 — Read, don't write**
|
**Step 1 — Read, don't write**
|
||||||
- `~/the-custodian/canon/projects/custodian/project_charter_v0.1.md` — purpose, scope
|
- `~/the-custodian/canon/projects/infotech/project_charter_v0.1.md` — purpose, scope
|
||||||
- `~/the-custodian/canon/projects/custodian/roadmap_v0.1.md` — planned phases
|
- `~/the-custodian/canon/projects/infotech/roadmap_v0.1.md` — planned phases
|
||||||
- Scan repo root: README, directory structure, existing code or docs
|
- Scan repo root: README, directory structure, existing code or docs
|
||||||
|
|
||||||
**Step 2 — Survey in-progress work**
|
**Step 2 — Survey in-progress work**
|
||||||
@@ -28,7 +28,7 @@ create_task(workstream_id="<id>", title="...", priority="high|medium|low")
|
|||||||
**Step 5 — Record the setup**
|
**Step 5 — Record the setup**
|
||||||
```
|
```
|
||||||
add_progress_event(
|
add_progress_event(
|
||||||
summary="First session: structured custodian into N workstreams, M tasks",
|
summary="First session: structured infotech into N workstreams, M tasks",
|
||||||
event_type="milestone",
|
event_type="milestone",
|
||||||
topic_id="cee7bedf-2b48-46ef-8601-006474f2ad7a",
|
topic_id="cee7bedf-2b48-46ef-8601-006474f2ad7a",
|
||||||
detail={"workstreams": [...], "tasks_created": M}
|
detail={"workstreams": [...], "tasks_created": M}
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
**Purpose:** Standalone State Hub service repository extracted from the-custodian/state-hub. Owns the FastAPI API, MCP server, dashboard, migrations, consistency tooling, and operational docs.
|
**Purpose:** Standalone State Hub service repository extracted from the-custodian/state-hub. Owns the FastAPI API, MCP server, dashboard, migrations, consistency tooling, and operational docs.
|
||||||
|
|
||||||
**Classification:** tooling · infotech (see `.repo-classification.yaml`)
|
**Domain:** infotech
|
||||||
**Repo slug:** state-hub
|
**Repo slug:** state-hub
|
||||||
**Topic ID:** cee7bedf-2b48-46ef-8601-006474f2ad7a *(legacy optional tag)*
|
**Topic ID:** cee7bedf-2b48-46ef-8601-006474f2ad7a
|
||||||
|
|
||||||
Coordination spine is **repo-anchored** — workplans bind to `repo_id`, market
|
|
||||||
domain is derived from classification, not from the old coordination-domain model.
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
## Session Protocol
|
## Session Protocol
|
||||||
|
|
||||||
State Hub: http://127.0.0.1:8000
|
Dev Hub (State Hub API): http://127.0.0.1:8000
|
||||||
|
MCP server name in `~/.claude.json`: `dev-hub`
|
||||||
|
|
||||||
**Step 1 — Orient**
|
**Step 1 — Orient**
|
||||||
|
|
||||||
@@ -10,7 +11,7 @@ cat .custodian-brief.md
|
|||||||
```
|
```
|
||||||
Then call the MCP tool for richer cross-domain context when MCP tools are exposed:
|
Then call the MCP tool for richer cross-domain context when MCP tools are exposed:
|
||||||
```
|
```
|
||||||
get_domain_summary("custodian")
|
get_domain_summary("infotech")
|
||||||
```
|
```
|
||||||
If MCP tools are unavailable in the current agent session, use the REST API:
|
If MCP tools are unavailable in the current agent session, use the REST API:
|
||||||
```bash
|
```bash
|
||||||
@@ -43,7 +44,7 @@ For each file with `status: ready`, `active`, or `blocked`, note pending
|
|||||||
|
|
||||||
**Step 4 — Present brief**
|
**Step 4 — Present brief**
|
||||||
|
|
||||||
1. **Active workplans** for this repo — title, task counts, blocking decisions
|
1. **Active workstreams** for `infotech` — title, task counts, blocking decisions
|
||||||
2. **Pending tasks** from `workplans/` + any `[repo:state-hub]` hub tasks
|
2. **Pending tasks** from `workplans/` + any `[repo:state-hub]` hub tasks
|
||||||
3. **Goal guidance** — if `goal_guidance` in summary:
|
3. **Goal guidance** — if `goal_guidance` in summary:
|
||||||
- `needs_workplan`: surface as top action — *"Repo goal '{title}' has no workplan yet"*
|
- `needs_workplan`: surface as top action — *"Repo goal '{title}' has no workplan yet"*
|
||||||
@@ -51,13 +52,12 @@ For each file with `status: ready`, `active`, or `blocked`, note pending
|
|||||||
4. **Suggested next action** — highest-priority open item
|
4. **Suggested next action** — highest-priority open item
|
||||||
5. **SBOM status** — flag if `last_sbom_at` is unset for this repo
|
5. **SBOM status** — flag if `last_sbom_at` is unset for this repo
|
||||||
|
|
||||||
If no workplans: follow First Session Protocol (`first-session.md`).
|
If no workstreams: follow First Session Protocol (`first-session.md`).
|
||||||
|
|
||||||
**During work:** `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_workplan`, `create_task`)
|
> 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).
|
> are First Session Protocol only. Work structure belongs in repo files (ADR-001).
|
||||||
> Repo registration uses `.repo-classification.yaml` via `register_repo_from_classification`.
|
|
||||||
|
|
||||||
**Session close:**
|
**Session close:**
|
||||||
With MCP tools:
|
With MCP tools:
|
||||||
|
|||||||
24
AGENTS.md
24
AGENTS.md
@@ -4,12 +4,7 @@
|
|||||||
|
|
||||||
**Purpose:** Standalone State Hub service repository extracted from the-custodian/state-hub. Owns the FastAPI API, MCP server, dashboard, migrations, consistency tooling, and operational docs.
|
**Purpose:** Standalone State Hub service repository extracted from the-custodian/state-hub. Owns the FastAPI API, MCP server, dashboard, migrations, consistency tooling, and operational docs.
|
||||||
|
|
||||||
**Periodic consistency sync:** The 15-minute workplan↔DB sweep is scheduled on
|
**Domain:** infotech
|
||||||
activity-core (Railiance01), not a local timer. Execution still runs on this
|
|
||||||
workstation via the bridge tunnel. Runbook:
|
|
||||||
[`docs/consistency-sweep-runbook.md`](docs/consistency-sweep-runbook.md).
|
|
||||||
|
|
||||||
**Domain:** custodian
|
|
||||||
**Repo slug:** state-hub
|
**Repo slug:** state-hub
|
||||||
**Topic ID:** `cee7bedf-2b48-46ef-8601-006474f2ad7a`
|
**Topic ID:** `cee7bedf-2b48-46ef-8601-006474f2ad7a`
|
||||||
**Workplan prefix:** `STATE-WP-`
|
**Workplan prefix:** `STATE-WP-`
|
||||||
@@ -32,8 +27,8 @@ there is no MCP server for Codex agents.
|
|||||||
# Offline brief — works without hub connection
|
# Offline brief — works without hub connection
|
||||||
cat .custodian-brief.md
|
cat .custodian-brief.md
|
||||||
|
|
||||||
# Active workplans for this domain
|
# Active workstreams for this domain
|
||||||
curl -s "http://127.0.0.1:8000/workplans/?topic_id=cee7bedf-2b48-46ef-8601-006474f2ad7a&status=active" \
|
curl -s "http://127.0.0.1:8000/workstreams/?topic_id=cee7bedf-2b48-46ef-8601-006474f2ad7a&status=active" \
|
||||||
| python3 -m json.tool
|
| python3 -m json.tool
|
||||||
|
|
||||||
# Check inbox
|
# Check inbox
|
||||||
@@ -85,7 +80,7 @@ curl -s -X PATCH "http://127.0.0.1:8000/tasks/<task_id>" \
|
|||||||
## Session Protocol
|
## Session Protocol
|
||||||
|
|
||||||
**Start:**
|
**Start:**
|
||||||
1. `cat .custodian-brief.md` — domain goal and open workplans (offline-safe)
|
1. `cat .custodian-brief.md` — domain goal and open workstreams (offline-safe)
|
||||||
2. Check inbox: `GET /messages/?to_agent=state-hub&unread_only=true`; mark read
|
2. Check inbox: `GET /messages/?to_agent=state-hub&unread_only=true`; mark read
|
||||||
3. Scan workplans: `ls workplans/` — note `status: ready`, `active`, or `blocked` files and open tasks
|
3. Scan workplans: `ls workplans/` — note `status: ready`, `active`, or `blocked` files and open tasks
|
||||||
4. Check human-needed tasks: `GET /tasks/?needs_human=true`
|
4. Check human-needed tasks: `GET /tasks/?needs_human=true`
|
||||||
@@ -156,6 +151,11 @@ every repo's agent instructions because it is high-frequency, high-risk, and eas
|
|||||||
get wrong.
|
get wrong.
|
||||||
|
|
||||||
**Canon:** `~/ops-warden/wiki/CredentialRouting.md` · catalog `~/ops-warden/registry/routing/catalog.yaml`
|
**Canon:** `~/ops-warden/wiki/CredentialRouting.md` · catalog `~/ops-warden/registry/routing/catalog.yaml`
|
||||||
|
|
||||||
|
<!-- REPO-AGENTS-EXTENSIONS -->
|
||||||
|
<!-- Append repo-specific agent instructions below this marker.
|
||||||
|
The state-hub template sync preserves content after this line. -->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Workplan Convention (ADR-001)
|
## Workplan Convention (ADR-001)
|
||||||
@@ -181,7 +181,7 @@ anything needing analysis, design, approval, dependencies, or multiple phases.
|
|||||||
id: STATE-WP-NNNN
|
id: STATE-WP-NNNN
|
||||||
type: workplan
|
type: workplan
|
||||||
title: "..."
|
title: "..."
|
||||||
domain: custodian
|
domain: infotech
|
||||||
repo: state-hub
|
repo: state-hub
|
||||||
status: proposed | ready | active | blocked | backlog | finished | archived
|
status: proposed | ready | active | blocked | backlog | finished | archived
|
||||||
owner: codex
|
owner: codex
|
||||||
@@ -192,10 +192,6 @@ state_hub_workstream_id: "<uuid>" # written by fix-consistency — do not edit
|
|||||||
---
|
---
|
||||||
```
|
```
|
||||||
|
|
||||||
`state_hub_workstream_id` is the legacy bridge field for the current State Hub
|
|
||||||
database identity. Prefer workplan-named API routes for new client code while
|
|
||||||
this bridge field remains in compatibility use.
|
|
||||||
|
|
||||||
Use `proposed` for a new draft, `ready` after review against current repo
|
Use `proposed` for a new draft, `ready` after review against current repo
|
||||||
state, and `finished` after implementation. `stalled` and `needs_review` are
|
state, and `finished` after implementation. `stalled` and `needs_review` are
|
||||||
derived health labels, not frontmatter statuses.
|
derived health labels, not frontmatter statuses.
|
||||||
|
|||||||
Reference in New Issue
Block a user