# SUPERSEDED — Python → TypeScript port map

Parts of this legacy Python pipeline have been clean-room ported into
`src/video/assemble/` (and siblings). **Superseded scripts get bug fixes in the
TypeScript port ONLY** — the Python here is kept as the porting reference for
the behaviors that have not been ported yet, and will be archived once those
land. Each TS module's header documents its source script and any deliberate
deviations.

> Known staleness in the Python: several scripts hardcoded `gemini-2.0-flash`,
> which the API has retired (404). Those strings have been bumped to the
> repo-default `gemini-3.5-flash` so the scripts still *run*, but the TS ports
> are the maintained path.

## Fully superseded

| Legacy script | TypeScript replacement |
|---|---|
| `bunty_narration_check.py` | `src/video/assemble/qa-narration.ts` (local checks) + `qa-narration-vision.ts` (`check_slide` Gemini-Vision) |
| `bunty_image_filter_check.py` | `src/video/assemble/qa-image-filter.ts` (prompt heuristics) + `qa-image-vision.ts` (`check_image` Gemini-Vision) |
| `bunty_dialogue_lint.py` | `src/video/assemble/qa-dialogue-lint.ts` |
| `bunty_animate_slides.py` | `src/video/assemble/animate-slides.ts` |
| `ffmpeg_wrapper.py` | `src/video/assemble/ffmpeg.ts` (+ `audio-utils.ts`) |
| `extract_pdf_slides.py` | `src/video/assemble/pdf.ts` |
| `generate_music.py` | `src/video/assemble/music.ts` (and the `soundtrack` audio-platform backends) |
| `generate_title_card.py` | `src/video/assemble/title-card.ts` + `text-card.ts` |
| `stitch_bunty.py` | `src/video/assemble/stitch.ts` (concat demuxer/filter + music-bed mix; `nex_assemble.py` collapsed into the same module) |

## Partially superseded

| Legacy script | Ported | Still Python-only |
|---|---|---|
| `generate_tts.py` | core text→speech (`assemble/tts.ts`, `tts-elevenlabs.ts`), transcript loading incl. SEALCAM+ + edits (`assemble/transcript.ts`), combined-track concat + silence padding (`assemble/audio-concat.ts`) | conductor / sync-to-slides re-timing, bake-narration / speech-to-speech swap, per-speaker multi-voice synthesis (multi-voice scenes flatten to one voice in TS) |

## Not (yet) ported — still the live reference

Everything else in this directory (`analyze_video.py`, `parallel_video_gen.py`,
the `db*.py` stores, character/campaign tooling, `stitch_video.py`,
`ugc_*.py`, …) has no TS equivalent and remains the working implementation for
the `video-replicator` legacy modes. The `check:skill-frontdoor` guardrail
deliberately allows this skill's docs to reference these scripts.
