diff --git a/workplans/STATE-WP-0083-forge-derived-projection-reset.md b/workplans/STATE-WP-0083-forge-derived-projection-reset.md index 1374370..139fc26 100644 --- a/workplans/STATE-WP-0083-forge-derived-projection-reset.md +++ b/workplans/STATE-WP-0083-forge-derived-projection-reset.md @@ -472,3 +472,49 @@ a horizontal rule in the body, so a delimiter *was* found — just the wrong one and the real defect was hidden behind it. Checking whether the frontmatter *parses* before trusting the delimiter position fixed it, taking the count from 11 repairable to 18. + + +## Reset diff after the frontmatter repairs (2026-08-26) + +Re-run against central once `T08` landed. The false retirements are gone: + +| Repository | before | after | +|---|---|---| +| `kontextual-engine` | 1 (a live workplan) | 0 retire, 18 updated | +| `citation-evidence` | not yet measured | 0 retire, 12 updated | +| `the-custodian` | 4 | 2 retire | +| `net-kingdom` | — | **errors** | + +Two findings the re-run produced, both worth more than the diff itself. + +### The four "hub-first records" were never hub-first + +`cust-wp-0023` and `cust-wp-0024` were reported as records with no backing file, +verified by hand, and dispositioned on that basis. They have files — +`CUST-WP-0023-tpsc.md` and `CUST-WP-0024-repo-doi-gate.md` — which declare +`type: feature`, so the derivation correctly excludes them while the hub holds +them as workplans. + +Together with `state-hub-v0.1`/`v0.2`, which turned out to be `CUST-WP-0000` and +`CUST-WP-0000b` with unterminated frontmatter, **all four claims were wrong, by +three different mechanisms**: broken frontmatter, a mismatched `type`, and in +both cases an inference from a parser's silence rather than a check against the +directory. "The tool did not find it" was repeatedly reported as "it does not +exist". + +Ten files in `workplans/` directories declare something other than +`type: workplan` — `feature`, `api`, `target`, `runbook`, `domain`, +`extension-workplan`. Some are registered as workplans on the hub. Each needs a +disposition: either the file's type is wrong, or the hub record should not exist. +Until then a reset will keep proposing to retire them. + +### The reset crashes where it should refuse + +`net-kingdom` raises `IntegrityError: Key (id)=(e25ba5fa…) already exists`. Its +`ADHOC-2026-08-23` derives to an identifier another repository already holds — +the exact collision `CUST-WP-0066` was written about, where two repositories +created the same daily identifier on the same day. + +The reset must detect that a derived identifier belongs to another repository and +refuse with that stated, rather than failing on a database constraint. A refusal +is a decision the caller can act on; a constraint violation is a stack trace.