Files
manga-recap-pipeline/HANDOFF.md
T
kami 36c7cc946f Record the script verifier failure on two-word names
The baseline run died in `script` at 87/116. Every lost beat cites
`unsupported-proper-noun: ['Choi', 'Haeseon']`, because verify_script puts the
full name in the allowed set and then tests single capitalized tokens against
it. No fix applied.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XD7cAy81MZrc7gCr6aZGWr
2026-08-11 23:02:06 +04:00

72 lines
3.3 KiB
Markdown

# HANDOFF, 2026-08-11 session
Live state lives in `NEXT.md`. This file is only what this session did.
## Asked
1. Add the buckets to rustfs.
2. Fix the bucket saving on the orchestrator side.
3. Run the title recap.
Mid-session: check `manga.kvmx.ru`, and cross-check whether the run got dialogue and identities right.
## Changed
Workers, `/home/kami/Programs/n8n-worker`, branch `restore-runtime`:
- `worker_crop.py` panels -> `s3://panels/`
- `worker_tts.py` wavs -> `s3://audio/`
- `worker_layers.py` layers -> `s3://layers/`
- `worker_render.py` clips and `chapter.mp4` -> `s3://video/`
- `decisions/storage-layout.md`, `caveats/speaker-attribution.md`, indexes, `JOURNAL.md`, `NEXT.md`
Orchestrator, `/mnt/server/home/kami/docker-apps/manga-infra/orchestrator`:
- `minio_layout.py` per-artifact bucket constants, `BUCKETS`, `parse_key` accepts any of them
- `service.py` `_s3_delete_prefix` takes `<bucket>/<prefix>`, `_stage_s3_prefixes` no longer slices,
new `_ensure_buckets` in the lifespan
- `test_minio_layout.py` updated, one test added
Infrastructure, homesrv:
- six buckets created on `rfs` (rustfs, `127.0.0.1:9010`)
- `manga-fetch` started, exited 2 weeks, `/job/create` fails without it
- `manga-web` started, exited 2 weeks, `manga.kvmx.ru` -> nginx -> `localhost:8083`
- orchestrator rebuilt and restarted
- `mc` aliases `mio` and `rfs` now exist on homesrv
## Measured
Job `778297bc-e7ce-439d-91b5-8a027060d17f`, chapter `7c944dd4-e972-42c7-ba60-9f6939548e80`,
"Teto X Egen", 116 panels.
- 109 orchestrator tests pass. `worker_crop.py`, `worker_tts.py`, `worker_render.py` self-checks pass.
`worker_layers.py` self-check fails on the missing `legacy/qwen_layered_workflow.json`, which
predates this session.
- buckets after the run: `raw` 64MiB/79, `panels` 101MiB/116, `manga` 366MiB/491, `audio` `layers`
`video` still empty because the run had not reached those stages.
- stage times: crop 85s, vision ~4min, identity ~1min, reconcile ~7min, dialogue ~8min.
- 24 of 81 speech lines resolve to a named character, 30%.
- 26 of 113 detected people got an identity, 23%, and 25 of the 26 went to one character.
- 3 of 3 sampled two-character panels attribute both speakers to the wrong person.
## Open
- The `script` stage failed at 87/116 with `unsupported-proper-noun: ['Choi', 'Haeseon']` on 28 beats.
Not OOM, the worker stayed healthy. One-line fix named in
`caveats/speaker-attribution.md#multiword-name-verifier`. Not applied.
- The run stopped in `direct` at 113/116. `scene script tts layers render assemble` never ran. Resume:
Since then it reached `scene` 116/116 and failed in `script`. Fix the verifier, then:
```bash
ssh kami@192.168.1.104 "curl -s -X POST http://127.0.0.1:9090/stage/clear -H 'Content-Type: application/json' -d '{\"job_id\":\"778297bc-e7ce-439d-91b5-8a027060d17f\",\"stage\":\"script\"}'"
ssh kami@192.168.1.104 "curl -s -X POST 'http://127.0.0.1:9090/job/resume?job_id=778297bc-e7ce-439d-91b5-8a027060d17f'"
```
- Speaker attribution is wrong in multi-character panels and the fix is not written
(`caveats/speaker-attribution.md`). No code was changed for it.
- Objects from the 2026-07-17 run still sit under `manga/<manga_id>/<chapter_id>/{pages,panels,audio,
layers,clips}`. Nothing reads them. They are the rollback, not live data.
- `rustfs` holds empty buckets. No mirror, no cutover.