{
  "tool_id": "art-691-regulatory-obligations-register",
  "kernel_id": "art-691-regulatory-obligations-register",
  "display_name": "Regulatory Obligations Register",
  "tool_version": "1.0.0",
  "mandate_type": "compliance_control",
  "purpose": "A regime-agnostic rule-to-obligation-to-evidence register verdict: obligations in (rule_id, owner, control_ids, evidence_refs), coverage math out (owner and evidence percentages, control-linkage count, the unassigned list, one FAIL finding per failing check, and an overall COVERED or GAPS_FOUND determination). Five stages in one pure compute(): intake with fail-closed shape validation (a missing rule_id zeroes the register rather than producing partial counts), owner coverage, control linkage, evidence linkage, verdict. This is the spine the exam-readiness and attestation packs later hang off, per OBLIGATIONS-REGISTER-BUILD-SPEC.md (Tim-approved gap-scan slate, 2026-09-03; the estate previously had no rule-to-obligation-to-evidence register: the BaaS control mapper at tools/152-baas-provider-comparator.html maps controls to frameworks inside one BaaS scope and is linked here as the pattern source, not duplicated). Owner and evidence coverage are the gated checks; control linkage is measured but never gates the verdict, matching the spec's own worked example (control_linked 2 of 3 with no control finding). All inputs are synthetic identifiers; the node stores nothing, calls nothing, and cites no external regime: thresholds are internal design (100 percent owner and evidence coverage required for COVERED, coverage percentages rounded to one decimal), so a reader holding any regulator's rulebook uses this as the register arithmetic, not as a statement of what that regime requires. The worked example's canonical {policy_parameters, output_payload} preimage and its pinned execution_hash bdf74ddc2f836c5e34b374d65f915e96684b061792283d775b08f2e9cd34ba67 are preserved in the spec and carried as this node's oracle-backed golden fixture; compute() reproduces that payload byte-identically.",
  "control_description": "A regime-agnostic rule-to-obligation-to-evidence register verdict: obligations in (rule_id, owner, control_ids, evidence_refs), coverage math out (owner and evidence percentages, control-linkage count, the unassigned list, one FAIL finding per failing check, and an overall COVERED or GAPS_FOUND determination). Five stages in one pure compute(): intake with fail-closed shape validation (a missing rule_id zeroes the register rather than producing partial counts), owner coverage, control linkage, evidence linkage, verdict. This is the spine the exam-readiness and attestation packs later hang off, per OBLIGATIONS-REGISTER-BUILD-SPEC.md (Tim-approved gap-scan slate, 2026-09-03; the estate previously had no rule-to-obligation-to-evidence register: the BaaS control mapper at tools/152-baas-provider-comparator.html maps controls to frameworks inside one BaaS scope and is linked here as the pattern source, not duplicated). Owner and evidence coverage are the gated checks; control linkage is measured but never gates the verdict, matching the spec's own worked example (control_linked 2 of 3 with no control finding). All inputs are synthetic identifiers; the node stores nothing, calls nothing, and cites no external regime: thresholds are internal design (100 percent owner and evidence coverage required for COVERED, coverage percentages rounded to one decimal), so a reader holding any regulator's rulebook uses this as the register arithmetic, not as a statement of what that regime requires. The worked example's canonical {policy_parameters, output_payload} preimage and its pinned execution_hash bdf74ddc2f836c5e34b374d65f915e96684b061792283d775b08f2e9cd34ba67 are preserved in the spec and carried as this node's oracle-backed golden fixture; compute() reproduces that payload byte-identically.",
  "declared_inputs": [],
  "declared_outputs": [],
  "kernel_digest": "sha256:3e77f4dced6cd0c03e0205a1fa7400e07a21bb1dd0525b9f7c85eb7509193ea6",
  "trust_label": "independently verified: zkVM execution proof (risc0/groth16-bn254)",
  "data_vintage": "2026-09-22",
  "last_validated": "2026-09-22",
  "conformance_fixtures_vendored": true,
  "compute_proof_ready": "ready",
  "wave": 113,
  "source_url": "https://ainumbers.co/chaingraph/art-691-regulatory-obligations-register.html",
  "generated_at": "2026-09-24T00:53:14.399Z"
}
