{
      "tool_id": "art-194-digest-manifest-builder",
      "tool_version": "1.0.0",
      "display_name": "Digest Manifest Builder",
      "mcp_name": "build_digest_manifest",
      "mandate_type": "cryptographic_mandate",
      "wave": 34,
      "gpu": false,
      "url": "https://ainumbers.co/chaingraph/art-194-digest-manifest-builder.html",
      "description": "Binds N file digests into one canonical, hash-anchored manifest. manifest_sha256 is SHA-256 over the JCS-canonical sorted entries array. This builds flat manifests with no tree, which is a different job from verify_merkle_batch (cry-04, which verifies Merkle proofs); BrowserChain's log owns Merkle trees. Also serves the plain checksum-tool use case. Returns the manifest plus checks for duplicate names, duplicate digests, malformed hex, and path-like names that are flagged and basenamed. Feeds the conversion receipt builder. Zero network, zero PII.",
      "input_schema_ref": "chaingraph/art-194-digest-manifest-builder.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:f7773f9cb20b6ccffd83c7dc8eadff91a541c6046f38620c66139db89449959b","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": "HCsssgjvdhYeDSGI89H17RfgINlPVIiaFo2n7IQ067cvNcfXaPzXkHOGLBgPWNCwDqVm6NlAXwEeAQuuA1xKnyUx9z//VjcDIK482+cDxbmR9DLzzMV00ft/50pcWs0xEeGXrED6NR5QO3s4hpC11sWxiBfmRGgnFL4a0FHzuKUgF5dtWftOUYHZ0afuafmtEdQbnfFOnZri1guMtiR9wgWnqs/uqivV6NISqV2Od+VIp4ITBK5VO3db98X8cEW9GfL92x7lYAb+li1PKkXj5BMDJXoJqWjkkNLXrBnQRD4wG6Gnya3X9D35hzEahbMz7Nw0Rf53vopv4hU9GxQnog==",
        "journal": {
          "chaingraph_version": "0.4.0",
          "kernel_digest": "sha256:784e8fbbe151a2af772343ca7a7d86d69293ddf2fb54a58aeb41223f7c4394f4",
          "output": {
            "all_checks_pass": true,
            "checks": [
              {
                "check": "all_digests_64_hex",
                "detail": "all digests are 64 hex",
                "pass": true
              },
              {
                "check": "no_duplicate_names",
                "detail": "no duplicate names",
                "pass": true
              },
              {
                "check": "no_duplicate_digests",
                "detail": "no duplicate digests",
                "pass": true
              },
              {
                "check": "no_path_like_names",
                "detail": "no path-like names",
                "pass": true
              }
            ],
            "manifest": {
              "entries": [
                {
                  "bytes": 512,
                  "media_type": "text/csv",
                  "name": "data.csv",
                  "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                },
                {
                  "bytes": 10240,
                  "media_type": "application/pdf",
                  "name": "report.pdf",
                  "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
                }
              ],
              "entry_count": 2,
              "manifest_sha256": "19c3913b698f2732bb2d2c397e89021001cbd510a4d322577da915c94ef8e52f",
              "manifest_version": "1.0",
              "purpose": "release-bundle",
              "sort": "name",
              "total_bytes": 10752
            }
          }
        }
      },
      "export_capability": [
        "json",
        "pdf",
        "vc"
      ]
    }
