ground-game/workplans
tegwick 1bdb6115e5 fix(workplans): qualify ad-hoc identifiers with the repository prefix
`ADHOC-YYYY-MM-DD` is unique per date but not per repository, so any two repos
opening an ad-hoc on the same day collide. The 2026-08-26 fleet projection
reset refused 9 records for exactly this reason.

Canon (work-record-types_v0.1, CUST-WP-0066) settled the form as
`{PREFIX}-WP-ADHOC-YYYY-MM-DD`, filename unchanged, and grandfathered existing
ids on the condition they are never *silently* re-derived. This is the explicit
migration that clause allows for.

The hub id is derived from the record id, so a changed id is a different
record: stale state_hub_*_id fields are dropped and fix-consistency re-derives.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-28 00:28:23 +02:00
..
ADHOC-2026-08-08.md fix(workplans): qualify ad-hoc identifiers with the repository prefix 2026-08-28 00:28:23 +02:00
GROUND-WP-0001-statehub-bootstrap.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0002-rulings-clay-borg-is-blocked-on.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0003-playtest-semi-and-coalitions.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0006-h1-problem-stress-experiment.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0007-h2-scoped-problem-stress.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
GROUND-WP-0008-composable-rules-modules.md fix(workplans): adopt ADR-007 derived identifiers 2026-08-25 19:30:13 +02:00
README.md docs(workplans): note how workplans must be structured to register 2026-08-25 22:22:52 +02:00

Workplan structure and registration

Read this before adding or editing workplans in this repository.

Workplans here do not currently register with the State Hub. This note records why, and what has to change. Nothing has been rewritten — the files are left as they are so the cleanup can happen when this repository is next picked up.

What the hub expects

A workplan is a Markdown file in workplans/ whose frontmatter declares:

---
id: PREFIX-WP-NNNN            # canonical record id; one prefix per repository
type: workplan                # REQUIRED — this is what identifies the file
title: "..."
domain: <sector domain>       # see the Repo Classification Standard
repo: <repo slug>
status: proposed | ready | active | blocked | backlog | finished | archived
owner: <who>
created: "YYYY-MM-DD"
updated: "YYYY-MM-DD"
---

Tasks are fenced blocks inside the file:

```task
id: PREFIX-WP-NNNN-T01
status: wait | todo | progress | done | cancel
priority: high | medium | low
```

Note the two vocabularies differ. done and todo are task statuses. A workplan is finished, never done.

Why these files are invisible today

The scanner selects files by type: workplan. Anything else in frontmatter — kind:, or no type at all — is skipped silently, so the file is not merely unregistered but unseen: it does not appear as a gap, an error, or a warning.

Where a workplan also carries a status outside the list above, that status cannot be projected even once the file is found.

How registration works

Files originate the work; the hub holds a projection of them (ADR-001, ADR-012). Never create records in the hub by hand — write the file, commit, and let the registrar derive the record:

uv run --project ~/repo-manager rmgr registrar-reconcile \
  --path . --confirm-primary --push

The registrar requires a clean worktree, and it will refuse a workplan whose backing file is not committed and pushed — a hub record whose source is only local cannot be re-derived by anyone else.

When cleaning this repository up

  1. Decide whether each file is genuinely a workplan. Some may be design notes or product documents that simply live in workplans/; those belong elsewhere, or should keep a non-workplan type deliberately.
  2. For real workplans: set type: workplan, map statuses to the workplan vocabulary, add the missing fields.
  3. Commit, push, then run the registrar above.

References: the-custodian/.claude/rules/workplan-convention.md, canon/architecture/adr-001-workplans-as-repo-artefacts.md, canon/architecture/adr-012-projection-source-and-preliminary-overlay.md.