fix(canon): qualify daily ad-hoc identifiers
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Python Tests / pytest (push) Successful in 20s

This commit is contained in:
codex 2026-08-23 14:45:26 +02:00
parent 0829edc8b4
commit d113b5c0f1
6 changed files with 108 additions and 14 deletions

View file

@ -229,8 +229,9 @@ coordination narrative remain queryable.
- Session start order for agents: `GOAL.md` → `SCOPE.md` → genesis/history →
active workplans (see project `AGENTS.md`).
- Progress and task status follow ordinary State Hub / fix-consistency rules.
- Ad-hoc low-risk fixes may use `workplans/ADHOC-YYYY-MM-DD.md`; anything
multi-step belongs in a normal workplan.
- Ad-hoc low-risk fixes may use `workplans/ADHOC-YYYY-MM-DD.md` with canonical
id `{PREFIX}-WP-ADHOC-YYYY-MM-DD`; anything multi-step belongs in a normal
workplan.
## Minimal layout example

View file

@ -7,18 +7,24 @@ kinds:
- kind: workplan
id_patterns:
- "^[A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)*-WP-[0-9]{4}$"
- "^ADHOC-[0-9]{4}-[0-9]{2}-[0-9]{2}$"
- "^[A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)*-WP-ADHOC-[0-9]{4}-[0-9]{2}-[0-9]{2}$"
lifecycle: [proposed, ready, active, blocked, backlog, finished, archived]
legacy_patterns:
- pattern: "^ADHOC-[0-9]{4}-[0-9]{2}-[0-9]{2}$"
source: daily ad-hoc containers created before repository-qualified ad-hoc ids
grandfathered: true
- pattern: "^MASON-0001$"
source: ops-mason bootstrap workplan created before WP infix convention
grandfathered: true
- kind: task
id_patterns:
- "^[A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)*-WP-[0-9]{4}-T[0-9]{2,3}$"
- "^ADHOC-[0-9]{4}-[0-9]{2}-[0-9]{2}-T[0-9]{2}$"
- "^[A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)*-WP-ADHOC-[0-9]{4}-[0-9]{2}-[0-9]{2}-T[0-9]{2}$"
lifecycle: [wait, todo, progress, done, cancel]
legacy_patterns:
- pattern: "^ADHOC-[0-9]{4}-[0-9]{2}-[0-9]{2}-T[0-9]{2}$"
source: daily ad-hoc tasks created before repository-qualified ad-hoc ids
grandfathered: true
- pattern: "^[A-Z]+-WP-[0-9]{4}-T[0-9]$"
source: early single-digit task suffixes (pre task-block convention)
grandfathered: true

View file

@ -58,8 +58,8 @@ attention_cost, …) extend the spine; they never replace it.
| Kind | Id scheme | Meaning | Absorbs / legacy |
| --- | --- | --- | --- |
| `workplan` | `{PREFIX}-WP-NNNN` · `ADHOC-YYYY-MM-DD` | structured, dependency-bearing body of work; daily container for small same-day tasks | `MASON-0001` (single bootstrap record, grandfathered) |
| `task` | `{WP-ID}-TNN` (workplan) · `ADHOC-YYYY-MM-DD-TNN` | smallest executable unit | `MASON-0001-TNN` (grandfathered); issue-core issues become external projections only |
| `workplan` | `{PREFIX}-WP-NNNN` · `{PREFIX}-WP-ADHOC-YYYY-MM-DD` | structured, dependency-bearing body of work; repository-qualified daily container for small same-day tasks | unqualified `ADHOC-YYYY-MM-DD`; `MASON-0001` (grandfathered) |
| `task` | `{WP-ID}-TNN` | smallest executable unit | unqualified `ADHOC-YYYY-MM-DD-TNN`; `MASON-0001-TNN` (grandfathered); issue-core issues become external projections only |
| `intake` | `{PREFIX}-IN-NNNN` | spark: idea, finding, directive, request | hub suggestions (legacy, read-only close-out); `AWQ-NNN` (grandfathered) |
| `decision` | `{PREFIX}-DEC-YYYY-NNN` | approval package + resolution | `DEC-YYYY-NNN` (binky, grandfathered as-is) |
| `engagement` | `{PREFIX}-ENG-YYYY-NNN` | scheduled external interaction (counterparty, prepared material, time window) | `OH-YYYY-NNN` (grandfathered) |
@ -89,11 +89,14 @@ now matches ADR-007's repository-derived prefix model; prefix ownership and
uniqueness remain separate registry checks and are not weakened by this syntax
correction.
The same compatibility review registered `ADHOC-YYYY-MM-DD` as the workplan
container corresponding to the already canonical
`ADHOC-YYYY-MM-DD-TNN` task form. This aligns the machine registry with the
fleet agent convention and existing daily records; it does not permit ad hoc
containers to replace dependency-bearing workplans.
The same compatibility review initially registered unqualified
`ADHOC-YYYY-MM-DD` containers. A same-day collision between Activity Core and
Net Kingdom then demonstrated that this form violates ADR-007's fleet-namespace
uniqueness rule and cannot be used with deterministic UUID derivation. New
daily records therefore use `{PREFIX}-WP-ADHOC-YYYY-MM-DD`; the filename remains
`workplans/ADHOC-YYYY-MM-DD.md`. Existing unqualified ids are grandfathered and
are never silently re-derived or disambiguated. Ad-hoc containers remain only
for low-risk work completed directly.
Risk Nexus findings (`RISK-F-*`) and regulatory records (`RISK-REG-*`) are
registered as variants of `register-entry`, not as parallel work kinds. Their