{
  "asset": "IP Vault handwritten-digit reference model",
  "origin": "First-party model from the IP Vault reference app, for digits 0–9.",
  "declared_license": "Apache-2.0",
  "license_basis": "Repository README explicitly lists reference-app/ as Apache-2.0; root LICENSE carries the Apache License 2.0.",
  "training_data": "Digit templates and random stroke variations generated by reference-app/model/train.py. No external dataset is loaded. MNIST is mentioned only as a rasterization convention.",
  "initialization": "Randomly initialized dense layers, trained by the local NumPy program. No pretrained weights or external checkpoint are loaded by the pipeline.",
  "architecture": [
    784,
    512,
    256,
    10
  ],
  "training_examples": 120000,
  "generated_holdout_examples": 10000,
  "training_seed": 20261012,
  "source_commit": "2bef4c4d90a6064ba0520a8e5084b73b1e01f434",
  "audit_scope": "Committed training/export source, original artifact metadata, repository licence declarations and file hashes reviewed. Full training was not rerun for this provenance check.",
  "scope_limit": "Demonstration of packaging and inference parity, not a general handwriting accuracy benchmark.",
  "third_party_software": [
    {
      "name": "NumPy",
      "license": "BSD-3-Clause",
      "source": "https://github.com/numpy/numpy/blob/main/LICENSE.txt"
    },
    {
      "name": "ONNX",
      "license": "Apache-2.0",
      "source": "https://github.com/onnx/onnx/blob/main/LICENSE"
    },
    {
      "name": "ONNX Runtime",
      "license": "MIT",
      "source": "https://github.com/microsoft/onnxruntime/blob/main/LICENSE"
    }
  ],
  "files": {
    "reference-app/model/train.py": {
      "sha256": "684304f5213c74579de30b957d697badb1ba8c861a7b67ee13795cedd4292b91",
      "bytes": 13704
    },
    "reference-app/model/digits.onnx": {
      "sha256": "2ede616b50c14b2486ead04cf8a34121dcdb85da75441e855e6900e236f31f3d",
      "bytes": 2143834
    },
    "reference-app/model/digits.ort": {
      "sha256": "043016160d76d90cf5796812b71d9bc42a3f9e6036d4ef8000c9fbd655e678a7",
      "bytes": 2148248
    },
    "reference-app/model/digits.tflite": {
      "sha256": "5f3e39c7cc4a5b3fd5d8e2911de54b06e9ec46ab61f7d8a0e6af04486b4c14f7",
      "bytes": 2144464
    },
    "reference-app/model/vectors.json": {
      "sha256": "f3d91b72874651524e506509318a9f2d7c84d49b23546091ba26906da45e2d5f",
      "bytes": 83829
    },
    "reference-app/model/to_tflite.py": {
      "sha256": "bc30b1825f807160a22c3ba613031fcdada50db38f95f14c9f73f4fc58ee4c39",
      "bytes": 5806
    },
    "LICENSE": {
      "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
      "bytes": 11358
    },
    "README.md": {
      "sha256": "a95c986de7beff7c13573566cbaf3f2e0fd1c928438e37c1aaf5c3a1aba13164",
      "bytes": 8263
    }
  },
  "verified_case_binding": {
    "matching_source_hashes": {
      "training_program": true,
      "onnx_weights": true,
      "ort_weights": true
    },
    "baseline_apk_sha256": "425b7c2895794b3606d19d6506868d0fc8ec86253e09f57382db5751acd4c886",
    "protected_apk_sha256": "d070588b5456bf7ce1290817cfc5db202b3d638c456f00d942f19f2dfd350381"
  }
}
