{
  "tool_id": "art-471-disposition-sampling-frame",
  "tool_version": "1.0.0",
  "display_name": "AML Disposition Sampling Frame Builder",
  "mcp_name": "plan_aml_disposition_sample",
  "mandate_type": "compliance_control",
  "wave": 74,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-471-disposition-sampling-frame.html",
  "description": "Builds a deterministic sampling frame over an AML consent-order lookback's historical alert dispositions for independent-validator review, plus a reviewer workload allocation. Reuses the shipped art-458-attribute-sampling-plan kernel's compute() directly for the statistical core (sample size, deterministic interval selection over a caller-declared population hash) rather than reimplementing it -- no randomness, fully replayable by an independent reviewer from the same declared inputs. Adds only the AML-specific layer: labeling the frame as a disposition sample and deterministically fanning the selected indices out round-robin across a caller-declared reviewer roster. Deterministic only. Zero network, zero PII.",
  "input_schema_ref": "chaingraph/art-471-disposition-sampling-frame.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:33d8dd00530f61c28fc39625801011c67b5ebb1694d5abe4bc9af6c882daa66c","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-07-25"}],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "LpfacQDdZhyZhM5xuCkpz0It5UzGko80a29xE8/rBFIClk7WSkTL8y+euDPALVKhN1eJboh8CU/B/ZIw8oWYQg9XZtYGer9eMpKC/Anq15RmrZSkhhyShjt+rG2Kb+s3BdByF76llxOFORiJNG0y4qTTmz+k1TEQhg2sJfEdQm8W2R219+OVxSmzsVfsjadXdbJHJUUql/2hbPthDi3FQBQvXcTiGCL72rzSI/jG3YCd0yy0AaowFP3w2LYHXeoDBneL52d+8+y0tyYiFim9q7nvtD/lN5ju38Y2BbRGqnwpe50zFnQuCvSAqUl1eq56uGiVfqvrnJcqbEPmK3x3Eg==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:33d8dd00530f61c28fc39625801011c67b5ebb1694d5abe4bc9af6c882daa66c",
      "output": {
        "confidence_level": 95,
        "disposition_population_hash": "abc123",
        "disposition_population_size": 1000,
        "expansion_factor": 1,
        "expected_deviation_rate": 0,
        "interval": 16,
        "method": "poisson_attribute_sampling",
        "reviewer_roster": [
          "reviewer_1"
        ],
        "reviewer_workload": [
          {
            "disposition_indices": [
              0,
              16,
              32,
              48,
              64,
              80,
              96,
              112,
              128,
              144,
              160,
              176,
              192,
              208,
              224,
              240,
              256,
              272,
              288,
              304,
              320,
              336,
              352,
              368,
              384,
              400,
              416,
              432,
              448,
              464,
              480,
              496,
              512,
              528,
              544,
              560,
              576,
              592,
              608,
              624,
              640,
              656,
              672,
              688,
              704,
              720,
              736,
              752,
              768,
              784,
              800,
              816,
              832,
              848,
              864,
              880,
              896,
              912,
              928
            ],
            "reviewer_id": "reviewer_1"
          }
        ],
        "sample_size": 59,
        "selected_indices": [
          0,
          16,
          32,
          48,
          64,
          80,
          96,
          112,
          128,
          144,
          160,
          176,
          192,
          208,
          224,
          240,
          256,
          272,
          288,
          304,
          320,
          336,
          352,
          368,
          384,
          400,
          416,
          432,
          448,
          464,
          480,
          496,
          512,
          528,
          544,
          560,
          576,
          592,
          608,
          624,
          640,
          656,
          672,
          688,
          704,
          720,
          736,
          752,
          768,
          784,
          800,
          816,
          832,
          848,
          864,
          880,
          896,
          912,
          928
        ],
        "start_offset": 0,
        "tolerable_deviation_rate": 5
      }
    }
  },
  "export_capability": [
    "json"
  ]
}
