Record that 2d's worked examples no longer exist
The registry reset deleted Lim Seonho and character_afa7623b, so there is nothing to merge or split until the rerun mints a new set. What was done instead is the safety net for that rerun, since reconcile runs inside it: a merge retires the losing row rather than deleting it, and records which assignments moved. Half-closes caveats/audit-open.md#destructive-reconcile. The unmerge path and the split stay unwritten on purpose, with the revisit trigger named. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+15
-5
@@ -5,12 +5,22 @@ fixed findings live in `decisions/audit-phase1.md`. Line numbers are from the au
|
||||
|
||||
## Reconcile deletes the losing character irreversibly {#destructive-reconcile}
|
||||
|
||||
Reconciliation deletes the losing character row (`db.py:506`). Clearing the reconcile stage does not
|
||||
undo it, and name claims attached to the merged-away character are not repointed.
|
||||
Reconciliation used to delete the losing character row. Clearing the reconcile stage did not undo it, and
|
||||
nothing recorded which detections had been the loser's.
|
||||
|
||||
Costs: one bad merge is unrecoverable without rebuilding the identity stage for the whole manga.
|
||||
Revisit when: identity work resumes, or a reviewer reports a wrong merge on a real chapter.
|
||||
Workaround: none. Clear identity and rerun, which loses the good merges too.
|
||||
**Half-closed 2026-08-12.** The loss is no longer unrecoverable. `merge_characters` marks the loser
|
||||
`merged_into = keeper` instead of deleting it, so its embedding, description and gender survive, and every
|
||||
repointed assignment is stamped `method = merged_from:<loser_id>` in `identity_assignment_sources`. Those
|
||||
two records are enough to walk a merge backwards. Roster readers filter `merged_into IS NULL`. Lookup by
|
||||
id does not, so an assignment still pointing at a merged id resolves.
|
||||
|
||||
What is still missing is the mechanism that consumes them: there is no unmerge, and no split. Undoing a
|
||||
merge today means a manual SQL walk of the two records above.
|
||||
|
||||
Costs: a wrong merge needs hand-written SQL to undo, not a rebaseline.
|
||||
Revisit when: a reviewer reports a wrong merge, or the review gates from [#136] get a place to hang
|
||||
name/merge/split actions. No wrong merge has been seen since the crops were fixed, so building the unmerge
|
||||
before either trigger would be speculative.
|
||||
|
||||
## Clearing a stage does not undo what it wrote {#dishonest-clearing}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user