{
  "generated": "2026-07-19",
  "generator": "SPEC-TICK-091 (§PPH-1) — derived offline via cgCanon; no network, no kernel emission",
  "note": "Exercises the §PPH-1 policy_parameters_hash SHAPE against $defs.artifact (#/$defs/sha256ref). schema-validate.mjs validates doc.artifact; without a fixture carrying the member, the schema half of the §15 row would never execute. The BARE form is pinned deliberately: it is what a kernel using the shared _hash.mjs path will actually emit (§PPH-1.1a says producers SHOULD emit bare). The sha256:-prefixed form is equally schema-valid and is covered by policy-params-hash.test.mjs instead. execution_hash here is the real §4 hash over {policy_parameters, output_payload} and is UNAFFECTED by the presence of policy_parameters_hash (§PPH-1.2).",
  "artifact": {
    "@context": "https://ainumbers.co/chaingraph/context/v0.3/context.jsonld",
    "chaingraph_version": "0.4.0",
    "compute_mode": "server",
    "mandate_type": "compliance_mandate",
    "tool_id": "art-121-document-integrity-anchor",
    "tool_version": "1.0.0",
    "generated_at": "2026-07-19T00:00:00Z",
    "buildType": "https://ainumbers.co/chaingraph/context/v0.2#WebCryptoSHA256",
    "execution_hash": "5b62c56cab491940425bf25e4c0c749d036835073f8f8f7799482eccbc38ddcc",
    "policy_parameters_hash": "bfc9c714eee69c5599654722142adaf903821168ea7f218bdd98451e7d1e0f9a",
    "chain": {
      "parent_hashes": [],
      "parent_tool_ids": [],
      "chain_depth": 0
    },
    "policy_parameters": {
      "execution_backend": "server",
      "input_parameters": {
        "document_id": "DOC-001",
        "algorithm": "sha256"
      }
    },
    "output_payload": {
      "integrity_status": "verified",
      "checked": 2
    },
    "compliance_flags": [],
    "audit_signature": {
      "payloadType": "application/vnd.openchain.graph+json;version=0.2",
      "payload": "",
      "signatures": []
    }
  }
}
