The ten days between late August and early September saw the densest burst of
commits in the entire portfolio. Over 200 pull requests landed in
Spatial Cognition Platform, driving nineteen separate workstreams from
scratch to completion and culminating in the project’s initial v0.0.1 tag.
Building an XR workspace that lets operators inspect agent reasoning graphs in
room-scale pass-through sounds conceptual until you put the headset on. On real
hardware, physics, SLAM tracking quirks, and rendering lifecycles immediately
collide.
The most critical bug of the sprint surfaced during additive scene refactoring
(#222). To keep load times reasonable, we had split the monolithic Unity scene
into modular additive components: bootstrap, tracking rig, user interface, and
content workspace. But when the OVR camera rig and passthrough system were loaded
asynchronously several frames after application startup, the Meta OpenXR runtime
missed its initial visual SLAM lock. The tracking system attempted to dead-reckon
camera position from raw IMU data, sending the operator’s virtual head into a
simulated freefall at 10 m/s² down to -840 meters. Moving the camera rig load
into a synchronous Awake invocation before launching additive content steps
restored immediate visual lock.
A second hard-won lesson came from spatial anchor management (#145). To let an
operator anchor a reasoning graph to a physical table and walk around it, the
system uses spatial anchors backed by a drift watchdog. In headset testing, taking
the device off to check logs (a doff/don cycle) routinely destroyed the anchor.
The root cause was timing: during the unmount, camera tracking pops by roughly
0.3 meters and anchors experience 20 to 30 seconds of settling wander. Because the
watchdog only checked for mount events rather than listening for HMDUnmounted,
it treated the settling jitter as unrecoverable physical drift and detached the
graph. Teaching the watchdog to stand down while the headset is off and adding a
grace window upon remount made anchors rock solid.
With tracking stable, the mathematical visualization took shape. We implemented
seeded deterministic layouts with force relaxation (#19) so 3D node graphs
organize into predictable clusters without endless physics oscillations, and
layered reasoning planes with status banding and interactive evidence edges
(#39). On August 30, the platform cut v0.0.1 (v0.0.1), moving the project
from a simulator experiment into a verifiable headset deployment.
Lessons learned
- Load core XR camera rigs synchronously before the OpenXR frame loop starts.
Splitting Unity scenes into additive chunks is good hygiene, but the primary
camera rig, SLAM trackers, and passthrough shaders cannot be deferred. If
OVRManagerawakes after the OpenXR frame loop is already spinning, tracking dead-reckons into a catastrophic vertical plunge. - Pause spatial anchor drift watchdogs during HMD unmounts. When a headset is
removed, tracking cameras lose optical reference points and jump. If a drift
watchdog runs during this period, it will interpret normal sensor noise as
spatial drift and detach perfectly valid room anchors. Always suspend drift
checks during
HMDUnmountedstates. - Seeded 3D graph layouts need displacement damping to prevent visual jitter. Simulating spring forces in 3D can cause node networks to oscillate indefinitely. Clamping the maximum translation delta per frame and applying a cooling decay factor guarantees that graphs settle quickly into a readable, spatially memorable layout.
- Separate hardware harness scenes from dynamic content scenes. Keeping the OpenXR input handlers, diagnostic HUDs, and passthrough layers in a dedicated bootstrap scene keeps them isolated from frequent content edits. Agent data and 3D graph prefabs can then be loaded, reloaded, or cleared without risking hardware tracking restarts.