generated from coulomb/repo-seed
- project_rules templates: rename workstream->workplan in prose; registration guidance is now file-first + fix-consistency C-06 (manual create_workplan/ create_workstream calls create duplicates); progress examples use workplan_id; legacy field names (state_hub_workstream_id) annotated - update_agent_instruction_files: never overwrite filled-in stack-and-commands/repo-boundary/architecture rules (TODO-marker guard) - mcp_server: add_progress_event accepts workplan_id (preferred) with workstream_id kept as legacy alias, mirroring create_task Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
95 lines
3.5 KiB
Plaintext
95 lines
3.5 KiB
Plaintext
## Session Protocol
|
|
|
|
Dev Hub (State Hub API): http://127.0.0.1:8000
|
|
MCP server name in `~/.claude.json`: `dev-hub`
|
|
|
|
**Step 1 — Orient**
|
|
|
|
Read the offline-safe brief first — it works without a live hub connection:
|
|
```bash
|
|
cat .custodian-brief.md
|
|
```
|
|
Then call the MCP tool for richer cross-domain context when MCP tools are exposed:
|
|
```
|
|
get_domain_summary("{DOMAIN}")
|
|
```
|
|
If MCP tools are unavailable in the current agent session, use the REST API:
|
|
```bash
|
|
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="{REPO_SLUG}", unread_only=True)
|
|
```
|
|
Mark read with `mark_message_read(message_id)`. Reply or act on coordination
|
|
requests before proceeding.
|
|
|
|
Without MCP tools:
|
|
```bash
|
|
curl -s "http://127.0.0.1:8000/messages/?to_agent={REPO_SLUG}&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**
|
|
```bash
|
|
ls workplans/
|
|
```
|
|
For each file with `status: ready`, `active`, or `blocked`, note pending
|
|
`wait`/`todo`/`progress` tasks.
|
|
|
|
**Step 4 — Present brief**
|
|
|
|
1. **Active workplans** for `{DOMAIN}` — title, task counts, blocking decisions
|
|
2. **Pending tasks** from `workplans/` + any `[repo:{REPO_SLUG}]` hub tasks
|
|
3. **Goal guidance** — if `goal_guidance` in 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
|
|
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`).
|
|
|
|
**During work:** `record_decision()` · `add_progress_event()` · `resolve_decision()`
|
|
|
|
> State Hub is a *read model*. **Never register workplans or tasks by hand**
|
|
> (`create_workplan`, `create_task`, or the legacy `create_workstream`) — write
|
|
> the workplan file in `workplans/` and run `fix-consistency`; its C-06 check
|
|
> registers the workplan and its tasks in the hub and writes the IDs back into
|
|
> the file. Manual registration creates duplicates the moment fix-consistency
|
|
> runs. Work structure belongs in repo files (ADR-001).
|
|
>
|
|
> Terminology: "workstream" is the legacy name for workplan. Some API/frontmatter
|
|
> field names keep it for compatibility (`state_hub_workstream_id`,
|
|
> `workstream_id` params) — treat them as workplan IDs.
|
|
|
|
**Session close:**
|
|
With MCP tools:
|
|
```
|
|
add_progress_event(summary="...", topic_id="{TOPIC_ID}", workplan_id="<uuid>")
|
|
```
|
|
Without MCP tools:
|
|
```bash
|
|
curl -s -X POST http://127.0.0.1:8000/progress/ \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"topic_id":"{TOPIC_ID}","workplan_id":"<uuid>","event_type":"note","summary":"what changed","author":"codex"}'
|
|
```
|
|
If workplan files were modified, ensure the local copy is up to date first,
|
|
then sync from the repo checkout:
|
|
```bash
|
|
git pull --ff-only
|
|
statehub fix-consistency
|
|
```
|
|
For repos where implementation runs on a remote machine (e.g. CoulombCore),
|
|
use the pull-before-fix mode from any shell with the State Hub CLI:
|
|
```bash
|
|
statehub fix-consistency --repo {REPO_SLUG} --remote
|
|
```
|
|
**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.
|