# 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 `/`, `_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///{pages,panels,audio, layers,clips}`. Nothing reads them. They are the rollback, not live data. - `rustfs` holds empty buckets. No mirror, no cutover.