Builder plans re-enrichment; succeeds schema errors are clean findings - #145
Conversation
…rrors clean Both accepted findings from the PR #128 merge disposition: 1. [MEDIUM] A retired successor returning on the current placeholder lineage is planned as a re-enrichment (retire + succeeds pair via the extracted _plan_enrichment helper) instead of dead-ending on UUID ownership before enrichment planning — the placeholder -> enrich -> withdraw -> reclaim -> re-enrich lifecycle now completes in the builder as it already did in the grammar. 2. [LOW] succeeds dimension types are validated before any key derivation, so a non-object succeeds.geography is a registry-invalid finding rather than a raw AttributeError. 153 tests; ruff, doctest, --check green; artifact bytes unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adversarial review round 1 — verdict: MERGE (risk LOW)Reviewer: gpt-5.6-sol (ultra reasoning), read-only worktree, local diff vs Reviewer's independent verification also confirmed: the two new regression tests fail on base for the claimed reasons and pass on head; re-enrichment lifecycle stages correctly (catalog UUID/status, retire+succeeds continuity, staged registry reload, successor binding, liveness); guard attacks blocked (live canon, impostor placeholders, competing successors); artifact bytes identical across committed / base-generated / head-generated catalog+registry. DispositionFinding 1 (LOW) — accepted as a real defense-in-depth improvement, deferred rather than folded into this PR: Merging on MERGE verdict + green CI per the standing gate. |
Closes the two accepted follow-ups from the #128 merge disposition (fourteenth adversarial review, findings 1–2):
succeedson a retired successor since the twelfth review, but the builder aborted on UUID ownership before reaching enrichment planning. The enrichment pair-planning is extracted into one helper used by both the first-enrichment and the returning-successor paths; the reviewer's full lifecycle (placeholder → enrich → withdraw → reclaim → re-enrich) now builds, stages, and reloads end to end (test_builder_plans_reenrichment_of_retired_successor).succeedsdimension types validate before any key derivation, so"geography": "not-an-object"is a registry-invalid finding instead of anAttributeError(test_malformed_succeeds_geography_is_a_schema_finding).Artifact bytes unchanged; 153 tests, ruff, doctest,
--checkgreen. Machine gates (catalog↔registry agreement, append-only vs base, anchor) apply as usual.🤖 Generated with Claude Code