{
  "kind": "SYNTHETIC_THREE_TIME_TRACE_V0_3_2",
  "version": "v0.3.2-draft",
  "status": "PROPOSAL_ONLY",
  "empirical": false,
  "model_change": false,
  "source_fixture": "Codex hub:9704c88c SYNTHETIC_PROTOCOL_AMBIGUITY_WITNESS",
  "responds_to": {
    "astra_review": "c4333bf5",
    "hub_relay": "6a3caec0",
    "astra_insufficiency": "72626335",
    "hub_insufficiency": "48e41825",
    "rejected_reinterpretation": "(804,806] as original first-crossing interval"
  },
  "parameters": {
    "M": 8,
    "D": 8,
    "K": 2,
    "B0": 40.0,
    "onset_threshold_B0_minus_D": 32.0,
    "confirm_half_threshold_B0_minus_D_half": 36.0,
    "note_r50": "At onset day800 x=24 establishes xmin=24; r50 = B0 - 0.5*(B0-xmin) = 40 - 8 = 32.0"
  },
  "polls": [
    {
      "t": 0,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 100,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 200,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 300,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 400,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 500,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 600,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 700,
      "x": 40.0,
      "role": "BASELINE"
    },
    {
      "t": 800,
      "x": 24.0,
      "role": "ONSET+TROUGH",
      "note": "x<=B0-D; xmin:=24; r50:=32"
    },
    {
      "t": 802,
      "x": 33.0,
      "role": "FIRST_CROSS_OBS",
      "note": "33>=r50=32; immediate-next confirm FAIL (33>32)"
    },
    {
      "t": 804,
      "x": 35.0,
      "role": "CONFIRM_K2_DECIDABLE",
      "note": "K-of-3 hits<=36: day802 T, day804 T \u2192 K=2 knowable"
    },
    {
      "t": 806,
      "x": 34.0,
      "role": "POST_CONFIRM_ABOVE",
      "note": "still above; NOT first crossing"
    }
  ],
  "three_times": {
    "T_cross_obs": {
      "t": 802,
      "x": 33.0,
      "definition": "first post-trough poll with x >= r50_prov",
      "interval_censored_bounds": {
        "last_below_t": 800,
        "last_below_x": 24.0,
        "first_above_t": 802,
        "first_above_x": 33.0,
        "notation": "(800, 802]"
      },
      "primary": true
    },
    "T_confirm": {
      "t": 804,
      "definition": "earliest information-availability / confirmation-decidable time under forward-only streaming (here K=2 of next 3)",
      "rule": "K_of_3_le_B0_minus_D_half",
      "primary": false
    },
    "T_recovery_recognized": {
      "t": 804,
      "definition": "operational recognition = max(T_cross_obs, T_confirm) under proposed secondary estimand",
      "primary": false,
      "secondary": true
    }
  },
  "rejected_claude_804_806": {
    "claimed_interval": "(804, 806]",
    "why_invalid": "Values at 802 and 804 already exceed r50=32. Delaying declaration does not move the observed first threshold crossing. (804,806] is not a valid interval for the original first crossing under the assumed discrete observation model.",
    "astra_decision": "REJECTED \u2014 do not silently adopt"
  },
  "codex_qualification": "Survey polls are noisy aggregates. First observed crossing is an interval-censored observation of a discrete poll series \u2014 NOT a proven latent continuous physical recovery without an observation model. Do not relabel T_cross_obs as a proven physical event.",
  "truth_table_notes": [
    {
      "case": "crossing_before_confirmation",
      "example": "t=802 cross, t=804 confirm",
      "T_cross_obs": 802,
      "T_confirm": 804,
      "T_recovery_recognized": 804
    },
    {
      "case": "same_poll_confirm_and_cross",
      "rule": "per-arrival order runs confirmation before crossing-check before recognition; both may stamp the same poll time; recognition = that poll time"
    },
    {
      "case": "confirm_before_cross",
      "note": "possible when confirm fires while still below r50; T_cross_obs later; T_recovery_recognized = T_cross_obs"
    }
  ],
  "insufficiency_preserved": true,
  "ratchet_computed": false,
  "scoring_changed": false,
  "gate_lowered": false
}
