Skip to content

feat(staging): pancake-vs-VR plinth calibration sweep (#225 E1.4e) #253

Description

@bradleypmartin

Sub-issue of #225 — fourth and final PR in the E1.4 sub-epic implementation chain under v1.0 staging epic #221. Follows PR3 (panel-backed readout visual).

Scope

Smoke-driven calibration sweep of the plinth's per-scene anchorWorldXYZ, workingSurfaceWidth, and workingSurfaceHeight (and possibly tilt) against both pancake and VR form factors. Likely 1–2 commits adjusting first-pass constants from PR1/PR2/PR3.

Approach

  1. VR smoke (Quest 3S, Cloudflare PR-preview URL): each scene at default user pose — does the plinth feel reachable + comfortable? Is the working surface at usable height for sliders/presets? Does the surface tilt feel like a drafting table or like office equipment? Per the sub-epic plan, this is also where the obelisk alternative (the §3.2 escape hatch from PR1's drafting-table) gets revisited if the drafting-table verdict is negative.

  2. Pancake smoke (desktop, default OrbitControls pose): plinth + math object framed together on first paint; no manual orbit required. Mouse hit targets work for every interactive primitive. ≥1080p one-third-viewport readout legibility (screen-share proxy per the v1.0 master plan's pancake quality bar).

  3. Single per-scene anchor across both modes. The sub-epic plan locks one shared anchorWorldXYZ per scene for both pancake and VR (no per-mode anchors). If smoke shows pancake-vs-VR shared positioning fails, pancake wins the calibration — pancake is the v1.0 audition surface; VR adjusts. File a follow-up only if per-mode anchors actually become necessary.

Likely smoke-tunable knobs per scene

  • anchorWorldXYZ X/Y/Z (plinth's floor footprint)
  • workingSurfaceWidth (X-extent of the tilted top)
  • workingSurfaceHeight (along-tilted-face extent)
  • Plinth tilt angle (default ~20°; per-scene override possible if smoke shows different feel needed)
  • GRAB_RADIUS_MULTIPLIER_PLINTH if VR controller comfort falsifies pancake's 1.5× value (binary-search bracket [1.25, 2.0] documented in clusterRackTokens.ts)

Acceptance

  • Quest 3S 72Hz hold on all four scenes.
  • Pancake ≥60 fps maintainer machine on all four scenes.
  • VR ergonomic comfort verdict per scene: in-headset, the plinth's position + surface feel like "I can use this," not "I have to reach for that."
  • Pancake first-paint framing holds without manual orbit on all four scenes.
  • No plinth ↔ stage geometry intersection (StageFloor / StageRailing / StageInnerRailing / ContrastPit) in any scene from default camera view.
  • First-pass calibration constants updated in code; doc-comments reflect the smoke verdict on each constant; binary-search brackets + next-step rules preserved.

Possible follow-ups (filed only if surfaced at smoke)

  • Per-mode (pancake vs VR) plinth anchors — if single-anchor compromise breaks one form factor.
  • GRAB_RADIUS_MULTIPLIER_PLINTH retune — if PR3's value-locked-from-PR1 needs to change after the full cluster + panels are on plinth.
  • Obelisk silhouette — if the drafting-table console doesn't survive in-headset evaluation.

Closes #225

PR4 acceptance completes E1.4 sub-epic. Closes #225 (all five children a/b/c/d/e shipped).

References

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions