feat(workplan): record CUST-WP-0068 recovery outcome — 964 of 1075 records
Central 670 -> 1018 workplans; cache-only gap 426 -> 111. T06 was scoped as an identifier-migration decision and that framing was wrong. Two defects did most of the blocking: 50 repositories carried retired gitea-remote URLs on central so fix-consistency could not match them, and the registrar was blind to records that had an identifier but were absent from the hub. Both were masked by a generic error whose real message sat in a child process's stderr. Also records the repo-wide re-key that severed eight working identifiers on kaizen-agentic, and the rule now enforced in code to prevent it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
380a4af0c6
commit
0dfdb9b63f
1 changed files with 47 additions and 0 deletions
|
|
@ -251,6 +251,53 @@ Acceptance: registration records a backing file in one pass; the fleet-wide
|
||||||
count of file-less workplans is re-measured and explained; every remaining true
|
count of file-less workplans is re-measured and explained; every remaining true
|
||||||
orphan is repaired, given a file, or dropped in writing.
|
orphan is repaired, given a file, or dropped in writing.
|
||||||
|
|
||||||
|
## Outcome so far (2026-08-25)
|
||||||
|
|
||||||
|
**964 of 1075 work records recovered. Central went from 670 to 1018 workplans;
|
||||||
|
the cache-only gap fell from 426 to 111.**
|
||||||
|
|
||||||
|
`T06` was scoped as an identifier-migration decision. That framing was wrong,
|
||||||
|
and the re-key it authorised turned out to be the smaller half. Two defects were
|
||||||
|
doing most of the blocking, and both were invisible behind a generic
|
||||||
|
`"State Hub reconciliation did not assign every requested identifier"` — the
|
||||||
|
real message sat in a child process's stderr the whole time:
|
||||||
|
|
||||||
|
1. **50 repositories carried retired `gitea-remote:` URLs on central.**
|
||||||
|
`fix-consistency` matches a checkout to its record *by* `remote_url`, so it
|
||||||
|
could not find them and refused to register any of their work records. The
|
||||||
|
forge migration updated every working copy and never the hub. `repo-onboard`
|
||||||
|
now corrects a stale remote from the working copy's origin; 53 were fixed.
|
||||||
|
|
||||||
|
2. **The registrar was blind to "identified but absent".** It looked only for
|
||||||
|
*missing* identifiers, so a record whose derived identifier was already in
|
||||||
|
the file but absent from central short-circuited to `noop`. C-06 handles that
|
||||||
|
case and marks it fixable; only the early return stood in the way.
|
||||||
|
|
||||||
|
The re-key itself was then necessary but narrow: C-06 registers an absent record
|
||||||
|
only when its identifier is the derived one, so 139 pre-`ADR-007` identifiers had
|
||||||
|
to be re-keyed before they could be registered.
|
||||||
|
|
||||||
|
**A mistake worth recording.** The first re-key script ran repo-wide and
|
||||||
|
overwrote the identifiers of eight workplans on `kaizen-agentic` that were
|
||||||
|
correctly registered, severing them from their live records. They were restored
|
||||||
|
by matching canonical ids against central's slugs. The rule — *never re-key a
|
||||||
|
record the hub already holds* — is now enforced in the script rather than
|
||||||
|
remembered, and it correctly refused five duplicate-registration cases on the
|
||||||
|
full run. `kaizen-agentic` deserves an independent look, since the repair was
|
||||||
|
verified only by the person who caused the damage.
|
||||||
|
|
||||||
|
**The 111 that remain**, all in eight repositories:
|
||||||
|
|
||||||
|
| Count | Repository | Cause |
|
||||||
|
|---|---|---|
|
||||||
|
| 50 | `clay-borg` | files use `kind: product`, not `type: workplan` — nothing parses them (`T04`) |
|
||||||
|
| 12 | `glas-harness`, `rein-aharness`, `rein-openweights` | identifiers the canon registry rejects (`T03`) |
|
||||||
|
| 6 | `evidence-anchor`, `the-custodian`, `sand-boxer`, `state-hub` | mixed residue, needs case-by-case review |
|
||||||
|
| — | `railiance-platform`, `railiance-apps` | the retired `RAILIANCE-WP` family prefix: files in two repositories whose records central attributes to a third. An identity decision, not a re-key |
|
||||||
|
|
||||||
|
By status the remainder is overwhelmingly closed history — 96 `finished`, 10
|
||||||
|
`archived` — with only 2 `active`, 2 `blocked` and 1 `proposed` still live.
|
||||||
|
|
||||||
## Converge and retire the cache database
|
## Converge and retire the cache database
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue