{
  "tool_id": "art-774-beacon-seeded-fair-sampling-v2",
  "tool_version": "1.0.0",
  "display_name": "Beacon-Seeded Fair-Sampling Deriver V2",
  "mcp_name": "derive_beacon_fair_sample_v2",
  "mandate_type": "compliance_control",
  "wave": 135,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-774-beacon-seeded-fair-sampling-v2.html",
  "description": "Derives a deterministic, offline-replayable audit sample, version 2 of the beacon-seeded fair-sampling family, from a caller-pasted public randomness beacon pulse (drand quicknet or NISTIR-8213) and an item-manifest hash committed before the pulse round, over the same HMAC-DRBG (SHA-256) stream as version 1 (art-583). Version 2 fixes three version 1 defects in a new node rather than editing the proven original: a threshold-rejection reduction replaces the raw modulo so index selection is exactly unbiased; a partial Fisher-Yates walk over an index array consumes exactly sample_size accepted draws with no draw cap, so full samples succeed at any population up to the 1,000,000-item ceiling (version 1's draw cap failed near-full samples above roughly 12,000 items); and both hex inputs are validated as exactly 64 lowercase hex characters, with a structured refusal otherwise. The ceiling commits to a 4 MB index array at maximum population. The emitted per-draw transcript is capped at 50 entries and carries full draws_used and rejection counts, so the artifact stays bounded while the walk remains fully reconstructible offline from the declared inputs alone. The beacon pulse is caller-declared: this kernel does SHA-256/HMAC math only, never fetches a pulse and never verifies its signature. The version 1 node stays untouched and replayable for every receipt already issued against it; new runs should use this node.",
  "input_schema_ref": "chaingraph/art-774-beacon-seeded-fair-sampling-v2.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:225a33c9b312d9564601be3adb3aaf90e35f077f3d2352d63ad7a9dc9d55b102",
      "valid_from": "2026-10-21"
    }
  ],
  "export_capability": [
    "json"
  ],
  "standards_basis": "not_applicable",
  "cited_clause_digest": [],
  "compute_proof_ready": "deferred",
  "deferred_reason": "New gpu:false node, art-774-beacon-seeded-fair-sampling-v2, built 2026-10-21 (SAMPLER-583-V2-1). No GPU prove has been run and none is proposed by this row: deferred per the section 18 steady-state rule, with the first prove to follow later via SIDEBYSIDE then PROVE. Cycle class declared per the GPU-CYCLE-PREFLIGHT-1 static pre-screen: SLOW at the maximum population (an in-guest HMAC-SHA256 loop per draw plus an O(item_count) Fisher-Yates index-array initialization, up to 1,000,000 entries = a 4 MB Uint32Array, before up to 1,000,000 per-draw HMACs on a full sample); a measured user_cycles exec preflight is owed by the first prove row before any GPU booking. The section 18 ceiling is raised by one deferred node in this PR; scripts/compute-proof-baseline.json is no longer edited by node PRs and is written main-side by the regen workflow (PROVE-BASELINE-SINGLE-WRITER-1)."
}
