ca4661763c
build_scene already dropped an unassigned detection from `characters` and `present`, so an extra never reached the cast list. Its ACTION did. `actions` was built from every detection, and that list is what the script prompt renders and what the verifier uses as evidence, so "standing at the window" arrived as a fact about the panel with no character attached and the verifier confirmed it, because the action really was in the blob. Skip has_face is False, the same gate and the same fail-open semantics as enrollment. Self-check covers all three cases: a real cast member's action survives, a faceless one's does not, and a detection from a panel where the detector never ran keeps its action. decisions/identity-bbox.md#extras-gate-consumers Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
48 lines
3.8 KiB
Markdown
48 lines
3.8 KiB
Markdown
# 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`](audit-phase1.md#speaker-ref-is-canonical) | closed |
|
|
| [Script verification must not fail on sentence-initial capitals or short quotes](audit-phase1.md#verifier-false-positives) | closed |
|
|
| [Tracklet links are transitive over similarity, never across a hard constraint](audit-phase1.md#tracklet-hard-constraints) | closed |
|
|
| [A detected face takes an identity only when it falls inside that character's box](audit-phase1.md#gated-face-pairing) | closed |
|
|
| [A 409 from the GPU mutex is a queue signal, not a stale lease](audit-phase1.md#no-lease-stealing) | closed |
|
|
| [Correctness flags resolve by flag id, and never block autonomous TTS](audit-phase1.md#flag-resolution) | closed |
|
|
| [An out-of-range resolver index is `unresolved`, never a new character](audit-phase1.md#hallucinated-index) | closed |
|
|
| [The session manager holds no lock across a model load](audit-phase1.md#unlocked-model-load) | closed |
|
|
| [One bucket per artifact class, not everything under `manga`](storage-layout.md#bucket-per-artifact) | closed |
|
|
| [The orchestrator creates missing buckets at startup](storage-layout.md#ensure-buckets) | closed |
|
|
| [RustFS is staged, not adopted](storage-layout.md#rustfs-staged) | open |
|
|
| [A model guess is never labelled `tail`](speaker-attribution.md#no-fake-tail) | closed |
|
|
| [The model's speaker answer is resolved against what the prompt showed](speaker-attribution.md#prompt-label-answers) | closed |
|
|
| [An unpaired set-of-mark label grounds nothing](speaker-attribution.md#unpaired-mark) | closed |
|
|
| [An interjection is not a name and not a misquote](speaker-attribution.md#interjection-false-positive) | closed |
|
|
| [Cast names enter the verifier tokenized](speaker-attribution.md#multiword-cast-names) | closed |
|
|
| [Clearing a stage strips the vision blob it wrote](storage-layout.md#clear-vision-blob) | closed |
|
|
| [The shipped 72.7s gap was a stream copy across mixed frame rates](chapter-assembly.md#mixed-rate-stream-copy) | closed |
|
|
| [xfade offsets come from `min(video, audio)`, never `format=duration`](chapter-assembly.md#offsets-from-min-stream) | closed |
|
|
| [A vision `bbox` is gemma's 0-1000 grid, converted to pixels at `/vision`](identity-bbox.md#bbox-is-normalized) | closed |
|
|
| [Assembly verifies its own output instead of trusting ffmpeg's exit code](chapter-assembly.md#check-assembled) | closed |
|
|
| [The single-item passthrough is not the assembly bug](chapter-assembly.md#passthrough-innocent) | void |
|
|
| [A stage result proves nothing until the worker is newer than the edit](identity-bbox.md#stale-worker-invalidates) | closed |
|
|
| [A detection with no detected face never enrolls or binds](identity-bbox.md#face-gates-enrollment) | closed |
|
|
| [A resolver NONE mints an anonymous character, it does not clear the crop](identity-bbox.md#none-mints-an-anonymous-character) | closed |
|
|
| [The extras gate runs at enrollment and at narration, not at the speaker prompt](identity-bbox.md#extras-gate-consumers) | closed |
|