# Stream Rehearsal Checklist — Manual Run Only

Status: `stream_rehearsal_checklist_manual_run_only_closed_until_human_yes`

This checklist turns the stream-ready loop pack into an operator-executable dry rehearsal. It is **not** a broadcast plan and does not start OBS, RTMP, Kick, YouTube, X/Spaces, Modal, RunPod, GPU, training, paid APIs, cron jobs, recording, uploads, outreach, payment links, or revenue actions.

## Exact human approval question

Do you approve running this Sonic-Forage stream rehearsal locally and manually, after reviewing the exact screen, audio route, browser tabs, stream destination, copy, and proof paths, while keeping public broadcast/upload/payment/outreach actions closed?

## Clean setup commands

From the repository root:

```bash
cd /opt/data/workspace/projects/afterparty-forge-explainer-site
PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py
PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_static_surface.py
git diff --check
git status --short --branch
```

Optional media inspection only; this reads the local MP4 and does not transmit it:

```bash
ffprobe -v error -show_entries format=duration:stream=codec_name,width,height,r_frame_rate,sample_rate,channels -of json docs/streaming/stream_ready/intergalactic_radio_master_loop_720p30_48k.mp4
```

## Manual dry rehearsal path

1. Open the proof hub locally or on canonical Pages: `https://sonic-forage.github.io/afterparty-forge-explainer-site/`.
2. Scroll to **STREAM-READY LOOP PACK** and confirm the copy says `manual_operator_start_required=true` and `auto_stream_enabled=false`.
3. Open `docs/streaming/STREAM_READY_LOOP_PACK.md` and confirm the master loop path is `docs/streaming/stream_ready/intergalactic_radio_master_loop_720p30_48k.mp4`.
4. Play the master loop locally in a normal media player at low volume. Do not connect OBS/RTMP or any broadcast destination.
5. Show the verifier output: `STATIC SURFACE OK` and `VERIFY OK afterparty explainer site`.
6. Show the closed-gate language in this checklist and ask the exact approval question above before any real public rehearsal or stream setup.

## 30-second screen path

- 00:00 — Proof hub hero: "Afterparty Forge 2045" and Sonic-Forage links.
- 00:06 — Launch art/control room: QR flyer and manual runbook proof.
- 00:12 — Operator audio drops: review-only audio artifacts.
- 00:18 — Stream-ready loop pack: master loop MP4 and closed gates.
- 00:24 — Terminal: verifier commands and clean git status.
- 00:30 — Stop: ask for human approval before connecting any external destination.

## Expected payload fields

The manifest at `docs/data/stream-rehearsal-checklist.json` must include:

- `status=stream_rehearsal_checklist_manual_run_only_closed_until_human_yes`
- `canonical_namespace=Sonic-Forage`
- `manual_rehearsal_required=true`
- `auto_stream_enabled=false`
- `auto_upload_enabled=false`
- `auto_record_enabled=false`
- `requires_human_approval=true`
- proof paths for this checklist, the stream-ready loop manifest, the master MP4, the static verifier, and the site index
- closed gates where `publishes_stream=false`, `records_audio=false`, `uploads_private_media=false`, `starts_gpu=false`, `starts_paid_api=false`, `claim_revenue=false`, `claim_openai_affiliation=false`, `mutates_cron=false`, and `secret_exposure=false`

## Blocked without approval

- Starting, scheduling, or testing a public livestream, Twitter/X Space, YouTube Live, Kick, OBS RTMP publish, or restream endpoint.
- Uploading videos, audio drops, captions, thumbnails, private media, or datasets.
- Recording a new stream, microphone input, camera input, or private screen share.
- Creating checkout/payment links, invoices, paid promotion, sponsorship claims, customer claims, or revenue claims.
- Starting GPU jobs, paid APIs, model downloads, training, Modal/RunPod jobs, or cron mutations.
- Printing or displaying `.env`, tokens, stream keys, passwords, wallet material, private dataset contents, or secret manager screens.

## Failure recovery

- If verifier output fails, stop the rehearsal and fix the repo-local proof path or manifest before showing it.
- If audio/video playback fails, show the doc and ffprobe output only; do not improvise by uploading the media to a third-party player.
- If any private tab or secret-bearing UI is visible, stop screen sharing, close it, and restart the proof path from the static hub.
- If an operator wants to go live, stop and require a new awake approval with the exact destination, key handling, copy, media, and fallback plan.

## Post-demo cleanup

- Close local media players and browser tabs that displayed proof artifacts.
- Confirm no broadcast app is connected to an RTMP/Space/Live destination.
- Rerun `git status --short --branch`; no rehearsal sidecar should be generated or committed.
- Leave public/commercial/media/model/cron gates closed until a separate human yes.

## Closed-gate summary

`public_posting=false`, `publishes_stream=false`, `youtube_upload=false`, `records_audio=false`, `uploads_private_media=false`, `starts_gpu=false`, `starts_paid_api=false`, `downloads_models=false`, `starts_training=false`, `claim_revenue=false`, `claim_openai_affiliation=false`, `payment_links=false`, `outreach=false`, `mutates_cron=false`, `secret_exposure=false`.
