{
  "detector" : {
    "cross_token_minimum_events" : 12,
    "floor_handoff_statistic" : "p95",
    "floor_minimum_handoff_samples" : 30,
    "latency_drop_floor_ms" : -1200,
    "latency_drop_floor_provisional" : true,
    "minimum_days" : 6,
    "minimum_events" : 20,
    "proceed_rise_threshold" : 0.20000000000000001,
    "solo" : {
      "applies_when" : "no other token reaches cross_token_minimum_events",
      "handoff_drift_share" : 0.25,
      "known_limitation" : "With one token there is no way to separate habituation to this app's pause from habituation to the pause as such. The remedy is identical either way, and the escalation notice makes no per-app claim.",
      "latency_drop_floor_ms" : -2400,
      "minimum_days" : 10,
      "minimum_events" : 30,
      "thresholds_provisional" : true
    },
    "window_days" : 14
  },
  "instrument" : {
    "anchored_in_locale" : "en",
    "cutoffs_validated_outside_anchor" : false,
    "shipped_locales" : [
      "ar",
      "bn",
      "de",
      "en",
      "es-419",
      "fa",
      "fil",
      "fr",
      "gu",
      "hi",
      "id",
      "it",
      "ja",
      "kn",
      "ko",
      "ml",
      "mr",
      "nl",
      "pa",
      "pl",
      "pt-BR",
      "ru",
      "ta",
      "te",
      "th",
      "tr",
      "uk",
      "ur",
      "vi",
      "zh-Hans",
      "zh-Hant"
    ]
  },
  "integrity" : {
    "baseline_minimum_events" : 8,
    "burst_minimum_events" : 5,
    "burst_multiple" : 4,
    "burst_window_s" : 3600,
    "coalescing_window_s" : 3,
    "duplicate_rate_ceiling" : 0.10000000000000001,
    "flags_refusing_on_sight" : [
      "burst",
      "implausible_gap",
      "sub_floor_latency"
    ],
    "implausible_gap_floor_s" : 86400,
    "implausible_gap_multiple" : 12,
    "physical_decision_floor_ms" : 120,
    "undrawn_gates_before_fail_open" : 3
  },
  "interruption" : {
    "high_automaticity_hold_s" : 12,
    "hold_s" : 8,
    "night_window_end_hour" : 5,
    "night_window_start_hour" : 23,
    "protocol_step_read_s" : 5
  },
  "published_at" : "https:\/\/reva.otterwright.com\/thresholds.json",
  "scoring_version" : "reva-persona-v3",
  "version" : "gate-4",
  "weekly_read" : {
    "alpha" : 0.01,
    "candidates" : [
      {
        "class" : "b",
        "id" : "b1",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b2",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b3",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b4",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b5",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b6",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b7",
        "under_test" : true
      },
      {
        "class" : "b",
        "id" : "b8",
        "under_test" : true
      },
      {
        "class" : "c",
        "id" : "c1",
        "under_test" : true
      },
      {
        "class" : "c",
        "id" : "c2",
        "under_test" : true
      },
      {
        "class" : "c",
        "id" : "c3",
        "under_test" : true
      },
      {
        "class" : "c",
        "id" : "c4",
        "under_test" : true
      },
      {
        "class" : "c",
        "id" : "c5",
        "under_test" : true
      },
      {
        "class" : "a",
        "id" : "a1",
        "under_test" : false
      },
      {
        "class" : "a",
        "id" : "a2",
        "under_test" : false
      },
      {
        "class" : "a",
        "id" : "a3",
        "under_test" : false
      },
      {
        "class" : "a",
        "id" : "a4",
        "under_test" : false
      }
    ],
    "counts" : {
      "minimum_arm_events" : 8,
      "minimum_days" : 8,
      "minimum_events" : 20
    },
    "effect" : {
      "latency_fraction" : 0.29999999999999999,
      "latency_ms" : 400,
      "proportion_points" : 25,
      "rate_multiple" : 1.5
    },
    "floor_version" : "floor-1",
    "permanently_excluded" : [
      {
        "id" : "protocol_completed_vs_not",
        "reason" : "confounded — completion days are days that were already going well"
      }
    ],
    "schedule" : {
      "cadence_days" : 7,
      "first_read_day" : 14,
      "full_library_day" : 28,
      "long_window_days" : 28,
      "short_window_days" : 14,
      "window_days_when_yield_is_low" : 42
    },
    "selection" : {
      "deliveries_per_candidate" : 3,
      "maximum_observations" : 3
    }
  }
}