ff6a512630
Working tree (including .git) was lost to an rm. Rebuilt by replaying Write/Edit/ Read/attachment events from 25 Claude sessions and 22 successful codex apply_patch blocks into one timestamp-ordered timeline. Verified against ground truth recorded in the transcripts: wc -l on 10 files and ls -l on 5 files at 2026-07-18T13:13:44Z both match exactly; 18 files are byte-identical to their newest ~/.claude/file-history blob. See HANDOFF.md for sources, gaps, and how to rebuild .venv. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
26 lines
1.8 KiB
Markdown
26 lines
1.8 KiB
Markdown
# Correctness status — worker side
|
|
|
|
Audit of `plan.md` against the actual code (2026-07-18). Most of the plan is **implemented**; this file
|
|
records only what's verified done and the remaining calibration work, so nobody re-does finished work. Orchestrator
|
|
counterpart: `/mnt/server/home/kami/docker-apps/manga-infra/orchestrator/spec-correctness.md`.
|
|
|
|
### #5 region-grounded dialogue — code done, calibration ongoing
|
|
Set-of-mark is now the **default path** (`SOM_ATTRIBUTION="1"`, `worker_vision.py:31`; the "off by
|
|
default" comment at `:22` is stale — fix it). Residual is per-title threshold calibration on real
|
|
chapters, not a code gap. Detector-failure vs zero-regions are already distinct (`_set_of_mark`).
|
|
|
|
## Verified done (was in plan/earlier drafts as TODO — do not redo)
|
|
- #10 cross-window direction continuity: the grouping pass emits `continues_previous`; the first row
|
|
carries it through `/direct/window`, and a true edge forces `new_scene=false`. The self-check covers
|
|
both a continuing window and the chapter-start guard.
|
|
- Script self-check (`python worker_script.py` passes). #2 confidence + `speaker_method` reach the scene
|
|
graph (`worker_scene.py:80-81`). H3/#3 fail-loud: `/dialogue` and `/dialogue/window` return a status
|
|
envelope (`_dialogue_envelope`) and skip dropped panels instead of manufacturing silent-empty.
|
|
- #4 solo assignment is a 0.7-confidence prior with `speaker_method=solo_prior`, not unconditional.
|
|
- #6 typed name claims emitted (`_normalize_claims`), roster is hints-only.
|
|
- #7 Tier-2 `/vision/resolve` sends candidate **reference images** (≤3 each), judges face-first, returns
|
|
open-set `state: known|new|unresolved`.
|
|
|
|
- #8 webtoon fragments remain independent and retain source bboxes; `context_fragment_links` emits
|
|
contextual links instead of the crop endpoints destructively stacking them.
|