{
  "name": "Sonic-Forage OBS Operator Takeover Router",
  "version": "0.1.0",
  "mode": "local_dry_run_first",
  "external_side_effects": false,
  "chat_to_shell": false,
  "public_chat_typing": "moderated_overlay_only",
  "host": "127.0.0.1",
  "websocket_port": 8765,
  "obs_websocket": "localhost_only_optional",
  "approval_required_for": [
    "start_stream",
    "stop_stream",
    "public_post",
    "gpu_spend",
    "guest_publish",
    "dataset_visibility",
    "external_chat_bot_send"
  ],
  "scenes": [
    {
      "key": "F13",
      "scene": "AUTO_SHOW",
      "meaning": "100% autonomous master loop / AI radio"
    },
    {
      "key": "F14",
      "scene": "JIMSKY_TAKEOVER",
      "meaning": "User takes camera/mic/OBS control"
    },
    {
      "key": "F15",
      "scene": "GUEST_STAGE_A",
      "meaning": "Beam in approved guest A / browser source / call window"
    },
    {
      "key": "F16",
      "scene": "GUEST_STAGE_B",
      "meaning": "Beam in approved guest B / alternate slot"
    },
    {
      "key": "F17",
      "scene": "ROTATION_LOBBY",
      "meaning": "Holding room / QR / waiting music / next guest"
    },
    {
      "key": "F18",
      "scene": "PROOF_HUB",
      "meaning": "Show public proof hub / GitHub Pages artifacts"
    },
    {
      "key": "F19",
      "scene": "BUILD_WALL",
      "meaning": "Show local terminal/verifier/progress wall"
    },
    {
      "key": "F20",
      "scene": "RETRO_FORGE_ARCADE",
      "meaning": "Playable arcade / AI takeover segment"
    },
    {
      "key": "F21",
      "scene": "LAKE_CHINA_MODE",
      "meaning": "Late-night multilingual / Chinese-friendly visual mode"
    },
    {
      "key": "F22",
      "scene": "SAFE_INTERMISSION",
      "meaning": "Owned/generated fallback loop when anything fails"
    },
    {
      "key": "F23",
      "scene": "PANIC_PRIVACY",
      "meaning": "Hide private screens, mute guest, show safe card"
    },
    {
      "key": "F24",
      "scene": "STREAM_CAPTAIN_STATUS",
      "meaning": "Show health, gates, next segment, no secrets"
    }
  ],
  "guest_rotation_rules": [
    "All guests enter a lobby scene first, never direct to live.",
    "Operator manually promotes guest to Stage A/B.",
    "If guest disconnects, OBS returns that slot to SAFE_INTERMISSION or ROTATION_LOBBY.",
    "No guest desktop audio/video is captured until operator confirms their scene is clean.",
    "Never show private DMs, stream keys, tokens, wallets, dashboards with secrets, or uncontrolled chat panes."
  ],
  "typing_policy": [
    "Do not let public chat type into a real terminal or shell.",
    "Use a fake terminal overlay / moderated text queue for viewer prompts.",
    "Only the operator can execute real commands, off-stream when secrets/private paths may appear.",
    "For live build vibe, show sanitized command summaries and verifier results, not raw unrestricted terminal input."
  ],
  "language_modes": [
    {
      "key": "EN",
      "label": "English launch / proof hub"
    },
    {
      "key": "ZH",
      "label": "Lake China mode / Chinese-friendly captions + visuals"
    },
    {
      "key": "ES",
      "label": "Spanish community invite"
    },
    {
      "key": "JP",
      "label": "Japanese cyber arcade interlude"
    },
    {
      "key": "PT",
      "label": "Portuguese late-night raid-safe cards"
    }
  ]
}
