{
  "tool_id": "art-127-dual-layer-disclosure-verifier",
  "kernel_id": "art-127-dual-layer-disclosure-verifier",
  "display_name": "Dual-Layer Disclosure Verifier",
  "tool_version": "1.0.0",
  "mandate_type": "compliance_mandate",
  "purpose": "Confirm the EU Commission Code of Practice multi-layer requirement: both C2PA signed metadata and an imperceptible watermark (SynthID / Digimarc / TrustMark / c2pa.soft_binding) are declared present. Fails if only one layer present. Emits layers-present and missing-layer.",
  "control_description": "Confirm the EU Commission Code of Practice multi-layer requirement: both C2PA signed metadata and an imperceptible watermark (SynthID / Digimarc / TrustMark / c2pa.soft_binding) are declared present. Fails if only one layer present. Emits layers-present and missing-layer.",
  "declared_inputs": [
    "art-126-ai-act-art50-marking-checker"
  ],
  "declared_outputs": [
    "art-128-content-binding-assertion-validator"
  ],
  "kernel_digest": "sha256:56cd22eca21423290fd3c332d722f6e6afd0c5a3b24650cf68b266aa33db0ae8",
  "trust_label": "independently verified: zkVM execution proof (risc0/groth16-bn254)",
  "data_vintage": "2026-07-10",
  "last_validated": "2026-07-10",
  "conformance_fixtures_vendored": true,
  "compute_proof_ready": "ready",
  "wave": 23,
  "source_url": "https://ainumbers.co/chaingraph/art-127-dual-layer-disclosure-verifier.html",
  "generated_at": "2026-08-15T11:12:17.704Z"
}
