{
  "actual_observations": "observations.json",
  "artifact_sha256": {
    "assessment.json": "4566c3ef1a6358c657219a1549101fde3242a5c7e845ec03d64b37c348a00b6c",
    "audit.json": "c9bb818ae4967a5f511bcc919ad19feeeefd8228fba2b804f9f0a850a782c71b",
    "browser-verification.json": "1c7b4228bc9ec99e07887a1b7d6f08e75c35257559bae419a7dc01d27feb9ec2",
    "commitment-envelope.json": "9948c298e8e1b061296949cb943aa7dce66bcea1db648c67ff39e7ee6ffe198d",
    "configuration.json": "40e05d567b152fea0fbc6b5a105237f8c8871c5a35a56ce03452f394ab061f20",
    "measurement.json": "e721857f18959c11619b0d98cee4bb0eeffe11fd1e5424792e3e721f347aca7f",
    "observations.json": "21a06fd23aefbe07ccb4658a24b196a0f1c1532887655d523696ecc55334fb3d",
    "python-verification.json": "173e1d0d3b33eba92ca2e8d7cd41f699b55088d1c39f27eb833f9ee9e525a838",
    "receipt.json": "15b5428dec454831fb7e181d8870f5d4fca17ed1f846d21883ddc7ac1f0e6938"
  },
  "commands": [
    "python -B tools/reference_experiment.py --check",
    "node tools/verify_reference.mjs experiments/reference-v1/artifacts/receipt.json"
  ],
  "environment_assumptions": [
    "Python 3.10+; tested runtime recorded in validation document",
    "Node 18+ with WebCrypto; tested with Node 24",
    "UTF-8 source normalized to LF for source hashes",
    "relative paths normalized to /; observations sorted",
    "No live TSA; no database, application server, or paid API",
    "Manifest does not hash itself and is not signed"
  ],
  "evidence_format": "r2pq-evidence-receipt/2",
  "exclusions": [
    "outside corpus/",
    "extensions other than .py/.conf",
    "files over 512 KiB",
    "unsupported cases excluded from recall/precision denominator"
  ],
  "expected_observations": "../cases.json",
  "experiment": "reference-v1",
  "fixture_set_sha256": "012c06e54dd5ed22d8fcefa8f78a306292a6e2a8198092ff0be709fd438e7f82",
  "fixture_sha256_utf8_lf": {
    "cases.json": "992e2be33546b93cfdd00e7024b4c4e416fba3e3a13845b93f74ec724d43bb25",
    "corpus/aes_suite.conf": "e8718f3ccee3663324664a687e6e4990b7c81c6327979763a4aef28e1dea5e30",
    "corpus/curve_alias.py": "3ca18d59e8285cfc7a9aa83d4900e903ef3c43ac3f03f2661db4e0fb9df0df18",
    "corpus/dynamic_alias.py": "86bb7729633fe4cfcffc4c88b435e4a6a70ac0528dcdb401f658f9c418457619",
    "corpus/ecdh.conf": "e17664009f4c6cec6ffc0ab69e5a6d201ce8800a5eb3d23b31b8eeaab3cd2474",
    "corpus/ecdsa.conf": "4395c255c1051576d8d23a90f1508562b0f8e8491b88ef2e3a79ff71060f1e16",
    "corpus/library_only.py": "7766ce37c7c7b1a328af6d41ad40ef289548b3a25e7014a4c43bdc81f0029f6a",
    "corpus/lookalike.conf": "d7663c36b7c581a29f40f4b57ee5bd6f7793e17e9a97cbab3ec153e331b986f5",
    "corpus/md5.conf": "6abc4fad13345c38be701756dfbfdfd6d4c0b73ec5d76c78528db95bc08f5ae8",
    "corpus/mldsa.conf": "0663f1e102d95ffd538ad56df168ccc9882e01e43b936241f82f2638a1e7a1e1",
    "corpus/mlkem.conf": "80ac5c053650733d4776ed4378d207bf37689d4f14fbe8ad877d802333a2d964",
    "corpus/ordinary_words.conf": "d23f2673b47da6817db3ba3e7cd206d7207fe9fa2d5e6ae1280f34d616365a8c",
    "corpus/pqc_todo.py": "ef480cf9e59cd3d3c4c7a3f2d431fed8888ea97fc2074b534162e576541111e6",
    "corpus/rsa1024.conf": "33a4fe5507679a725fdbd09caff39302bceecbdbbf97891d7b377592096c71ec",
    "corpus/rsa2048.conf": "38d21fc0f9109c335c6ab97c5b30699e830356f0167037df5ef89e533dbc34e3",
    "corpus/rsa4096.conf": "ac2fe19c090d6b6a1380af62173b225ac70a94ab6334e2f65c78a9f02dcc5c87",
    "corpus/rsa_comment.py": "fdb9a52601a819ee4c700c9de5319ae2cce7eac1e92ec6b6a03f5b202281d11a",
    "corpus/rsa_unknown.py": "f940cf6749c8b6e2f795a12af116be71d41f81f201713cf5c7c7c0b9237cbc56",
    "corpus/sha1.py": "445340c4471354530d5918a5f8a0dd562980e36703eb6234bc9eab8dc447d559",
    "corpus/slhdsa.conf": "089e1c4a89563901aebf753025073e8337386ea918d2693ad5d5a481d63eeec4",
    "corpus/triple_des.py": "336a31be89f7c1fcf55e608c8cab13eb9a8b9498bda781b4d4389ba37cfac39b",
    "corpus/unrelated_sha1.py": "dda4d0c1ce1fe0d6c803b8a544890e1b8dfe11f27ff26e84d9ba730403adc135"
  },
  "format": "r2pq-reference-experiment-manifest/1",
  "included_files": [
    "aes_suite.conf",
    "curve_alias.py",
    "dynamic_alias.py",
    "ecdh.conf",
    "ecdsa.conf",
    "library_only.py",
    "lookalike.conf",
    "md5.conf",
    "mldsa.conf",
    "mlkem.conf",
    "ordinary_words.conf",
    "pqc_todo.py",
    "rsa1024.conf",
    "rsa2048.conf",
    "rsa4096.conf",
    "rsa_comment.py",
    "rsa_unknown.py",
    "sha1.py",
    "slhdsa.conf",
    "triple_des.py",
    "unrelated_sha1.py"
  ],
  "limitations": [
    "Designed corpus, not a representative sample",
    "Text and syntax do not prove execution",
    "One-leaf package; multi-leaf behavior covered separately by existing tests",
    "One known non-cryptographic identifier false positive",
    "Two unsupported cases reported separately",
    "Manifest is not automatically committed by the receipt; it is a separate unsigned reproduction record",
    "Historical timestamp fixture is unrelated to this root and is not incorporated"
  ],
  "measurement": "measurement.json",
  "merkle_root": "7e656547e29202bb1a2ea50f0c6bfe7c21a17c18d4f93517fcef025dd46f09c6",
  "result_contract": "r2pq-verification-result/2",
  "scanner_semantics": "candidate-indicators/2",
  "software_sha256_utf8_lf": {
    "scanner/merkle_audit.py": "bf895711fd690960d56d0bcbcbbe8c86569ce732008e25d6bd932ca5ec923692",
    "scanner/receipt_json.py": "5b33f9e9380a7de2d731c88f628310ec5195adacd690efc36f4d35c0f1ef5874",
    "scanner/scanner_core.py": "a292237064a6b19e763abe563656cae68d309e7ba7adeaa714e082601ea7e19c",
    "scanner/timestamping.py": "0581040ec49e0c4d47b8fa316b2f6478a22ced75d5025944d8f2e97bb4203f43",
    "tools/reference_experiment.py": "7358d0760be0ecfa21e5782c66552db863a9853bbb16854a7d8cc8e1fd4aaa1e",
    "tools/verify_reference.mjs": "daa60ee903e6b4c09b2ff5892affed1cdcad6d136ed7a134f287223cd1248fb4",
    "website/verify/lib/der.js": "0d94fec282db96f4e14a122899d9266a6f39348b4dfa3dc2f64e0fae0672fea5",
    "website/verify/lib/primitives.js": "0c382e18f6c86df76059a27485cbd79c3fc83e79e533bda6b4c94278db6da959",
    "website/verify/lib/receipt.js": "acee0ab56087e5880ae7365165d37b3c7ba18e9f829ef557a3f4e7e532db4a81",
    "website/verify/lib/rfc3161.js": "2d4b6575ea70e5da3df4975d163e32cf99f8e48c358cedd76cf7b4b6fa435e5d"
  },
  "source_baseline_revision": "61a70cd476f897e5952146f26cea67170e6c9f52",
  "synthetic_time_ms": 946684800000,
  "time_meaning": "Fixed replay parameter; not scan time or trusted timestamp"
}
