Record the 9% honest speaker number and the identity constraint
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+32
@@ -121,3 +121,35 @@ The remaining `['Blur']` beat is a true positive that still halts the whole chap
|
||||
`caveats/speaker-attribution.md#one-word-halts-chapter`.
|
||||
|
||||
Neither fix is live. The orchestrator container is not rebuilt and the workers are not restarted.
|
||||
|
||||
## 2026-08-11 Rerun from dialogue: the honest speaker number is 9%
|
||||
|
||||
Command: `/job/cancel`, `/stage/clear dialogue`, `./start_workers.sh`, `/job/resume` on job
|
||||
`778297bc-e7ce-439d-91b5-8a027060d17f`, twice. `docker compose up -d --build orchestrator` three times.
|
||||
Outcome: `dialogue` 116/116. 112 orchestrator tests pass, `worker_vision.py` self-check passes.
|
||||
|
||||
The named-speaker share is 9%, 9 of 95 speech lines, down from a reported 30% that counted fake tails.
|
||||
Multi-character panels contribute 0 of 40 lines by design. Single-character panels give 9 of 55. All 9
|
||||
binds are `Choi Haeseon`, the row that covers two different women.
|
||||
|
||||
Five defects, four of them found by measuring the run rather than by reading code.
|
||||
|
||||
1. The fake `tail` label, fixed before the run (`decisions/speaker-attribution.md#no-fake-tail`).
|
||||
2. The multi-word cast name in the script verifier
|
||||
(`decisions/speaker-attribution.md#multiword-cast-names`).
|
||||
3. `/stage/clear dialogue` deleted nothing and reported success. dialogue and direct write onto the
|
||||
per-panel vision blob and had no `_STAGE_TABLES` entry, so `run_stage_dialogue` saw
|
||||
`"dialogue" in vision` and would have skipped all 116 panels. The proof is the second clear:
|
||||
116 dialogue blobs and 75 direct blobs stripped that the first had left. This is
|
||||
`caveats/audit-open.md#dishonest-clearing` firing exactly where it was filed.
|
||||
4. gemma answers the speaker field with whatever the prompt showed, most often the character
|
||||
description, and every such answer became a free-form name that no registry entry matched. 28 of 51
|
||||
sampled lines (`decisions/speaker-attribution.md#prompt-label-answers`). After the fix, 3 of 95.
|
||||
5. All 7 `som_face` lines pointed at a mark whose face paired to no present character, so the
|
||||
highest-trust provenance sat on a line with no speaker. Same defect class as the fake tail.
|
||||
|
||||
Identity is now the binding constraint, not attribution. 26 of 113 detected people carry an identity,
|
||||
23%, and 25 of the 26 are the one over-merged row. Even perfect balloon binding caps this chapter near
|
||||
23% named. The person who does hold an identity is stored as `Lim Seonho` while a separate row is named
|
||||
`Seonho` with alias `Lim Seonho`, so either name matches two rows, raises `ambiguous-speaker` and binds
|
||||
nothing.
|
||||
|
||||
@@ -23,24 +23,22 @@ the rebuild exposed.
|
||||
|
||||
## Next
|
||||
|
||||
Two fixes are written and checked, neither is deployed.
|
||||
The named-speaker share is 9%, 9 of 95 speech lines, and that number is real. See `JOURNAL.md` for the
|
||||
five defects behind the old 30%. Everything below is measured on job `778297bc`, not inferred.
|
||||
|
||||
- `worker_vision.py` no longer labels a model guess `tail`, and drops the guess entirely when two or
|
||||
more characters are present (`decisions/speaker-attribution.md#no-fake-tail`). The workers need a
|
||||
restart, and only a rerun from `dialogue` puts it on stored data.
|
||||
- `correctness.py` tokenizes cast names for the script verifier
|
||||
(`decisions/speaker-attribution.md#multiword-cast-names`). The orchestrator container needs a
|
||||
rebuild.
|
||||
**Identity is the constraint now, not attribution.** 26 of 113 detected people carry an identity. 25 of
|
||||
those 26 are the single over-merged row (`caveats/speaker-attribution.md#identity-over-merge`). That caps
|
||||
this chapter near 23% named even with perfect balloon binding. Work identity before geometry.
|
||||
|
||||
Then, in order:
|
||||
|
||||
1. Rerun the chapter and re-read the named-speaker share. It will fall, and the lower number is the
|
||||
first honest one. Deciding whether to resume `script` on the old attributions or clear back to
|
||||
`dialogue` is open.
|
||||
1. Split the over-merged character row and dedupe the registry. `Lim Seonho` and `Seonho` are separate
|
||||
rows with overlapping aliases, so either name matches two rows and binds nothing. Needs the
|
||||
reversible-merge design (`caveats/audit-open.md#destructive-reconcile`) rather than a patch.
|
||||
2. Bind a balloon to a speaker by tail geometry, using the unused `det`/`seg` heads
|
||||
(`caveats/speaker-attribution.md#tail-is-not-geometry`). Until then multi-character panels have no
|
||||
speaker at all.
|
||||
3. Start Phase 2 from `ROADMAP.md`. Set SQLite `busy_timeout` before any concurrency work
|
||||
speaker at all, which is 40 of 95 lines here.
|
||||
3. Resolve a speaker answer across the whole dialogue window, not just the answering panel. The last 3
|
||||
unresolved refs are a description belonging to a neighbouring panel in the same 8-panel call.
|
||||
4. Start Phase 2 from `ROADMAP.md`. Set SQLite `busy_timeout` before any concurrency work
|
||||
(`caveats/audit-open.md#sqlite-locking`).
|
||||
|
||||
## The 2026-08-11 chapter run
|
||||
@@ -76,9 +74,9 @@ Two containers on homesrv had been dead for two weeks and are now running. `mang
|
||||
|
||||
## Open questions
|
||||
|
||||
Four Phase 1 items have no Vikunja task and were not created, because writing to the tracker was not
|
||||
asked for: the speaker contract fix, the verifier rules, the tracklet constraints, and the flag
|
||||
resolution path. Only [#203] existed and is now closed by `decisions/audit-phase1.md#unlocked-model-load`.
|
||||
Four Phase 1 items have no Vikunja task, because writing to the tracker was not asked for. They are the
|
||||
speaker contract fix, the verifier rules, the tracklet constraints, and the flag resolution path. Only
|
||||
[#203] existed and is now closed by `decisions/audit-phase1.md#unlocked-model-load`.
|
||||
|
||||
Three audit items are deliberately not done and are recorded as caveats rather than silently dropped:
|
||||
honest stage clearing, ComfyUI under the session mutex, and reversible identity merges. Each needs a
|
||||
|
||||
Reference in New Issue
Block a user