{
  "note": "PackLab fairness test vectors. Generated with the shipped @packlab/fairness implementation. A conforming verifier must reproduce every expected value exactly. See /fairness-spec.md for the full method.",
  "primitives": {
    "hash": "SHA-256 over UTF-8 bytes, lowercase hex",
    "mac": "HMAC-SHA256(key = hexDecode(serverSeed), msg = UTF-8(beaconValue))",
    "roll": "parseInt(hex(mac)[0..12], 16) / 2^52  → [0,1)",
    "drandChain": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"
  },
  "inputs": {
    "serverSeed": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
    "beaconValue": "a0b1c2d3e4f5061728394a5b6c7d8e9fa0b1c2d3e4f5061728394a5b6c7d8e9f"
  },
  "expected": {
    "seedCommitment": "73641c99f7719f57d8f4beb11a303afcd190243a51ced8782ca6d3dbe014d146",
    "finalSeed": "e96f8c15ef9d68a58d4b810b5146c542af450b81d3fe5a4fbf5258812c736297",
    "shuffledOrder6": [3, 4, 1, 2, 0, 5],
    "shuffledOrder12": [10, 9, 11, 3, 1, 2, 8, 6, 4, 0, 7, 5],
    "roll": 0.9118583253435779
  },
  "mysteryBucketSelect": {
    "weightTable": [
      { "setId": "a", "weight": 500000 },
      { "setId": "b", "weight": 400000 },
      { "setId": "c", "weight": 100000 }
    ],
    "roll": 0.9118583253435779,
    "expectedWinningSetId": "c"
  }
}
