2.9 KiB
M12-05F Status
status: done task: reject forged, stale, or cross-version runtime receipts before use updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false
Scope
The schema-1 freshness envelope is derived from the M12-05E bound receipt set. It carries the
M12-05E byte identity, a canonical digest of the complete bound receipt set, and a canonical digest
of the pinned Blender runtime identity. Before a route can be used, the parent binding hash,
inventory hash, runtime identity, runtime hash, and receipt-set hash must all match the trusted
expectation. The route resolver re-validates this gate on every use and only then returns READY.
Forged receipt content returns RECEIPT_FORGED; an older parent or inventory returns
RECEIPT_STALE; a different Blender version/build identity returns RECEIPT_CROSS_VERSION.
Malformed or unavailable routes remain fail-closed as IO_FORMAT_UNSUPPORTED. The App GLB export and
format-tagged operator search now consume the freshness envelope rather than the unbound M12-05D set.
Evidence
node --test web/tests/unit/io-format-receipt-freshness.test.mjspassed 4/4: exact trusted route, canonical digest verification, forged content, stale parent, and cross-version negatives.node tools/web/check-io-format-receipt-freshness.mjspassed; 14 receipts, App artifact parity, independent canonical digest verification, deterministic regeneration, and all three negative classes passed.- Existing M12-05D/M12-05E unit and checker commands passed unchanged.
npm --prefix web run typecheckandnpm --prefix web run buildpassed;git diff --checkpassed.
Artifact Hashes
- parent manifest:
2fbaaf39c6acd9f55fbdbadccc0b027e9e7763bf069c954a96ca49b193648990 - protocol:
111a630c7beccd31989dc4f78932b7d7b741fb6bef03e45cb39a8139f774d235 - generator:
6a1e798ce46e1d14d833091d4d7ae452dccb13efe583594277785465eb725bbf - checker:
7a8fe69ea1aa2c1e121be008a9fb60fc236f7ef776d2088a7b00b14f46fe3fba - unit:
cd1c2adca81653f98f9a1c6c7d104ad0e3052283213fb7166dac827c956928fe - freshness receipts:
0187ad0d9ea05fc4b152b7abd4945191dbe9ec24dfde4ca7dbe4aadfd1230efe - App freshness receipts:
0187ad0d9ea05fc4b152b7abd4945191dbe9ec24dfde4ca7dbe4aadfd1230efe - App expected identity:
8d65f78aa774ff252871cb1cc09e69b4ff04fbb45e61200eaf67534c9d2651b2 - App:
043ff3a2f39ef3a1303791081b80851b427e7db5dfd9af2161926dd6f1ea9ca4 - package commands:
cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c - manifest:
63e1506801ddee2f1eaf64cad68a9d5c918405f642ca237c6a1ec249ff297623
Next Task
M12-06A: desktop generate the bounded Mesh/PBR/UV/skin/animation GLB fixture group.
Rollback
Remove the freshness protocol, generator/checker, freshness artifacts, unit test, App imports/route
gate, manifest, and this status entry. Restore M12-05E as the queue tail and move the machine queue
back to M12-05F. No parity ledger rollback is required.