# Chiron 10-card Batch-32 Forward Pass — Plan

Text companion for [chiron-batch32-plan](https://drwu-htmls.vercel.app/chiron-batch32-plan). Built 2026-07-07, reconciled 2026-07-08.

## RECONCILED 2026-07-08

The batch-32 request is being fulfilled by a peer Claude Code session (`13c5a020-66c4-4a10-8c12-e692b0a327df`, opus-4-7) that is autonomously discovering + rendering the full chiron intuition backlog under the `sourceaudio-AUTO-*-10card` naming pattern. Ground truth at reconcile time:

- **40 routes LIVE** on drwu-htmls.vercel.app returning HTTP 200
- **1 rendering right now**: `the-system-was-built-for-u` (PID 13622, `source_audio_render.py --max-slots 10`)
- **1 staged**: `forced-to-face-demon`
- **62 of 64** AUTO- render dirs already have MP4 on disk

This session did NOT launch a competing orchestrator to avoid Vercel deploy budget + politeness gate + disk contention. The 34 queue items (parent + discovery + 32 slots) have `decision` records logged referencing the peer session as fulfiller.

## The ask, unpacked

Produce 32 new Chiron Intuition 10-card renders, one at a time, staggered so the YouTube politeness gate never trips an IpBlock. Source list = freshest 32 uploads from the [@chironintuition](https://www.youtube.com/@chironintuition) channel, filtered against the 16 already shipped in `_batch16.json` and the 32 live routes under `public/chiron-sourceaudio-*-10card`.

## Hard gates in force

- **feedback_one_at_a_time_no_bulk_complete**. Batching more than one render into a single session pass is forbidden. The ladder pulls one, ships one, moves on.
- **feedback_youtube_fetch_politeness_hard_gate**. Raw yt-dlp or youtube-transcript-api calls are forbidden. Every fetch routes through `~/.claude/skills/_shared/yt_polite.py`: serialized via flock, spaced 45-90s with random jitter, rolling budget cap. PreToolUse hook enforces this at the shell layer.
- **feedback_chiron_tencard_2x5_rolling_window_hard_gate**. Only the 10-slot 2×5 rolling FIFO (drop-oldest-5 on the 11th distinct card) is allowed. No gap-based single-card swap.
- **feedback_chiron_tracker_strict_voice_and_render_rules**. Marking a `_sourceaudio` render as creator voice without a listen-check is forbidden. All 32 land as `NEEDS VERIFY` until proven.

## The ladder (queue snapshot 2026-07-07)

| ID | Role | Status |
| --- | --- | --- |
| `q-2026-07-07-083fd4` | PARENT: batch-32 forward-pass. Full plan + hard-gate roll-up. | queued |
| `q-2026-07-07-5264de` | STEP 1: discovery. Runs `fetch_channel_top.py --seed https://youtu.be/6rZVAdKBH9I --order recent --top 48 --slug chironintuition-batch32` through the polite gate, filters, emits `_batch32.json`. | queued |
| `q-2026-07-07-2438b9` … +31 | Render slots 1/32 through 32/32. Each pulls the first `status=queued` entry from `_batch32.json`, renders via `chiron-tencard-reading` pipeline, ships via /ship gate. | queued (executes after discovery lands `_batch32.json`) |

## Pipeline for each render (per slot)

1. Read next `status=queued` entry from `_batch32.json`. Cards + title + slug already resolved by discovery.
2. Download source audio for the YouTube ID through `yt_polite.py` (45-90s stagger baked in).
3. Transcribe locally (Whisper), align with card pull-order beats, run `source_audio_render.py --max-slots 10`.
4. Generate the reading PDF (`reading_pdf.py`) + card-guide PDF (`teaching_pdf.py`).
5. Ship page to `public/chiron-sourceaudio-<slug>-10card`, run the /ship gate (kid FAB + sibling .md + Vercel 200), verify.
6. Mark `_batch32.json` entry `status=done`. Update [chiron-video-tracker](https://drwu-htmls.vercel.app/chiron-video-tracker).

## How to watch the ladder

Ladder status is written by `~/.claude/skills/no-quit-shift/queue.py status`. As slots progress through the shift states, this plan page updates on the next redeploy. The tracker at [chiron-video-tracker](https://drwu-htmls.vercel.app/chiron-video-tracker) reflects each completed render inline within the tencard-count section.

## Ship gate

Every completed render must exit the /ship script green: one real kid button, sibling `.md`, Vercel deploy, HTTP 200 on every route, proof block. That is the completion contract for each of the 32.

Part of [drwu-htmls.vercel.app](https://drwu-htmls.vercel.app/).
