{
  "tool_id": "art-691-regulatory-obligations-register",
  "tool_version": "1.0.0",
  "display_name": "Regulatory Obligations Register",
  "mcp_name": "compute_regulatory_obligations_register",
  "mandate_type": "compliance_control",
  "wave": 113,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-691-regulatory-obligations-register.html",
  "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.",
  "input_schema_ref": "chaingraph/art-691-regulatory-obligations-register.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:3e77f4dced6cd0c03e0205a1fa7400e07a21bb1dd0525b9f7c85eb7509193ea6","valid_from":"2026-09-22"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6"}],
  "export_capability": ["json"],
  "standards_basis": "not_applicable",
  "cited_clause_digest": [],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "E0WprzY/goFzkJKNFviaLq9p7mU0FcLJPqnA5NZt6j8KL1VeSQldaxxuI71AEU/swNzJP2diYOllrOyMAfhQWijYENpEFUjWEmlS+DWHgcGpMqZ8z9l926IRpJ6ON5i8Fo3xV32N0eM1fH3RWSrLjbvg8kLsnapukjggN19OvnoZZgTpw3DqYbYXJ7VfqmIbYgS8aBVoisefWppY9cr3Tgn4H7Fwp/GNyRQ0D9D3zqZNsrXY2iXn/wryP8JCLYUcJPpOGShNCKBs/IArUJkvXRlMLnZYL8ghMwst9DzCsdUbV+W7rg8NoBntRvh+yRuOKh5l/L3J9a495Gs0Hm70Xw==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:3e77f4dced6cd0c03e0205a1fa7400e07a21bb1dd0525b9f7c85eb7509193ea6",
      "output": {
        "control_linked": 2,
        "evidence_coverage_pct": 33.3,
        "evidence_linked": 1,
        "findings": [
          {
            "check": "owner_coverage",
            "detail": "1 of 3 no owner",
            "status": "FAIL"
          },
          {
            "check": "evidence_coverage",
            "detail": "2 of 3 no evidence pointer",
            "status": "FAIL"
          }
        ],
        "overall_determination": "GAPS_FOUND",
        "owner_assigned": 2,
        "owner_coverage_pct": 66.7,
        "total": 3,
        "unassigned": [
          "UDAAP-5-1"
        ]
      }
    }
  }
}
