diff --git a/workplans/CUST-WP-0067-hub-authority-target-resolution.md b/workplans/CUST-WP-0067-hub-authority-target-resolution.md index 4adbf8d..3018c46 100644 --- a/workplans/CUST-WP-0067-hub-authority-target-resolution.md +++ b/workplans/CUST-WP-0067-hub-authority-target-resolution.md @@ -678,3 +678,56 @@ repository-record subset and touches every repo with work records. Acceptance: every cache-only workplan and task either exists on central or carries a written disposition; the cache database can then be discarded, and `ADR-010`'s divergence is closed rather than merely described. + +**Progress (2026-08-25): 129 of 426 recovered.** Central went from 670 to 799 +workplans. Measured precisely rather than estimated — the divergence is 426 +workplans, not the ~400 first reported, and **all 403 with a backing path have +that file present on disk**, confirming `ADR-010`'s finding that nothing was +lost. + +**Mechanism.** Only 57 of 403 carry deterministic UUIDv5 identifiers; the rest +are pre-`ADR-007` v4. C-06 refuses non-derived identifiers as +`C-03 FAIL — stale reference`, so the ordinary path cannot re-derive most of +them. Rewriting 345 identifiers fleet-wide was rejected: it overlaps +`RMGR-WP-0005`'s ownership of identifier migration and was unnecessary. +`--bootstrap-empty-projection` registers a repository's workplans **preserving +their existing identifiers**, verified on one repository first — workplan and +all four tasks landed with original UUIDs and statuses, no file rewritten and +no commit. + +**A self-inflicted failure worth recording.** The registrar generates +`WORK-RECORDS.md`, which dirties the worktree and then fails its own git +precondition; the retry reports `git_precondition_failed` instead. Several runs +had in fact registered successfully before failing on the file they created. +Committing that generated index and retrying clears it. + +**The 297 remaining, classified:** + +| Count | Class | What it needs | +|---|---|---| +| 176 | non-empty projection | C-06 for the deterministic subset; the rest await the identifier-migration decision | +| 58 | file not shaped as a workplan | content fix — 50 are `clay-borg`, using `kind: product` instead of `type: workplan` and `status: done`, which is not a workplan status | +| 24 | bootstrap-eligible | blocked on the per-repository causes below | +| 23 | orphan, no backing file | written disposition, per the orphan rules above | +| 16 | non-conforming record id | identifier fix with the repo owner | + +**Per-repository blockers**, from actual error messages: + +| Repository | Cause | +|---|---| +| `clay-borg` | no file parses as a workplan | +| `rapp-openbao`, `policy-nexus`, `whitehat-security` | a task has no authoritative projection UUID; task ids must be minted first | +| `glas-harness`, `rein-aharness`, `rein-openweights` | record ids rejected by the canon registry (e.g. `GLAS-0001`, not `PREFIX-WP-NNNN`) | +| `ops-mason` | projection no longer empty — already partly registered | +| `ground-game` | genuine uncommitted work; left untouched | +| `zone-engine` | untracked `DECISIONS.md`; owner content | + +A correction to this task's own analysis: `bootstrap_source_invalid` was first +read as one cause because only the error *code* was captured. It covers at +least two unrelated causes, separated only after capturing the messages. + +**Recommendation: promote to its own workplan.** What remains is not one job. +It is a content-conformance pass, an identifier decision overlapping +`RMGR-WP-0005`, an orphan disposition, and a per-repository unblocking pass — +across ~40 repositories, several needing owner judgement. The mechanical share +is done.