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
3.1 KiB
Session Protocol
State Hub: http://127.0.0.1:8000
Step 1 — Orient
Read the offline-safe brief first — it works without a live hub connection:
cat .custodian-brief.md
Then call the MCP tool for richer cross-domain context when MCP tools are exposed:
get_domain_summary("custodian")
If MCP tools are unavailable in the current agent session, use the REST API:
curl -s "http://127.0.0.1:8000/state/summary" | python3 -m json.tool
If the hub is offline: cd ~/state-hub && make api
Step 2 — Check inbox With MCP tools:
get_messages(to_agent="state-hub", unread_only=True)
Mark read with mark_message_read(message_id). Reply or act on coordination
requests before proceeding.
Without MCP tools:
curl -s "http://127.0.0.1:8000/messages/?to_agent=state-hub&unread_only=true" \
| python3 -m json.tool
curl -s -X PATCH "http://127.0.0.1:8000/messages/<id>/read" \
-H "Content-Type: application/json" -d '{}'
Step 3 — Scan workplans
ls workplans/
For each file with status: ready, active, or blocked, note pending
wait/todo/progress tasks.
Step 4 — Present brief
- Active workplans for this repo — title, task counts, blocking decisions
- Pending tasks from
workplans/+ any[repo:state-hub]hub tasks - Goal guidance — if
goal_guidancein summary:needs_workplan: surface as top action — "Repo goal '{title}' has no workplan yet"alignment_warnings: flag if active work is not aligned with current goal
- Suggested next action — highest-priority open item
- SBOM status — flag if
last_sbom_atis unset for this repo
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_workplan,create_task) are First Session Protocol only. Work structure belongs in repo files (ADR-001). Repo registration uses.repo-classification.yamlviaregister_repo_from_classification.
Session close: With MCP tools:
add_progress_event(summary="...", topic_id="cee7bedf-2b48-46ef-8601-006474f2ad7a", workstream_id="<uuid>")
Without MCP tools:
curl -s -X POST http://127.0.0.1:8000/progress/ \
-H "Content-Type: application/json" \
-d '{"topic_id":"cee7bedf-2b48-46ef-8601-006474f2ad7a","workstream_id":"<uuid>","event_type":"note","summary":"what changed","author":"codex"}'
If workplan files were modified, ensure the local copy is up to date first:
git -C <repo_path> pull --ff-only
cd ~/state-hub && make fix-consistency REPO=state-hub
For repos where implementation runs on a remote machine (e.g. CoulombCore), use the combined target which pulls before fixing:
cd ~/state-hub && make fix-consistency-remote REPO=state-hub
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.