49 lines
2.6 KiB
Markdown
49 lines
2.6 KiB
Markdown
# M10-13 Status
|
|
|
|
status: done
|
|
task: Probe local Physics solvers per family and keep unsupported families bake-only
|
|
updated: 2026-08-16 America/New_York
|
|
|
|
## Scope
|
|
|
|
The Physics protocol now probes all seven declared families independently. A local
|
|
solver becomes `READY` only after its runtime export exists, initialization succeeds,
|
|
its thread requirement is met and its required memory fits the active WASM limit.
|
|
Missing exports, initialization errors, insufficient threads or memory, and malformed
|
|
probe results remain `BLOCKED` and route to `DESKTOP_SERVER_BAKE`.
|
|
|
|
The production inventory has no installed solver runtime adapter, so Rigid Body,
|
|
Soft Body, Cloth, Fluid, Dynamic Paint, Particle and Hair all remain bake-only.
|
|
The synthetic positive probe verifies the gate and does not declare an actual solver.
|
|
Desktop family decoding, cache playback, browser bake and server job submission remain
|
|
blocked for later tasks.
|
|
|
|
## Evidence
|
|
|
|
- `node --test web/tests/unit/physics-solver-probe.test.mjs`: 3/3. It covers the
|
|
default seven-family fallback, family isolation across all four gates, and invalid
|
|
environment/result fail-closed behavior.
|
|
- `WEB_TEST_PORT=5530 npm --prefix web run test:physics-solver-probe`: unit 3/3 and
|
|
Chromium Worker 1/1. The browser result matches the M10-13 golden and keeps every
|
|
failed family on `DESKTOP_SERVER_BAKE`.
|
|
- `WEB_TEST_PORT=5531 npm --prefix web run test:e2e -- --grep "N-018 physics"` and
|
|
`npm --prefix web run test:physics-main-reader`: passed without changing existing
|
|
metadata/cache gates or claiming a solver.
|
|
- `npm --prefix web run typecheck`, `npm --prefix web run lint`, production build
|
|
(74 modules), and `git diff --check`: passed.
|
|
|
|
## Implementation Hashes
|
|
|
|
- `web/protocol/physics-simulation.ts`: `adc57a12c7f57c6b1d5f99590d3c36cefa83636aca86c780c2520f3f41148981`
|
|
- `web/tests/unit/physics-solver-probe.test.mjs`: `e499d55770d2024c75803ce1acc1c234814c027279f2b40f42195fd480977653`
|
|
- `web/app/src/workers/physics-solver-probe-test.worker.ts`: `fbad383de186a659440da42dcad988310ca2e483db27e30d74342c8f57a0f49a`
|
|
- `web/tests/e2e/physics-solver-probe.spec.ts`: `1419b98d68da9b0ab0bf41b37843442741593655e2693159d84e069f1dec3f09`
|
|
- `tests/golden/M10-13/physics-solver-probe.json`: `bcc8f9094e2b0d8f41ef01fda0daa2a29693d188e602447d6d06358aaa751df4`
|
|
- `web/package.json`: `875162709315e2a8116c5d28023576a4b95fb076b79453de8b21acdbff2df9dc`
|
|
|
|
## Rollback
|
|
|
|
Remove the solver probe types/functions, unit/Worker/E2E/golden/package command and
|
|
this status file, then restore the M10 count to 12/15. Keep the existing N-018
|
|
metadata, Main reader, Simulation cache and BTF1 playback primitive unchanged.
|