{
      "tool_id": "art-193-metadata-sanitization-prover",
      "tool_version": "1.0.0",
      "display_name": "Metadata Sanitization Prover",
      "mcp_name": "prove_metadata_sanitization",
      "mandate_type": "compliance_mandate",
      "wave": 34,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-193-metadata-sanitization-prover.html",
      "description": "Produces a proof-of-sanitization record binding the original digest to the findings removed, redacted, or retained and to the sanitized digest, with a deterministic residual-risk analysis by file type (JPEG COM segments, PNG textual chunks, PDF and DOCX XMP and embedded-object metadata). The kernel receives field names and categories only, never metadata values, because those values can themselves be PII such as GPS coordinates and author names. Returns the sanitization record, residual_risks, and a verdict of sanitized, partially_sanitized, or not_verifiable. Feeds the conversion receipt builder. Zero network, zero PII.",
      "input_schema_ref": "chaingraph/art-193-metadata-sanitization-prover.html#manifest",
      "consumes": [],
      "feeds": [
        "art-191-conversion-receipt-builder"
      ],
      "status": "live",
      "conformance_fixtures": true,
      "compute_capability": "server",
      "compute_images": [{"system":"sha256-source","image_id":"sha256:2d8ae35efdc10161078c887a54e33ac94a5faba77d639714ebe390c32a9759b0","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-07-02"}],
      "compute_proof": {
        "type": "ZkVmReceipt",
        "system": "risc0",
        "receiptFormat": "groth16-bn254",
        "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
        "seal": "Ipygd92A3GLAMQ0j2mq34sBsoAig5aWN1Gua87VpEY0jWEjuYD7neHwjcWQNdnddReTJWOuKFZO4cFCOySaLLw0CJpz2GrUIRNI1QVKrGe1A1SPoawAIy7PJtcBCTiIJEpjlcbZixhdHNDJNg2+isMSR/2RhEt87mzZn191mWuwrg2BHu6kO55BsUsRPqtyujTgceUDmMAV05bUoIHQndx0TG0pAbgVNqdTU0m1ms2Nw7XW0QlGVDnXUIgGLhTQ8J4jHu1wMZZfbO2Qrr/DLNuT9anpspNLk5j1EgCQLI4snpEAKTXoGG/oUWA1DsgFk9U5i5n1C/YxKgjYsyoER7w==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:c4d7d0c35dbd55d229bc2f9c2386b3e73d0ed78fc2ea41a8064e6d0e7c08a08b",
          "output": {
            "residual_risks": [],
            "sanitization_record": {
              "bytes_after": 203100,
              "bytes_before": 204800,
              "counts": {
                "redacted": 0,
                "removed": 4,
                "retained": 0,
                "total": 4
              },
              "file_type": "jpeg",
              "findings": [
                {
                  "action": "removed",
                  "category": "gps",
                  "field": "GPSLatitude"
                },
                {
                  "action": "removed",
                  "category": "gps",
                  "field": "GPSLongitude"
                },
                {
                  "action": "removed",
                  "category": "device",
                  "field": "Make"
                },
                {
                  "action": "removed",
                  "category": "comment",
                  "field": "UserComment"
                }
              ],
              "original_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
              "record_sha256": "d0e39cef2c4cc122a9e6a9cccef8e9f7ea20a43b2f627c2b6268984ece0d9b8f",
              "record_version": "1.0",
              "sanitized_sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
              "verdict": "sanitized"
            },
            "verdict": "sanitized"
          }
        }
      },
      "export_capability": [
        "json",
        "pdf",
        "vc"
      ]
    }
