# FW-P2-001B-G Part Runtime Gate - Baseline: FreeCAD 1.2 checkout `4f4e9244e613ea2df06e70027074a562695048cb` - Build target: `FreeCADWebPartBoxProbe` - Build command: `env -u EM_FROZEN_CACHE EM_CONFIG=build-web/emscripten-config.py ninja -C build-web/configure FreeCADWebPartBoxProbe -j8` - Smoke command: `node src/WebAssembly/FreeCADCoreProbe/part-box-smoke.js build-web/configure/bin` - Smoke result: `constructorProbe=1`, `volume=23.999999999999996`, `invalidVolume=-1`, `invalidError=Length of box too small`, `recovery=1` - Registration result: `stateAfterValid.calls=2`, `stateAfterValid.runs=1`, `stateAfterRecovery.calls=4`, `stateAfterRecovery.runs=1`, `initialized=1` - Resource result: C++ probe objects destruct without entering the Python GIL path when the Web core has no Python object. - WASM validation: `file` identifies `FreeCADWebPartBoxProbe.wasm` as WebAssembly MVP module. - SHA-256: - `FreeCADWebPartBoxProbe.js`: `3ee5499ba4cb6739c4dac176f48d75b7c07f245861adfee9e03f78d44f73919b` - `FreeCADWebPartBoxProbe.wasm`: `06b6e0ba247f68549b4323b78f3d662a99107e23a24ebafda1d19b64e26879c0` - Logs: `freecad-part-box-probe-build-r4.log`, `freecad-part-box-probe-smoke-r4.log` - Gate decision: passed; P2.1 Part runtime is complete. This does not claim Document creation or FCStd persistence. - Next task: `FW-P2-001C`