{
  "schema_version": "stray-signal-p1.v1",
  "content_version": "0.1.0-c06",
  "content_container": "case_ledger_shift",
  "why_this_container": "The core fun is social intake under trust and exposure pressure, so P1 grows by adding a shift ledger of visitor families, bureau tools, and case cadence rather than phases, orders, or rewards.",
  "recent_container_delta": "Different from shift contracts, route manifests, and workshop/order ladders: this P1 makes each case family change whether the player should build trust, scan, or spend a desk tool first.",
  "duration_seconds": 300,
  "target_resolutions": 24,
  "alert_limit": 260,
  "mistake_limit": 5,
  "case_transition_frames": 96,
  "action_frame_multiplier": 3.9,
  "idle_alert_per_frame": 0.012,
  "choice_deltas": [
    {
      "content": "frightened family",
      "changes_choice": "A Tea Signal before Shelter is stronger than immediate listening because it opens trust while lowering patrol alert."
    },
    {
      "content": "watched paperwork family",
      "changes_choice": "Alias Stamp turns Cover from a risky scan-first answer into a prepared low-alert response."
    },
    {
      "content": "unstable route family",
      "changes_choice": "Mute Lantern makes Quiet Route safer than pure scanning because it reduces exposure before movement."
    },
    {
      "content": "crowd-pressure family",
      "changes_choice": "The player must decide whether to spend tool time on care or accept a faster scan with higher alert."
    }
  ],
  "tools": [
    {
      "id": "tea_signal",
      "label": "Tea Signal",
      "frames": 86,
      "trust_delta": 20,
      "alert_delta": -6,
      "prepares": "shelter",
      "description": "Offer a quiet care signal that opens shelter responses without a hard scan."
    },
    {
      "id": "alias_stamp",
      "label": "Alias Stamp",
      "frames": 92,
      "trust_delta": 5,
      "alert_delta": -8,
      "prepares": "cover",
      "description": "Prepare a mundane identity before writing cover for watched visitors."
    },
    {
      "id": "mute_lantern",
      "label": "Mute Lantern",
      "frames": 88,
      "trust_delta": 8,
      "alert_delta": -10,
      "prepares": "route",
      "description": "Dim the bureau signal before routing unstable visitors through the low-noise path."
    }
  ],
  "case_families": [
    {
      "id": "frightened",
      "label": "Frightened shelter seekers",
      "preferred_tool": "tea_signal",
      "primary_change": "Care before solution is now a tempo choice: tool first costs time but prevents alert growth."
    },
    {
      "id": "watched",
      "label": "Watched paperwork cases",
      "preferred_tool": "alias_stamp",
      "primary_change": "Cover cases reward preparation; scan-only play exposes the bureau."
    },
    {
      "id": "unstable",
      "label": "Unstable route cases",
      "preferred_tool": "mute_lantern",
      "primary_change": "Routing is safest after reducing the visible signal."
    },
    {
      "id": "crowd",
      "label": "Crowd-pressure cases",
      "preferred_tool": "tea_signal",
      "primary_change": "Public attention makes scan certainty expensive, so trust work has a visible payoff."
    }
  ],
  "cases": [
    {
      "id": "copper-kiosk",
      "family": "frightened",
      "call_sign": "Copper kiosk with wet receipts",
      "disguise": "ticket kiosk",
      "visible_clue": "prints arrivals before anyone asks",
      "hidden_need": "shelter",
      "correct_action": "shelter",
      "recommended_tool": "tea_signal",
      "patrol_pressure": 11,
      "trust_gate": 20,
      "listen_trust": 11,
      "scan_alert_delta": 13,
      "tool_bonus": 52
    },
    {
      "id": "paper-umbrella",
      "family": "watched",
      "call_sign": "Paper umbrella in queue seven",
      "disguise": "lost property umbrella",
      "visible_clue": "opens toward the police radio",
      "hidden_need": "cover",
      "correct_action": "cover",
      "recommended_tool": "alias_stamp",
      "patrol_pressure": 15,
      "trust_gate": 24,
      "listen_trust": 10,
      "scan_alert_delta": 17,
      "tool_bonus": 58
    },
    {
      "id": "late-shadow",
      "family": "unstable",
      "call_sign": "Late shadow at the tram gate",
      "disguise": "second shadow",
      "visible_clue": "arrives one heartbeat after the body",
      "hidden_need": "route",
      "correct_action": "route",
      "recommended_tool": "mute_lantern",
      "patrol_pressure": 14,
      "trust_gate": 22,
      "listen_trust": 9,
      "scan_alert_delta": 15,
      "tool_bonus": 55
    },
    {
      "id": "platform-choir",
      "family": "crowd",
      "call_sign": "Platform choir with one voice",
      "disguise": "late-night buskers",
      "visible_clue": "every singer breathes from the same suitcase",
      "hidden_need": "shelter",
      "correct_action": "shelter",
      "recommended_tool": "tea_signal",
      "patrol_pressure": 18,
      "trust_gate": 24,
      "listen_trust": 10,
      "scan_alert_delta": 20,
      "tool_bonus": 60
    },
    {
      "id": "blank-passport",
      "family": "watched",
      "call_sign": "Blank passport clerk",
      "disguise": "night clerk",
      "visible_clue": "stamps the same page without ink",
      "hidden_need": "cover",
      "correct_action": "cover",
      "recommended_tool": "alias_stamp",
      "patrol_pressure": 17,
      "trust_gate": 25,
      "listen_trust": 9,
      "scan_alert_delta": 18,
      "tool_bonus": 62
    },
    {
      "id": "rain-lift",
      "family": "unstable",
      "call_sign": "Rain lift that stops between floors",
      "disguise": "service elevator",
      "visible_clue": "buttons blink in tide order",
      "hidden_need": "route",
      "correct_action": "route",
      "recommended_tool": "mute_lantern",
      "patrol_pressure": 16,
      "trust_gate": 23,
      "listen_trust": 9,
      "scan_alert_delta": 18,
      "tool_bonus": 60
    },
    {
      "id": "silver-pram",
      "family": "frightened",
      "call_sign": "Silver pram beside the vending row",
      "disguise": "empty pram",
      "visible_clue": "rocks only when footsteps stop",
      "hidden_need": "shelter",
      "correct_action": "shelter",
      "recommended_tool": "tea_signal",
      "patrol_pressure": 15,
      "trust_gate": 22,
      "listen_trust": 10,
      "scan_alert_delta": 16,
      "tool_bonus": 58
    },
    {
      "id": "borrowed-hat",
      "family": "watched",
      "call_sign": "Borrowed hat at counter three",
      "disguise": "station porter",
      "visible_clue": "salutes the timetable instead of people",
      "hidden_need": "cover",
      "correct_action": "cover",
      "recommended_tool": "alias_stamp",
      "patrol_pressure": 19,
      "trust_gate": 26,
      "listen_trust": 8,
      "scan_alert_delta": 20,
      "tool_bonus": 65
    },
    {
      "id": "mirror-pigeon",
      "family": "unstable",
      "call_sign": "Mirror courier under platform glass",
      "disguise": "reflection courier",
      "visible_clue": "hands over parcels before the hand moves",
      "hidden_need": "route",
      "correct_action": "route",
      "recommended_tool": "mute_lantern",
      "patrol_pressure": 18,
      "trust_gate": 25,
      "listen_trust": 8,
      "scan_alert_delta": 19,
      "tool_bonus": 64
    },
    {
      "id": "choir-ticket",
      "family": "crowd",
      "call_sign": "Choir ticket with a quiet seat",
      "disguise": "concert ticket",
      "visible_clue": "applause prints across the barcode",
      "hidden_need": "shelter",
      "correct_action": "shelter",
      "recommended_tool": "tea_signal",
      "patrol_pressure": 20,
      "trust_gate": 26,
      "listen_trust": 9,
      "scan_alert_delta": 22,
      "tool_bonus": 66
    },
    {
      "id": "static-map",
      "family": "unstable",
      "call_sign": "Static map that refuses north",
      "disguise": "wall map",
      "visible_clue": "streets erase themselves when sirens pass",
      "hidden_need": "route",
      "correct_action": "route",
      "recommended_tool": "mute_lantern",
      "patrol_pressure": 19,
      "trust_gate": 24,
      "listen_trust": 8,
      "scan_alert_delta": 20,
      "tool_bonus": 65
    },
    {
      "id": "red-folder",
      "family": "watched",
      "call_sign": "Red folder breathing on the in-tray",
      "disguise": "case folder",
      "visible_clue": "files itself under tomorrow",
      "hidden_need": "cover",
      "correct_action": "cover",
      "recommended_tool": "alias_stamp",
      "patrol_pressure": 21,
      "trust_gate": 27,
      "listen_trust": 8,
      "scan_alert_delta": 22,
      "tool_bonus": 68
    }
  ],
  "p1_matrix_30min_blueprint": [
    {
      "segment": "teach",
      "minutes": "0-5",
      "new_axes": ["case family", "preferred tool"],
      "decision_change": "Learn that tool-first play can be safer than scan-first certainty.",
      "implemented_in_slice": true
    },
    {
      "segment": "familiarize",
      "minutes": "5-10",
      "new_axes": ["patrol pressure", "trust gate"],
      "decision_change": "Choose between repeating a safe trust route or accepting a scan cost.",
      "implemented_in_slice": true
    },
    {
      "segment": "variation",
      "minutes": "10-17",
      "new_axes": ["tool cooldown", "mixed family queue"],
      "decision_change": "Spend a scarce tool on the current case or save it for a higher-pressure visitor.",
      "implemented_in_slice": false
    },
    {
      "segment": "pressure",
      "minutes": "17-24",
      "new_axes": ["public attention", "alert recovery"],
      "decision_change": "Delay resolution to reduce alert, or finish a case before the ledger gets crowded.",
      "implemented_in_slice": false
    },
    {
      "segment": "closure",
      "minutes": "24-30",
      "new_axes": ["review route", "case cause audit"],
      "decision_change": "Review which family-tool relation caused losses and choose a new opening plan.",
      "implemented_in_slice": false
    }
  ]
}
