Files
manga-recap-pipeline/HANDOFF.md
T
kami 54c456801a Split artifacts across per-class buckets, record the baseline run
Panels, wavs, layers, clips, and the chapter mp4 leave the `manga` bucket for
`panels`, `audio`, `layers`, and `video`. The key under the bucket is unchanged,
so every reader that derives the bucket from the first path segment keeps
working. The orchestrator half moves in the same commit, per invariant 7.

The 2026-08-11 chapter run proves the split for `raw` and `panels` and produced
the first quality read on speaker attribution, which is wrong in every sampled
multi-character panel.

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

2.8 KiB

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 run stopped in direct at 113/116. scene script tts layers render assemble never ran. Resume:

    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.