diff --git a/.claude/rules/architecture.md b/.claude/rules/architecture.md index a7a02e1..7c2a645 100644 --- a/.claude/rules/architecture.md +++ b/.claude/rules/architecture.md @@ -1,15 +1,8 @@ ## Architecture -State Hub uses a **repo-anchored classification spine** (STATE-WP-0065): - -- **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 -`~/state-hub/mcp_server/TOOLS.md` — MCP tool reference \ No newline at end of file +`~/state-hub/mcp_server/TOOLS.md` — MCP tool reference diff --git a/.claude/rules/first-session.md b/.claude/rules/first-session.md index cf542d0..db8a136 100644 --- a/.claude/rules/first-session.md +++ b/.claude/rules/first-session.md @@ -1,11 +1,11 @@ ## 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. **Step 1 — Read, don't write** -- `~/the-custodian/canon/projects/custodian/project_charter_v0.1.md` — purpose, scope -- `~/the-custodian/canon/projects/custodian/roadmap_v0.1.md` — planned phases +- `~/the-custodian/canon/projects/infotech/project_charter_v0.1.md` — purpose, scope +- `~/the-custodian/canon/projects/infotech/roadmap_v0.1.md` — planned phases - Scan repo root: README, directory structure, existing code or docs **Step 2 — Survey in-progress work** @@ -28,7 +28,7 @@ create_task(workstream_id="", title="...", priority="high|medium|low") **Step 5 — Record the setup** ``` 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", topic_id="cee7bedf-2b48-46ef-8601-006474f2ad7a", detail={"workstreams": [...], "tasks_created": M} diff --git a/.claude/rules/repo-identity.md b/.claude/rules/repo-identity.md index 017398a..d2ccf3b 100644 --- a/.claude/rules/repo-identity.md +++ b/.claude/rules/repo-identity.md @@ -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. -**Classification:** tooling · infotech (see `.repo-classification.yaml`) +**Domain:** infotech **Repo slug:** state-hub -**Topic ID:** cee7bedf-2b48-46ef-8601-006474f2ad7a *(legacy optional tag)* - -Coordination spine is **repo-anchored** — workplans bind to `repo_id`, market -domain is derived from classification, not from the old coordination-domain model. +**Topic ID:** cee7bedf-2b48-46ef-8601-006474f2ad7a diff --git a/.claude/rules/session-protocol.md b/.claude/rules/session-protocol.md index 180456c..6b699f6 100644 --- a/.claude/rules/session-protocol.md +++ b/.claude/rules/session-protocol.md @@ -1,6 +1,7 @@ ## 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** @@ -10,7 +11,7 @@ cat .custodian-brief.md ``` 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: ```bash @@ -43,7 +44,7 @@ For each file with `status: ready`, `active`, or `blocked`, note pending **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 3. **Goal guidance** — if `goal_guidance` in summary: - `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 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()` -> 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). -> Repo registration uses `.repo-classification.yaml` via `register_repo_from_classification`. **Session close:** With MCP tools: diff --git a/AGENTS.md b/AGENTS.md index 50d4262..9fb34c3 100644 --- a/AGENTS.md +++ b/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. -**Periodic consistency sync:** The 15-minute workplan↔DB sweep is scheduled on -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 +**Domain:** infotech **Repo slug:** state-hub **Topic ID:** `cee7bedf-2b48-46ef-8601-006474f2ad7a` **Workplan prefix:** `STATE-WP-` @@ -32,8 +27,8 @@ there is no MCP server for Codex agents. # Offline brief — works without hub connection cat .custodian-brief.md -# Active workplans for this domain -curl -s "http://127.0.0.1:8000/workplans/?topic_id=cee7bedf-2b48-46ef-8601-006474f2ad7a&status=active" \ +# Active workstreams for this domain +curl -s "http://127.0.0.1:8000/workstreams/?topic_id=cee7bedf-2b48-46ef-8601-006474f2ad7a&status=active" \ | python3 -m json.tool # Check inbox @@ -85,7 +80,7 @@ curl -s -X PATCH "http://127.0.0.1:8000/tasks/" \ ## Session Protocol **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 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` @@ -156,6 +151,11 @@ every repo's agent instructions because it is high-frequency, high-risk, and eas get wrong. **Canon:** `~/ops-warden/wiki/CredentialRouting.md` · catalog `~/ops-warden/registry/routing/catalog.yaml` + + + + --- ## Workplan Convention (ADR-001) @@ -181,7 +181,7 @@ anything needing analysis, design, approval, dependencies, or multiple phases. id: STATE-WP-NNNN type: workplan title: "..." -domain: custodian +domain: infotech repo: state-hub status: proposed | ready | active | blocked | backlog | finished | archived owner: codex @@ -192,10 +192,6 @@ state_hub_workstream_id: "" # 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 state, and `finished` after implementation. `stalled` and `needs_review` are derived health labels, not frontmatter statuses.