{
  "prepared_utc": "2026-11-13T20:38:18.859631+00:00",
  "source_commit": "213b041fddd593458cbffadda018b3c8f69a21c3",
  "sources": {
    "thin_film\\scripts\\linear_freefilm\\recover_outputs.py": "b63120450c5403948577c439732425950cfb43584ce98a802f82fe2d6c3ec4a3",
    "thin_film\\scripts\\linear_freefilm\\run.py": "cec350c52260894123306d12cd749d15a6a229a0e01709019310b967405dfe53",
    "thin_film\\scripts\\linear_freefilm\\reference.py": "f0f5e66a63eb03b0ccccfa4bf6e8e69ac3b1c3de32b76cbd3580f76a9bd33527"
  },
  "original_protocol_sha256": "838b502b0e5f5cacca514197037fbe13ba8bc759c9ba2aa09bcfaa6d06757f27",
  "modal_states": {
    "lambda160_N16.npz": "18439549b16048f879f1682fcf60573dfab1c90aecc1764b3ed33b5a78e22afd",
    "lambda160_N32.npz": "407a8563172e4f30cbc4095bd74834810126256344fd5c6d0952ad7c8883ae1f",
    "lambda160_N8.npz": "db591f81c5a45f012da84c69137373ee0e4c601eaa5a1c2d840b518c3bb7204a",
    "lambda40_N16.npz": "e4f9cf2d4f2e471189e5065ce113b3171a8112766c7ac4b0bb6468b4d816634e",
    "lambda40_N32.npz": "1f59d75285e0af81303729d73deb1d608a8b8f3cbe1497fc39172f1ccb4bebd0",
    "lambda40_N8.npz": "500e7200879c6efea8ebac1ea11ea7d946a68bf7c1d9aece2690165b618584a2",
    "lambda80_N16.npz": "371e1324024aa7e4129e3d27a204c0cfdd96053f380dd1c3bd3079f114a126c3",
    "lambda80_N32.npz": "99f8b12eecc138d6f8c40f24f8faa409e5dd7c3ada4a3d5c3e965e8d5dd2cb92",
    "lambda80_N8.npz": "4e862eb14ed8b21d7c462249fa1d17871bae106e898140967c42db49550bbd35"
  },
  "scope": "Override NumPy scalar JSON export; reuse readonly modal states; unchanged original analysis/control logic"
}