# M10-14 Status status: done task: Validate source hash, frame range, byte budget and version for every Physics cache family updated: 2026-08-16 America/New_York ## Scope Every Physics family cache now uses cache schema 1 and binds its family, desktop or server bake origin, Blender 5.2 version, source blend/settings/input/cache SHA-256, frame range, total byte length and per-frame byte offset/length/SHA-256. `COMPLETE` caches require every frame; `PARTIAL` caches may omit frames but remain strictly ordered and byte-contiguous. Per-frame and total cache budgets match the existing bounded Simulation cache policy. `verifyPhysicsCachePayload` hashes the actual current blend, full cache payload and every frame before consumption. Family/source/version/range/budget drift fails closed. This task validates cache identity and bytes; it does not implement a Blender family decoder or change the existing cache playback capability block. ## Evidence - `node --test web/tests/unit/physics-cache-family.test.mjs`: 3/3. All seven families and both desktop/server sources pass; source/payload drift and family/schema/version/ range/budget/undeclared-field failures return stable codes. - `WEB_TEST_PORT=5533 npm --prefix web run test:physics-cache-family`: unit 3/3 and Chromium Worker 1/1, matching the M10-14 golden. - M10-13 probe Chromium 1/1, Physics Main reader, M10-05 Simulation cache identity unit 5/5 + Chromium 1/1, typecheck, lint, production build (74 modules), and `git diff --check`: passed. ## Implementation Hashes - `web/protocol/error.ts`: `6972a144bdc61c2a4270c88df2d86c75640bb5f24b5ac3b7f9a02d69d3c500fd` - `web/protocol/physics-simulation.ts`: `b02b820503d79cd26b0323a4d2033e79d0eeb3032befd26fafe5eab55634584c` - `web/app/src/workers/physics-simulation-test.worker.ts`: `453c6e9e683b9da0ef7ce4bd0e4e430b97102d80ddb9b14cc9d075319b37d818` - `web/tests/unit/physics-cache-family.test.mjs`: `e1c6f07ec58ce4c4c987bd8a36f270497ae3a0f521d6ed27d7f199debeeaccb2` - `web/app/src/workers/physics-cache-family-test.worker.ts`: `8af676506cc0ff1501816431d92d82ca15316b40095d617ecb664b9608e209e0` - `web/tests/e2e/physics-cache-family.spec.ts`: `6a2788587f6692bf5bf19d76400810fa277a6985d1a6ecc1b8d1adb85c609249` - `tests/golden/M10-14/physics-cache-family.json`: `b220d1fd73f307213078ce3cbd6212544f97ade84a45d54847f107cef69d302d` - `web/package.json`: `9baeb319d8c740f67f3e7615942c78f920e7a56b0d654a5a8f47d68de7243eb4` ## Rollback Restore the former Physics cache binding, remove the two new cache hash error codes, unit/Worker/E2E/golden/package command and this status file, then restore M10 to 13/15. Keep M10-13 solver probing and the existing GN Simulation cache schema 2.