generated from coulomb/repo-seed
feat(classification-spine): implement STATE-WP-0065 repo-anchored model
Replace the ad-hoc coordination-domain spine with the Repo Classification Standard: 14 market domains, classification columns on managed_repos, and workplans anchored by repo_id (topic_id optional). - Add Alembic migration d8e9f0a1b2c3 with data backfill and workstream→workplan rename - Add api/classification.py validation and register-from-classification tooling - Expose workplan-first REST/MCP surface with legacy workstream aliases - Add C-24 consistency rule and legacy domain frontmatter mapping - Update dashboard repos page with category/capability/stake filters - Update orientation docs; mark STATE-WP-0065 finished
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
## Architecture
|
||||
|
||||
<!-- TODO: Describe the key design decisions and component structure.
|
||||
Key modules, data flows, external integrations, state machines, etc. -->
|
||||
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
|
||||
`~/state-hub/mcp_server/TOOLS.md` — MCP tool reference
|
||||
@@ -1,5 +1,8 @@
|
||||
**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.
|
||||
|
||||
**Domain:** custodian
|
||||
**Classification:** tooling · infotech (see `.repo-classification.yaml`)
|
||||
**Repo slug:** state-hub
|
||||
**Topic ID:** cee7bedf-2b48-46ef-8601-006474f2ad7a
|
||||
**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.
|
||||
|
||||
@@ -43,7 +43,7 @@ For each file with `status: ready`, `active`, or `blocked`, note pending
|
||||
|
||||
**Step 4 — Present brief**
|
||||
|
||||
1. **Active workstreams** for `custodian` — title, task counts, blocking decisions
|
||||
1. **Active workplans** for this repo — 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,12 +51,13 @@ 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 workstreams: follow First Session Protocol (`first-session.md`).
|
||||
If no workplans: 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_workstream`, `create_task`)
|
||||
> State Hub is a *read model*. Bootstrap tools (`create_workplan`, `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:
|
||||
|
||||
Reference in New Issue
Block a user