Repository navigation
P0a: gate leaked debug UI out of survey framings (+ eng-review re-scope) - #38
Merged
Merged
Conversation
Grounded in live+static diagnosis: aim line = real gameplay UI (LineDashed, scene.js:1152) leaking into survey cameras; water.js is a real shader (pond "checker" = distance moiré/reflector, TBD live); pin flag is red not the "yellow T"; distance markers are DOM (not in captures). Structure: Task 0 = live diagnostic gate (raycast/toggle to ID each of 6 artifacts + classify bug-vs-UI-leak) then per-artifact fixes. Ready for /plan-eng-review. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…bility gate Eng review (4 findings folded) + outside-voice challenge (10 findings, 3 verified against code) re-scoped P0. The two surface-material fixes (classmap dot-screen, HD macro tonal seam) touch the exact turf.js surfaces P2 rewrites, so they were deferred to P2 (do them once). P0a keeps the genuinely-blocking work: gate leaked gameplay/debug UI out of survey framings — the dashed aim line (verified ungated) AND the 26x ball / 6x pin auto-scale (scene.js:1322, a missed artifact the outside voice caught). Corrected the master-plan "T = tee sprite" claim (no sprite exists; likely classmap #ffff00 bleed). Honest exit bar replaces "zero artifacts". Committed capture fixture + a camMode-gating unit test added. GSTACK REVIEW REPORT appended. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The dashed aim line and the distance-inflated ball (up to 26x) / pin (6x) are address-view aids that leaked into free-cam/overview captures, reading as a GIS-viewer debug layer. Extract a pure play-framing predicate (framing.js: isPlayFraming/ballReadScale/pinReadScale) shared by scene.js and a new unit test; ball/pin return to true scale and the aim line hides outside a play framing (camMode==='idle' && !anim). Play-mode behaviour unchanged. 294/294 tests green (test/scene-ui-gating.test.mjs added). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Commit docs/fixtures/chambers-sweep.json (eng-review #1 pinned sweep). Record the P0a outcome across the sub-plan, TODO, and HANDOFF: UI gate shipped + verified before/after; live Task-0 diagnosis found the "yellow T" is NOT a sprite (0 sprites in a 462-mesh scene -> master-plan claim was wrong) and the pond "checker" is NOT a cheap Reflector-gate (reflOn == reflOff) -> both deferred to P2/later. HANDOFF now points to the master plan as the live arc. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First build phase of the Reality Master Plan. Ran the full pipeline: sub-plan →
/plan-eng-review(+ outside voice) → build.What the review changed
The eng review (4 findings) + an independent outside-voice challenge (10 findings, 3 verified against code) re-scoped Phase 0. Two of the six original fixes (classmap dot-screen, HD macro seam) touch the exact
turf.jssurfaces P2 rewrites — so they'd be throwaway. They were deferred to P2. The outside voice also caught a real missed artifact: the ball auto-scales to 26× at survey distance (scene.js:1322), a bigger "debug viewer" tell than the aim line. What remained (P0a) is the genuinely-blocking work.What shipped
public/render/framing.js— pureisPlayFraming/ballReadScale/pinReadScale, the single source of truth for "is this a play framing."scene.js— the dashed aim line + the distance-inflated ball/pin now render only in a play framing (camMode==='idle' && !anim); survey/overview/beauty shots get true-scale objects and no aim line. Play-mode behaviour unchanged.test/scene-ui-gating.test.mjs— locks the predicate + scale gating (no existing test covered it). 294/294 green.docs/fixtures/chambers-sweep.json— pinned capture sweep so before/after are pixel-comparable and re-runnable.Verified
Live on the render harness: BEFORE free-cam frame showed the dashed aim line + a 6.2×-inflated ball at 113 m; AFTER is clean (aim line hidden, ball/pin 1×); the idle play frame keeps its aim line + readability scale (no gameplay regression).
Live Task-0 diagnosis (drove the deferrals)
Both plan docs (master + P0a sub-plan) carry the full GSTACK review report + the re-scope rationale.
🤖 Generated with Claude Code