Files
manga-recap-pipeline/decisions/CLAUDE.md
T
kami 54bd126cd7 Order bbox corners, and find the ground truth is for another manga
`_bbox_to_pixels` sorts each coordinate pair after clamping. Run B returned
`p007 person_1` as `[226, 417, 130, 551]`, x1 > x2, which cropped to nothing
and lost that detection silently. The third GPU cycle came back with 0
degenerate boxes over 119 detections.

The plan's first item cannot run as written. All 145 rows of `identity_labels`
belong to chapter 8ca8249b, a different manga. Chapter 7c944dd4 has none, so
`/review/identity` reports `accuracy: null`. Scoring 8ca8249b gives 7/138 on
an identity run that predates every fix.

The cycle also settled the coverage question. All 68 assignments landed on
face-bearing detections and none on a gated one, so recall among face-bearing
detections is 96%, up from 82%. Coverage is the `has_face` gate and nothing
else. What is now open is precision: the lead holds 36 of 68 assignments.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 22:21:52 +04:00

4.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