# Stream-ready loop pack

Status: `stream_ready_loop_pack_closed_until_human_yes`

This pack turns the current Sonic-Forage / Afterparty Forge proof videos and operator drops into one normalized local MP4 loop for an awake operator to review before any manual streaming action. It exists to remove fragile concat-boundary failures; it does **not** start a stream, upload media, post launch copy, expose stream keys, or mutate cron jobs.

## What changed

- Playlist now points at one stream-ready master file: `docs/streaming/stream_ready/intergalactic_radio_master_loop_720p30_48k.mp4`.
- The master loop is `1280x720`, `30fps`, H.264 video with AAC stereo `48kHz` audio.
- The latest rebuild includes the owned/generated story drops, Chat Spark Queue card, Retro Forge arcade bumper, and `oracle_poem_interrupt_004.mp4` as review-only playlist candidates.
- The normalized source-item manifest is `docs/streaming/stream_ready/stream_ready_manifest.json`.
- The master-loop manifest is `docs/streaming/stream_ready/master_loop_manifest.json`.
- Rebuild scripts are repo-local:
  - `scripts/normalize_stream_playlist.py`
  - `scripts/build_stream_ready_loop.py`
- Dry-run/operator script consumes the repo-relative master pointer first, then falls back to concat playlist mode: `scripts/stream_kick_24_7.sh`

## Operator setup commands

```bash
cd /opt/data/workspace/projects/afterparty-forge-explainer-site
PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py
ffprobe -v error \
  -show_entries format=duration,size \
  -show_entries stream=index,codec_type,codec_name,width,height,r_frame_rate,sample_rate,channels \
  -of json docs/streaming/stream_ready/intergalactic_radio_master_loop_720p30_48k.mp4
git diff --check
```

Expected highlights:

- `VERIFY OK afterparty explainer site`
- video stream is `h264`, `1280x720`, `30/1`
- audio stream is `aac`, `48000`, `2` channels
- duration is about `566.517` seconds
- size is about `88 MB` and remains below GitHub's 100 MB hard limit
- `git diff --check` emits no whitespace errors

## Manual review path

1. Open the proof hub: `https://sonic-forage.github.io/afterparty-forge-explainer-site/`.
2. Review the site cards for the operator audio drops, YouTube pack, launch control room, and closed-gate language.
3. Locally audition the master file in a media player, not a public broadcast tool.
4. Confirm the exact stream destination, stream key handling, and public copy with an awake human.
5. Only after that separate approval, use the stream-ready file as an input to the operator's existing stream toolchain.

## Human approval question

Do you approve an awake operator manually using the stream-ready master loop file in the Sonic-Forage streaming toolchain after confirming the current stream key and destination?

## Blocked without approval

- starting or restarting a public livestream
- posting or scheduling public launch copy
- uploading video to YouTube or social platforms
- using or exposing stream keys, RTMP URLs, tokens, or private credentials
- recording private audio/video or moving private media
- starting GPU, training, model-download, or paid API jobs
- claiming revenue, sponsorship, affiliation, attendance, or live external results
- mutating cron jobs or adding unattended broadcast automation

## Closed gates

- public_posting=false
- outreach=false
- paid_promotion=false
- claim_revenue=false
- claim_openai_affiliation=false
- youtube_upload=false
- publishes_stream=false
- records_audio=false
- uploads_private_media=false
- starts_gpu=false
- starts_paid_api=false
- downloads_models=false
- starts_training=false
- submits_hackathon=false
- spend=false
- secret_exposure=false
- mutates_cron=false

## Rebuild command

Rebuild only after a human-approved operator decides the local source playlist should be refreshed:

```bash
cd /opt/data/workspace/projects/afterparty-forge-explainer-site
PYTHONDONTWRITEBYTECODE=1 python3 scripts/build_stream_ready_loop.py
PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py
```

No generated frame cache is required or committed for this pack; the committed media are reviewed stream-ready MP4 outputs and parseable manifests only.
