feat(identifiers): verify batch projections

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
tegwick 2026-08-22 23:50:34 +02:00
parent e6cc18bf18
commit 055c6971ab
11 changed files with 2964 additions and 9 deletions

View file

@ -0,0 +1,62 @@
apiVersion: helixforge.repo-manager/v1
kind: OwnerTaskInterface
metadata:
id: helixforge.identifiers.state-hub-sealed-projection-repair.v1
title: Repair an absent pre-derivation projection from a sealed migration unit
source:
repo: repo-manager
workplan_task: RMGR-WP-0005-T04
target:
repo: state-hub
owner_agent: state-hub
suggested_work_record: STATE-WP-0079 follow-up task or owner-selected workplan task
approval:
dispositions: [approved, amended, rejected]
record_in: State Hub file-backed workplan task or decision
task:
title: Add sealed repair for absent pre-derivation projection rows
priority: high
objective: >-
Allow an authoritative random UUID that predates deterministic derivation to
be restored into one partial projection only when a sealed Repo Manager
migration unit proves the exact repository, record identity, old UUID, and
derived target, so both projections can enter the existing transactional
cutover with matching source rows.
inputs:
- ref: repo-manager/docs/work-record-uuid-derivation_v1.md
authority: repo-manager
- ref: repo-manager/src/repo_manager/commands/registrar_reconcile.py
authority: repo-manager
- ref: state-hub/api/services/work_record_identifier_migration.py
authority: state-hub
deliverables:
- >-
Add an explicit registrar-only repair mode scoped to one canonical
workplan and one sealed repository migration unit; never widen ordinary
consistency repair for arbitrary random stale UUIDs.
- >-
Reconstruct the absent workplan and its mapped tasks with their exact old
UUIDs from the clean, synchronized authoritative file and existing
repository/topic projection, then verify exact API visibility.
- >-
Emit a non-secret receipt containing repository, canonical ids, old UUIDs,
plan seal, source Git revision, projection identity, and canonical UTC
observation time.
- Make retry idempotent and reject partial presence, target presence, source drift, or UUID conflict.
constraints:
- The normal C-03 random stale-reference refusal remains unchanged.
- Repair requires explicit primary confirmation and an exact sealed plan hash.
- Do not infer a repository, topic, canonical id, or UUID from path strings alone.
- Do not mutate the authoritative workplan file during projection repair.
- A failed repair must leave no partially created workplan or task rows.
acceptance:
- >-
A fixture with the old row present on one hub and absent on another repairs
only the absent projection and then passes current UUID=200 and derived UUID=404 preflight.
- A random stale UUID outside the sealed unit remains non-fixable C-03.
- Repeating the same repair returns a verified no-op receipt.
- A dirty or unsynchronized source, mismatched plan hash, or partially present unit is rejected.
- Existing empty-projection bootstrap and derived-row repair behavior remain unchanged.
verification:
- uv run pytest -q tests/test_consistency_check.py tests/test_work_record_identifier_migration.py
- make test