{
  "status": "radio_takeover_signoff_checklist_manual_review_only_closed_until_human_yes",
  "canonical_namespace": "Sonic-Forage",
  "canonical_repo": "Sonic-Forage/afterparty-forge-explainer-site",
  "canonical_pages": "https://sonic-forage.github.io/afterparty-forge-explainer-site/",
  "review_only": true,
  "manual_review_required": true,
  "manual_signoff_required": true,
  "manual_aftercare_required": true,
  "manual_show_approval_required": true,
  "requires_human_approval": true,
  "auto_post_enabled": false,
  "auto_upload_enabled": false,
  "auto_stream_enabled": false,
  "auto_record_enabled": false,
  "auto_payment_enabled": false,
  "auto_outreach_enabled": false,
  "auto_gpu_enabled": false,
  "auto_paid_api_enabled": false,
  "auto_training_enabled": false,
  "auto_cron_mutation_enabled": false,
  "provider_credential_check": false,
  "voice_to_shell": false,
  "secret_exposure": false,
  "human_approval_question": "Do you approve using this Sonic-Forage radio takeover signoff checklist to choose zero or one local/manual next route after the aftercare card is rechecked?",
  "signoff_questions": [
    {
      "question": "Did the operator reopen the radio takeover aftercare card before selecting any next route?",
      "proof_path": "docs/radio/RADIO_TAKEOVER_AFTERCARE_CARD.md",
      "expected_signal": "radio_takeover_aftercare_card_manual_review_only_closed_until_human_yes"
    },
    {
      "question": "Did the operator reopen the listener handoff checklist and keep the route local/manual?",
      "proof_path": "docs/radio/RADIO_TAKEOVER_LISTENER_HANDOFF_CHECKLIST.md",
      "expected_signal": "radio_takeover_listener_handoff_checklist_manual_review_only_closed_until_human_yes"
    },
    {
      "question": "Did the operator rerun the aggregate verifier before claiming the proof hub is ready?",
      "proof_path": "scripts/verify_site.py",
      "expected_signal": "PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py"
    },
    {
      "question": "Did the operator confirm the stream rehearsal remains manual-run-only?",
      "proof_path": "docs/streaming/STREAM_REHEARSAL_CHECKLIST.md",
      "expected_signal": "stream_rehearsal_checklist_manual_run_only_closed_until_human_yes"
    },
    {
      "question": "Did the operator keep provider credential checks, posting, uploads, stream start, payments, GPU/training, voice-to-shell, secrets, and cron mutation closed?",
      "proof_path": "docs/data/radio-takeover-signoff-checklist.json",
      "expected_signal": "all closed_gates values are false"
    }
  ],
  "zero_or_one_next_routes": [
    {
      "id": "signoff_keep_radio_lane_closed_no_action",
      "allowed_next_step": "Keep the radio lane closed with no action when no human show approval is present.",
      "proof_path": "docs/radio/RADIO_TAKEOVER_AFTERCARE_CARD.md",
      "closed_gate": "no stream, post, upload, payment, provider credential check, GPU/training, voice-to-shell, or cron mutation"
    },
    {
      "id": "signoff_request_human_show_review",
      "allowed_next_step": "Ask an awake human to review the takeover script, listener handoff, and aftercare card before choosing a rehearsal.",
      "proof_path": "docs/radio/TAKEOVER_SHOW_SCRIPT_DRAFT.md",
      "closed_gate": "review request only; no external action by automation"
    },
    {
      "id": "signoff_prepare_manual_rehearsal_after_yes",
      "allowed_next_step": "If a human approves, use the existing stream rehearsal checklist as the next local/manual run route.",
      "proof_path": "docs/streaming/STREAM_REHEARSAL_CHECKLIST.md",
      "closed_gate": "manual rehearsal only; no public broadcast or upload"
    },
    {
      "id": "signoff_record_sanitized_blocker",
      "allowed_next_step": "Record a sanitized blocker if verifier, source-map, or proof-path checks do not pass.",
      "proof_path": "docs/reports/CRON_REVEAL_PROGRESS_LEDGER.md",
      "closed_gate": "blocker note only; no provider credential check or public claim"
    }
  ],
  "safe_wording": [
    "Radio takeover materials are review-only local proof artifacts.",
    "The operator may choose zero or one next route after verifier and proof-path rechecks.",
    "Any public stream, upload, social post, or provider credential check still requires a separate human yes.",
    "Use Sonic-Forage canonical links and repo-local proof paths only.",
    "If a check fails, record a sanitized blocker and keep the lane closed."
  ],
  "do_not_say": [
    "The radio show is live.",
    "Provider credentials were checked.",
    "A stream was started automatically.",
    "A social post was published.",
    "A payment artifact exists without approval.",
    "GPU or paid API work began.",
    "Voice-to-shell automation is armed.",
    "Cron changed itself."
  ],
  "blocked_without_approval": [
    "public posting",
    "social scheduling",
    "livestream or Space creation",
    "stream start or restart",
    "recording",
    "YouTube upload",
    "private media upload",
    "provider credential check",
    "payment links or invoices",
    "buyer outreach",
    "GPU or paid API jobs",
    "model download or training",
    "voice-to-shell control",
    "secret exposure",
    "cron mutation"
  ],
  "verifier_commands": [
    "PYTHONDONTWRITEBYTECODE=1 python3 scripts/verify_site.py",
    "python3 -m json.tool docs/data/radio-takeover-signoff-checklist.json",
    "python3 -m py_compile scripts/verify_site.py",
    "git diff --check",
    "git status --short --branch"
  ],
  "proof_paths": [
    "docs/radio/RADIO_TAKEOVER_AFTERCARE_CARD.md",
    "docs/radio/RADIO_TAKEOVER_LISTENER_HANDOFF_CHECKLIST.md",
    "docs/radio/TAKEOVER_SHOW_SCRIPT_DRAFT.md",
    "docs/streaming/STREAM_REHEARSAL_CHECKLIST.md",
    "docs/data/radio-takeover-signoff-checklist.json",
    "docs/data/site-manifest.json",
    "scripts/verify_site.py"
  ],
  "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,
    "provider_credential_check": false,
    "starts_gpu": false,
    "starts_paid_api": false,
    "downloads_models": false,
    "starts_training": false,
    "voice_to_shell": false,
    "secret_exposure": false,
    "mutates_cron": false
  }
}
