Record two GPU cycles: the gate works, coverage is the open question
No worker code changed. This is the evidence from the 2026-08-12 16:39 and 17:38 runs, and where each finding now lives. The fourth session's four identity changes all work on real panels. Panel 7's two wrong bindings are gone. The lead going unassigned there is correct and was measured, not assumed: face_detect finds one face on the whole panel at conf 0.599, nothing else above 0.056 even at a 0.04 threshold, and the crop shows him drawn from behind. Two decisions, both closed: a roster name is a guess so it never reaches detection, and merged_into is exactly one hop deep. Two caveats, both open: detection can order a bbox backwards (1 in 117), and identity coverage has fallen on every run since the gate landed (70 -> 61 -> 50). Coverage is the thing to settle next, and not by reading the number. identity_labels already holds 145 rows of ground truth. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -42,3 +42,5 @@ a complaint, so give it one or drop it.
|
||||
| [Identity cannot say "a person with no name"](speaker-attribution.md#no-anonymous-identity) | 2026-08-12 panel 7 |
|
||||
| [Vision does not separate a background extra from cast](speaker-attribution.md#extras-as-cast) | 2026-08-12 panel 7 |
|
||||
| [Cast reference profiles are enrolled from wrong crops](speaker-attribution.md#poisoned-reference-set) | 2026-08-12 panel 7 |
|
||||
| [Detection can order a bbox backwards](audit-open.md#degenerate-bbox) | next vision run |
|
||||
| [Identity coverage has fallen on every run since the gate landed](audit-open.md#coverage-trend) | before the next downstream run |
|
||||
|
||||
@@ -181,3 +181,29 @@ Every clip in that run therefore has no parallax. The stage is a sibling of
|
||||
|
||||
Costs: a silent quality regression that no status field reveals.
|
||||
Revisit when: parallax matters for a deliverable, or before quoting this run as a full-pipeline pass.
|
||||
|
||||
## Detection can order a bbox backwards {#degenerate-bbox}
|
||||
|
||||
`p007 person_1` came back as `[226, 417, 130, 551]` on the 2026-08-12 17:38 run: x1 greater than x2. One
|
||||
detection in 117. `_bbox_to_pixels` clamps every coordinate into the panel but never orders the corners,
|
||||
so the box survives as a zero-or-negative-width region. It crops to nothing, so that detection can never
|
||||
enroll, embed or match, and it is silently lost rather than reported.
|
||||
|
||||
The guard is two `min`/`max` pairs in `_bbox_to_pixels`. It was not written this session because it is a
|
||||
worker change and needs a vision worker restart plus a GPU cycle to prove.
|
||||
|
||||
Revisit trigger: the next vision run. Count degenerate boxes against 1 in 117.
|
||||
|
||||
## Identity coverage has fallen on every run since the gate landed {#coverage-trend}
|
||||
|
||||
70% -> 61% -> 50% across the 13:11 baseline, the 16:39 run and the 17:38 run. The `has_face` gate explains
|
||||
part of it and is stable, gating 39% of detections on both post-change runs. Against face-bearing
|
||||
detections only, the 17:38 run assigned 59 of 72, or 82%.
|
||||
|
||||
Nothing yet separates correct abstention from lost cast, and both fixes that could have caused the second
|
||||
drop landed together. A back-turned lead is a correct abstention. A real character the resolver refused is
|
||||
not, and the two are indistinguishable in the coverage number alone.
|
||||
|
||||
Revisit trigger: before trusting the registry for a downstream run. `identity_labels` already exists for
|
||||
exactly this and holds 145 rows of human ground truth, so `eval_identity.py` can score precision against
|
||||
recall instead of counting assignments.
|
||||
|
||||
Reference in New Issue
Block a user