Files
manga-recap-pipeline/decisions/CLAUDE.md
T
kami bc19f9e9fd Measure the registry against the run it describes
ARCHITECTURE.md step 0. eval/chapter-truth.json holds the 38 occurrences the
user walked crop by crop on the 19:44 run of 2026-08-12, and audit_registry.py
now prints purity per cluster and fragmentation per person against it. All six
baseline numbers reproduce.

Rows key on page-space geometry, purity is a share, and fragmentation is a
count of ids, so nothing in the file names a panel_id or a character_id. The
fifth cycle re-crops and calls /characters/reset, and the file survives both.
That was the ordering trap in the handoff.

NEXT.md said 2 of woman B's 9 crops were really woman A and never said which.
They are panel_order 31 and 33, identified from p030 and p032.

Four fixes to the audit itself, all pre-existing:

- 20 characters counted where 14 are live and 6 are merge losers kept on purpose
- the assignment spread keyed on name, so the two Seonhos summed into one line
- the default worked example was panel_index 7, a panel vision skips. NEXT.md's
  "panel 7" is panel_order 7, one lower
- nothing about skipped panels. 41 of 116 are skip=True, four checked and all
  four correct, and they hold 28 of the chapter's 122 dialogue lines

That last count is the measured case for an offscreen speaker_ref kind: 23% of
dialogue sits on panels with no character to attribute to.

Checks: audit_registry.py --selftest covers the IoU match, the greedy tie-break
and the purity maths with no database. ruff check . exits 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 23:32:05 +04:00

5.1 KiB

decisions/

One entry per settled question about this pipeline. An entry names the claim, the evidence, the date, and what it forbids or permits next.

No entry is a plan. NEXT.md holds the plan, ROADMAP.md holds the horizon, and a limitation that is still live belongs in caveats/.

Rules for this directory

  • One file per topic, one ## section per question, so the index can link an anchor.
  • An entry cites a file and line, a commit, or a test. No citation means it is an opinion, and an opinion gets deleted rather than defended.
  • Closed means acting on it is safe. Open means investigated and undecided. Void means the evidence turned out to be invalid and the claim must not be cited again.
  • Rewrite an entry when something contradicts it, and say what changed.

Index

decision state
A dialogue row's speaker is speaker_ref, not speaker closed
Script verification must not fail on sentence-initial capitals or short quotes closed
Tracklet links are transitive over similarity, never across a hard constraint closed
A detected face takes an identity only when it falls inside that character's box closed
A 409 from the GPU mutex is a queue signal, not a stale lease closed
Correctness flags resolve by flag id, and never block autonomous TTS closed
An out-of-range resolver index is unresolved, never a new character closed
The session manager holds no lock across a model load closed
One bucket per artifact class, not everything under manga closed
The orchestrator creates missing buckets at startup closed
RustFS is staged, not adopted open
A model guess is never labelled tail closed
The model's speaker answer is resolved against what the prompt showed closed
An unpaired set-of-mark label grounds nothing closed
An interjection is not a name and not a misquote closed
Cast names enter the verifier tokenized closed
Clearing a stage strips the vision blob it wrote closed
The shipped 72.7s gap was a stream copy across mixed frame rates closed
xfade offsets come from min(video, audio), never format=duration closed
A vision bbox is gemma's 0-1000 grid, converted to pixels at /vision closed
Assembly verifies its own output instead of trusting ffmpeg's exit code closed
The single-item passthrough is not the assembly bug void
A stage result proves nothing until the worker is newer than the edit closed
A detection with no detected face never enrolls or binds closed
A resolver NONE mints an anonymous character, it does not clear the crop closed
The extras gate runs at enrollment and at narration, not at the speaker prompt closed
A roster name is a guess, so it never reaches detection closed
merged_into is exactly one hop deep closed
_bbox_to_pixels orders the corners, because the model sometimes swaps them closed
A tracklet is bounded by span, not only by pairwise distance closed
A generic word is not identity evidence, and one tokenizer serves both consumers closed
The gallery is the live cast, not cosine's top-k closed
A name is a word set, not a string closed, GPU pending
A confident caption names a character on its own closed, GPU pending
A name belongs to one character closed, GPU pending
The truth file keys on page-space geometry closed
Purity is a share, so it never names an id closed
The truth is 38 assignments, and holds no dialogue yet open