platform-route-numeric-investigation.json
docs/evidence/platform-route-numeric-investigation.json
1{
2 "fixture": "authored-platform-routes.1",
3 "stage": "Pre-fix development capture on base 9735b99",
4 "firstDivergentTick": 59,
5 "field": "/payload/entities/snapshot/entities/1/components/Transform/rotation/1",
6 "nodeValue": 0.09651617961176595,
7 "browserValue": 0.09651617961176594,
8 "nativeHashes": {
9 "node": "66b9ca2a576317daa8d7dab34e5d9583251aa6adb15437d5dd34a437f871fa21",
10 "browser": "66b9ca2a576317daa8d7dab34e5d9583251aa6adb15437d5dd34a437f871fa21"
11 },
12 "cause": "Canonical orientation reconstructed native yaw with JavaScript trig; V8 versions produced a one-ulp difference although native bytes were identical at this boundary.",
13 "correction": "Authored route transforms now project the owned native quaternion directly. Existing manual platform representation remains unchanged for profile-six migration. The exact cross-runtime checkpoint assertion is retained.",
14 "followup": {
15 "stage": "After native quaternion projection, before arithmetic yaw wrapping",
16 "firstDivergentTick": 128,
17 "fields": [
18 "/payload/entities/snapshot/entities/1/components/KinematicPlatform/targetYaw",
19 "/payload/physics/platforms/authored:00000000-0000-4000-8000-000000000002/target/yaw"
20 ],
21 "nodeValue": 0.49333333333333157,
22 "browserValue": 0.4933333333333317,
23 "nativeSnapshotsEqual": true,
24 "correction": "Route angle normalization now uses bounded arithmetic, with exact authored endpoints, instead of atan2(sin, cos). Exact checkpoint comparison remains required."
25 }
26}
27