{
  "description": "S6 guard: effectiveFloor = min(actionProbabilityFloor, 1/n). With n=3 allocations and floor 0.5, the applied floor is capped at 1/3 (never 0.5, which would demand > 100% of the probability mass). Each below-floor probability is raised to 1/3 and the vector is renormalized. An SDK that used the raw 0.5 floor would produce a different distribution.",
  "bundle": "bundle_contextual_high_floor.json",
  "testCases": [
    {
      "name": "floor_above_uniform_capped",
      "context": {
        "userId": "u-floor",
        "x": 2
      },
      "expectedScoring": {
        "scores": [
          1.4,
          0.7,
          0.3
        ],
        "probabilities": [
          0.524953,
          0.237524,
          0.237524
        ],
        "seed": "ctx:u-floor:policy_high_floor",
        "selectedIndex": 2,
        "comment": "scores [1.4,0.7,0.3]; softmax(gamma 0.5) = [0.736702, 0.181669, 0.081629]. effectiveFloor=min(0.5, 1/3)=0.333333: variant_a (0.736702) stays, variant_b and variant_c raised to 0.333333, sum 1.403369, renormalize -> [0.524953, 0.237524, 0.237524]. Weighted selection selects variant_c. (A broken SDK applying floor 0.5 directly would yield ~[0.424, 0.288, 0.288].)"
      },
      "expectedAllocation": "variant_c",
      "expectedAssignments": {
        "ui.variant": "hero_c"
      }
    }
  ]
}
