Files
manga-recap-pipeline/HANDOFF.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

3.7 KiB

HANDOFF, 2026-08-12 (sixth session)

Live state is in NEXT.md. This file is only what this session did. The previous handoff is in JOURNAL.md.

Asked

The two files, then "go" on the third GPU cycle.

Result

One worker fix, one measurement that killed the plan's first item, one GPU cycle. The cycle proved the new fix and the fifth session's merge fix. Coverage rose for the first time, 50% to 57%. It is now explained entirely by the has_face gate.

metric 17:38 run 18:07 run
detections 117 119
assignments 59 68
coverage 50% 57%
degenerate boxes 1 0
assigned among face-bearing 59/72 = 82% 68/71 = 96%
assigned among gated -- 0
chains deeper than one hop 1 0
merged_from stamps 9 22

The corner-ordering fix

_bbox_to_pixels sorts each coordinate pair after clamping. Three lines (decisions/identity-bbox.md#bbox-corners-ordered). The self-check feeds it run B's real [226, 417, 130, 551] and asserts [117, 688, 203, 909]. Unsorted the call returns [203, 688, 117, 909], so the assert fails without the fix.

The run returned 0 degenerate boxes over 119 detections. The caveat is deleted and the decision is indexed.

The measurement that killed item 1

The plan said to score precision with eval_identity.py against the 145 rows of identity_labels. Every one of those rows belongs to chapter 8ca8249b, a different manga with cast "Rico" and "Ikekin", spread over 81 panels. Chapter 7c944dd4 has zero labels, so /review/identity?job_id=778297bc... returns labeled: 0, correct: 0, accuracy: null.

Scoring 8ca8249b anyway gives 7/138, with 113 rows labelled as a real person and left unassigned. That chapter's identity run is stale: 44 assignments over 246 panels, predating every fix. The number measures old code on the wrong chapter.

So the eval path is proven end to end and the ground truth is absent. A precision number needs a hand pass over 7c944dd4 through POST /review/identity/label, keyed by bbox rather than local_id.

What the cycle settled

Coverage is the gate and nothing else. All 68 assignments landed on face-bearing detections and none on a gated one. Recall among face-bearing detections is 96%, up from 82%. The resolver is not losing cast, so the suspicion in caveats/audit-open.md#coverage-trend is closed.

The merge-chain fix holds under load. 9 merges this run against 7 last run, and 22 merged_from stamps. No chain is deeper than one hop.

What the cycle opened

The lead may be absorbing. 36 of 68 assignments, 53%, against 25 of 59 before. audit_registry.py flags it. A protagonist in half the panels looks identical to an over-merge without labels.

Panel 7 got worse. 5 of its 6 detections carry has_face = False, and person_6, the one that does, went unassigned. The previous run bound its colleague. That is the cost of requiring a face, NEXT.md item 4.

Not done

  • Nothing downstream re-ran. The job is still parked at dialogue waiting with every stage below cleared.
  • Nothing is committed. All edits are in the working tree.

Checks

.venv/bin/python worker_vision.py     # self-check ok, including the swapped-corner assert
./check_stale.sh                      # exit 0 before the run and after it

Traps confirmed

  • Restart a worker with tmux send-keys -t manga-workers:<window> C-c, then re-send the launch line from start_workers.sh with the MIOPEN_ENV prefix. pgrep-based kills match the calling shell.
  • POST /characters/reset returns restart_identity_worker: true. Honour it, the worker caches the registry.
  • identity_assignments has no method column. The merged_from: stamps live in identity_assignment_sources.
  • chapters has no title column.