Audit second pass: cross-repo contract findings

Read the workpc workers against the homesrv orchestrator and checked the
first-pass audit against source. Report only, no code changed.

Adds 4 P0, 6 P1, and 13 P2 findings to AUDIT.md, most of them in the seam
between the two repos:

- worker_scene reads dialogue `speaker` as a local id, but the orchestrator
  already rewrote it to a character_id, so all narration says "Someone"
- the script verifier fails valid narration on sentence-initial capitals and
  on short quotes, which halts the chapter
- correctness flags block TTS with no path to clear them when GATES is off
- session_manager can orphan a llama-server that keeps its VRAM

Confirms four first-pass claims in source: tracklet gender enum, missing
action evidence, dropped verifier feedback, 409 lease stealing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 09:31:20 +04:00
parent ffeda47fd2
commit 6d9df5bf2f
2 changed files with 809 additions and 60 deletions
+39 -60
View File
@@ -1,75 +1,54 @@
# HANDOFF: repo reconstructed from agent transcripts (2026-08-11)
# HANDOFF: audit second pass (2026-08-11)
## What was asked
The working copy at `/home/kami/Programs/n8n-worker` was deleted with `rm`, including `.git`.
This repo is the workpc GPU-compute half of the manga pipeline. The ask was to rebuild it from
the transcripts on disk, at minimum the transport layer and the pipeline flow.
Review `AUDIT.md` (untracked, first pass, 565 lines) and add anything missing.
## Sources used
No backup and no remote survived. `~/.local/share/Trash` is empty. No copy exists under
`/home/kami`, `/mnt/D`, or `/mnt/server`. Gitea
(`/mnt/server/mnt/hdd2/gitea/git/repositories/`) holds only correx, hexis, maven,
model-training, muzick, orchestra, and test-e2e. There is no `n8n-worker` mirror.
## What was done
Read both halves of the pipeline and checked the first pass against source. No code changed.
No GPU work, no pipeline run, no tests executed.
Reconstruction replays three histories into one timeline, ordered by timestamp:
Files read in full:
- workpc: `worker_vision.py` (1008), `worker_identity.py` (322), `worker_script.py` (300),
`worker_scene.py` (170), `worker_tts.py` (241), `session_manager.py` (238), `transport.py` (216),
`worker_crop.py` (first 120 of 359).
- homesrv `/mnt/server/home/kami/docker-apps/manga-infra/orchestrator/`: `service.py` (2048),
`db.py` (815), `session_proxy.py` (302), `correctness.py` (116), `tracklets.py` (121),
`minio_layout.py` (105), `grouping.py` (75).
1. Claude Code transcripts, 25 sessions in
`~/.claude/projects/-home-kami-Programs-n8n-worker/*.jsonl`. Contributes Write and Edit
content, full-file Read results, and `@`-mention attachments.
2. Codex rollouts, 5 sessions with `cwd=/home/kami/Programs/n8n-worker` under
`~/.codex/sessions/2026/07/{13,15,16,18}/rollout-*.jsonl`. Contributes 26 `apply_patch`
blocks. The 4 that the log marks `Script failed` are skipped. These carry the 2026-07-18
correctness work (`_dialogue_envelope`, `_normalize_claims`, `_annotate_speaker_methods`,
`SOM_ATTRIBUTION=1`) that exists in no Claude transcript.
3. `~/.claude/file-history/<session>/<hash>@vN` pre-edit blobs, used as cross-checks only.
Result: `AUDIT.md` grew from 565 to 745 lines. New section `## Second-pass findings (2026-08-11)`
at line 566. 4 new P0, 6 new P1, 13 P2, plus 5 additions to the Phase 1 list and 1 to the
acceptance criteria.
Scripts live in
`/tmp/claude-1000/-home-kami-Programs-n8n-worker/6a35d5d8-9f44-4412-955c-9cf088737ad5/scratchpad/`.
`replay2.py` is the merged replay. `codex.py` extracts and applies codex patches. `backups.py`
compares against file-history. `recon_final/_log.json` holds the per-file event log.
Four first-pass claims were confirmed in source and are not restated in the new section:
## Verification
- Replayed to 2026-07-18T13:13:44Z, line counts match the `wc -l` recorded in the transcript at
that moment, for all 10 files it covered. crop 326, identity 314, layers 99, render 996,
scene 159, script 300, tts 231, vision 871, session_manager 238, transport 216.
- Byte sizes match the `ls -l` recorded by the same command. AGENTS.md 867, CLAUDE.md 3678,
manga-recap-pipeline-spec.md 11413, plan.md 16511, spec-v3.md 26170. `.gitignore` is 53.
- 18 files are byte-identical to their newest file-history blob. The 4 that differ (render,
script, tts, spec-v3) differ only by edits made after that blob was taken.
- `python3 -m py_compile *.py scripts/*.py attic/*.py` passes. `bash -n` passes on all 3 shell
scripts. Runtime self-checks such as `python worker_vision.py` were NOT run, because `.venv/`
is gone.
- tracklet gender enum: `tracklets.py:43` uses `male|female`, vision emits `m|f|unknown`.
- missing action evidence: `worker_scene.py:85` emits `action`, `correctness.py:91` reads `actions`.
- dropped verifier feedback: `worker_script.py:13-23` defines neither field.
- 409 lease stealing: `session_proxy.py:40-49`.
## Recovered (live tree)
Workers `worker_{crop,vision,identity,scene,script,tts,layers,render}.py`, the GPU mutex
`session_manager.py`, `transport.py`, helpers `bubble_detect.py`, `face_detect.py`,
`collage.py`, `test_vision_parse.py`, `start_workers.sh`, `systemd/install.sh`,
`scripts/{analyze_video_frames.sh,pick_tts_voice.py}`, `requirements.txt`, `.gitignore`,
and the docs `AGENTS.md`, `CLAUDE.md`, `plan.md`, `spec-v3.md`, `spec-correctness.md`,
`manga-recap-pipeline-spec.md`, `identity-rework-task.md`.
`attic/` holds files that had been deleted from the tree before the `rm`. They are kept but not
live: `worker_ocr.py`, `worker_parse.py`, `plan-workpc.md`, `char-recognition.md`.
## Top 4 new findings
1. `worker_scene.py:78` reads `speaker` as a local id, but `correctness.py:47` already rewrote it
to a character_id. Every lookup returns None, so all narration says `Someone`.
2. `correctness.py:106-115` fails valid narration on sentence-initial capitals and on short
quotes, and `service.py:1384-1386` turns that into a halted chapter.
3. `service.py:1419-1423` blocks TTS on correctness flags that only `/review/approve` can clear,
while `GATES` defaults to off (`service.py:312`).
4. `session_manager.py:108-119` can orphan a llama-server that keeps its VRAM.
## Still open
- `.venv/` is gone. Rebuild with
`python -m venv .venv && .venv/bin/pip install -r requirements.txt`. The ROCm torch wheel is
not pinned in requirements.txt, so install it the way workpc had it.
- `dots.tts/` (gitignored external checkout) and `legacy/` (pre-rewrite workers, moved there
2026-07-13) are not recoverable from transcripts. Re-clone dots.tts if TTS is needed.
- `RESUME_SPEC.md`, `pipeline-design-notes.md`, and `spec-v2.md` are unrecoverable. Neither agent
ever read them in full. All three were already deleted from the working tree as of 2026-07-17.
- Git history is gone. A fresh `git init` plus one commit replaces it. Old commits are not
recoverable.
- Two replay gaps were left unpatched. One Edit MISS in `worker_render.py` on 2026-07-14, and one
orphan Edit against `attic/plan-workpc.md` on 2026-07-13. Both files were later replaced by a
full-file snapshot, so the final content stays anchored.
- Edits made outside Claude and codex after 2026-07-18T14:35Z (the last recorded write) cannot be
detected. `unknown:` whether any exist.
- Nothing from this session is half-finished. `AUDIT.md` is complete as written.
- No finding has been fixed. All are report-only.
- `AUDIT.md` is still untracked as of this session's start. Decide whether it belongs in git.
- Prose linter reports ~97 style hits in `AUDIT.md`. Almost all are in the first-pass sections
(lines 1-565), which were left as the author wrote them.
- Carried over from the earlier reconstruction handoff of the same day:
- `.venv/` is gone. Rebuild it, then install the ROCm torch wheel the way workpc had it.
- `dots.tts/` and `legacy/` are not recoverable from transcripts.
- `RESUME_SPEC.md`, `pipeline-design-notes.md`, and `spec-v2.md` are unrecoverable.
## Next command
```
cd /home/kami/Programs/n8n-worker
python -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python worker_vision.py # per-file __main__ self-checks, then ./start_workers.sh
sed -n '566,745p' AUDIT.md # read the new section
```
Then pick the Phase 1 order at `AUDIT.md:511` as amended at the end of the new section.