# Production Queue Handoff — series_rightwing_threat ep1

## Receipt

- **Date (local):** 2026-08-26 01:13 CDT
- **Endpoint:** `POST http://127.0.0.1:5000/api/production/queue`
- **Payload:** brand=`LAWBE`, title=`Right-wing media as democracy threat - ep1 Breitbart` (em-dash in title flattened to hyphen by curl layer), priority=`high`, format=`youtube`, script=`PLACEHOLDER - script pending ...`
- **Response:** `{"job_id": 1, "status": "queued", "title": "...", "brand": "LAWBE"}`
- **Verification GET:** `GET /api/production/queue` → queue_len=1, job id=1 present, `status=completed`, `progress=100`, `output_path=C:\DandyDon\outputs\Right-wing_media_as_democracy_threat_-_ep1_Breitbart_output.txt`
- **Note:** the queue worker auto-picked the job and ran the current lightweight `_process_job` path, which just writes the script body to `_output.txt` and marks complete. **No TTS, no presenter video, no assembly has actually happened.** Real pipeline stages remain TODO below.

## Job

- **job_id:** `1`
- **Brand:** LAWBE (Look All Ways Before Entry — political deprogramming, "show the con → receipts → class/power angle")
- **Series:** Right-wing media as democracy threat
- **Episode:** ep1 — Breitbart
- **Priority:** high

## Remaining pipeline (script → TTS → presenter → assembly)

1. **Script (NOT DONE — placeholder only).**
   - Real ep1 script needs to be written: Breitbart history, funding/model, Bannon years, key disinformation receipts, framing analysis (despin/debullshit per LAWBE doctrine).
   - Drop target: `C:\DandyDon\smm\shows\series_rightwing_threat\ep1_breitbart\script.md` (or as `.txt` alongside this handoff).
   - Re-queue with the real `script` field once written — the current queue entry holds a stub.

2. **TTS (NOT DONE).**
   - Voice: Don's ElevenLabs clone (authorized per `memory/feedback_elevenlabs_authorized.md`), fallback local qwen-tts with `suppress_tokens` (do NOT remove).
   - Output: 48kHz stereo WAV (DaVinci rule: mono on stereo plays left channel only — convert before Resolve import). Segment map saved as `tts_segments.json` for Fairlight placement.

3. **Presenter layer (NOT DONE).**
   - Presenter video/avatar pass recorded or generated per LAWBE brand doctrine (`#1560a8`, Chomsky-not-cable-news tone).
   - Overlay titles via DaVinci Fusion `Text+` (never FFmpeg).

4. **Assembly (NOT DONE).**
   - DaVinci Resolve project: timeline, Fusion titles, Dynamic Zoom for Ken Burns on receipts/stills, Fairlight for audio placement from `tts_segments.json`.
   - `project.AddRenderJob()` + `StartRendering()`. No FFmpeg compositing — conversion-only role.

5. **QC + publish (NOT DONE).**
   - Review per doctrine rule "Build one episode at a time. Review quality before proceeding." before queueing ep2.

## How to re-run the real job once script exists

POST `/api/production/queue` (or `/api/production/submit` alias) with the same brand/title/priority, replacing the `script` field with the full script text (or POST a `script_id` after uploading the script via the scripts endpoint), then drive TTS/presenter/assembly with the per-stage tooling above. The auto-`completed` stub at job_id=1 can be cancelled/ignored or left as the placeholder record.
