{
  "capability_id": "math.factorial",
  "calculation_version": "1.0.4",
  "protocol_version": "1.0.0-proposed",
  "protocol_document_status": "proposed",
  "verification_revision": "2026-10-20.factorial-complete-contract-v3",
  "claim_scope": "Exact decimal-string identity vs Python math.factorial on the 23 published tabulated vectors (named 0,1,5,10,20,100,5000 plus 16 seeded n in 0–4999). 5000! is verified as the full 16,326-digit value and as SHA-256 of those ASCII digits. This is not a whole-domain proof beyond the published table.",
  "oracle": {
    "class": "O3",
    "library": "Python 3.13.5 math.factorial",
    "numeric_model": "CPython arbitrary-precision int — not IEEE-754 binary64",
    "criterion": "actual exact decimal string === independent oracle exact decimal string",
    "backend": null,
    "rounding": null,
    "independent_of_iut": true,
    "same_runtime_as_iut": false,
    "generator_id": "factorial-python-math-o3",
    "generator_version": "1.0.0",
    "generator_sha256": "de8c1b59ea29ed21ee36376627208b80872710dfa87b27bb367a39fdc609a782",
    "table_sha256": "f96ef604c13d8e4da222c3e1e5347cb80273ab2b4b5f794c5a23cb956ba4a9a6"
  },
  "result_summary": {
    "passed": 23,
    "total": 23,
    "failed": 0,
    "exact_mismatches": 0,
    "criterion": "actual exact decimal string === independent oracle exact decimal string"
  },
  "public_files": {
    "manifest": "/evidence/math.factorial/1.0.4.cvp.json",
    "this_file": "/evidence/math.factorial/reproduce.json"
  },
  "vectors": [],
  "disclosure": {
    "policy": "calculatorx-public-evidence-v1",
    "full_validation": "private",
    "representation": "summary",
    "kind": "reproduce"
  }
}
