{
  "description": "S6 guard: safeGamma = max(gamma, 1e-10). A contextualModel gamma of 0 MUST NOT divide by zero, reset the temperature to 1, or take an argmax shortcut. The softmax is scaled by safeGamma=1e-10, yielding a near-one-hot-but-DEFINED distribution on the top-scoring allocation, which the actionProbabilityFloor then re-inflates for exploration.",
  "bundle": "bundle_contextual_gamma_zero.json",
  "testCases": [
    {
      "name": "gamma_zero_near_argmax",
      "context": {
        "userId": "u-gamma",
        "x": 2
      },
      "expectedScoring": {
        "scores": [
          1.4,
          0.7,
          0.3
        ],
        "probabilities": [
          0.909091,
          0.045455,
          0.045455
        ],
        "seed": "ctx:u-gamma:policy_gamma_zero",
        "selectedIndex": 0,
        "comment": "scores: variant_a 1.0+0.2*2=1.4, variant_b 0.5+0.1*2=0.7, variant_c 0.2+0.05*2=0.3. safeGamma=1e-10 -> softmax is [1,0,0] on variant_a. Floor 0.05 raises the two zeros to 0.05, renormalize by 1.1 -> [0.909091, 0.045455, 0.045455]. Weighted selection selects variant_a."
      },
      "expectedAllocation": "variant_a",
      "expectedAssignments": {
        "ui.variant": "hero_a"
      }
    }
  ]
}
