{
  "status": "stream_ready_loop_pack_closed_until_human_yes",
  "canonical_namespace": "Sonic-Forage",
  "review_only": true,
  "manual_operator_start_required": true,
  "auto_stream_enabled": false,
  "auto_upload_enabled": false,
  "requires_human_approval": true,
  "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?",
  "master_loop": {
    "path": "docs/streaming/stream_ready/intergalactic_radio_master_loop_720p30_48k.mp4",
    "duration_seconds": 1080.074667,
    "minimum_bytes": 80000000,
    "shape": "1280x720_30fps_h264_aac_48khz_stereo",
    "maximum_bytes_before_github_reject": 100000000,
    "current_bytes": 90419864
  },
  "latest_owned_generated_addition": "docs/streaming/operator_drops/chat_spark_queue_013_manual_spark.mp4",
  "playlist": "docs/streaming/stream_playlist.txt",
  "stream_ready_manifest": "docs/streaming/stream_ready/stream_ready_manifest.json",
  "master_loop_manifest": "docs/streaming/stream_ready/master_loop_manifest.json",
  "builder_scripts": [
    "scripts/normalize_stream_playlist.py",
    "scripts/build_stream_ready_loop.py",
    "scripts/stream_kick_24_7.sh"
  ],
  "operator_doc": "docs/streaming/STREAM_READY_LOOP_PACK.md",
  "verifier_commands": [
    "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"
  ],
  "proof_paths": [
    "docs/streaming/STREAM_READY_LOOP_PACK.md",
    "docs/streaming/stream_playlist.txt",
    "docs/streaming/stream_ready/intergalactic_radio_master_loop_720p30_48k.mp4",
    "docs/streaming/stream_ready/stream_ready_manifest.json",
    "docs/streaming/stream_ready/master_loop_manifest.json",
    "scripts/normalize_stream_playlist.py",
    "scripts/build_stream_ready_loop.py",
    "scripts/stream_kick_24_7.sh",
    "docs/streaming/operator_drops/loop_reset_station_id_005.mp4",
    "docs/streaming/operator_drops/loop_reset_station_id_005.json",
    "docs/streaming/operator_drops/proof_hub_patrol_006.mp4",
    "docs/streaming/operator_drops/proof_hub_patrol_006.json",
    "docs/streaming/operator_drops/chat_spark_queue_007_manual_spark.mp4",
    "docs/streaming/operator_drops/chat_spark_queue_007_manual_spark.json",
    "scripts/build_chat_spark_prompt_card_007.py",
    "docs/streaming/operator_drops/chat_spark_queue_008_manual_spark.mp4",
    "docs/streaming/operator_drops/chat_spark_queue_008_manual_spark.json",
    "scripts/build_chat_spark_prompt_card_008.py",
    "docs/streaming/operator_drops/chat_spark_queue_009_manual_spark.mp4",
    "docs/streaming/operator_drops/chat_spark_queue_009_manual_spark.json",
    "scripts/build_chat_spark_prompt_card_009.py",
    "docs/streaming/operator_drops/oracle_poem_interrupt_010_receipt_orbit.mp4",
    "docs/streaming/operator_drops/oracle_poem_interrupt_010_receipt_orbit.json",
    "scripts/build_oracle_poem_interrupt_010.py",
    "docs/streaming/operator_drops/chat_spark_queue_012_manual_spark.mp4",
    "docs/streaming/operator_drops/chat_spark_queue_012_manual_spark.json",
    "scripts/build_chat_spark_prompt_card_012.py",
    "docs/streaming/operator_drops/chat_spark_queue_013_manual_spark.mp4",
    "docs/streaming/operator_drops/chat_spark_queue_013_manual_spark.json",
    "scripts/build_chat_spark_prompt_card_013.py"
  ],
  "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
  }
}
