Repository navigation
"It's too dark to see the wall" flickers, hides the task and its button, and asks for a light that is already on #80
Description
In low light, the "It's too dark to see the wall" card flickers on and off. It replaces the task card, usually hides its "Can't get there" button, and asks for a porch light that is already on.
Seen in. Device field test of TestFlight build 4.1 (beta at 45017ba), iPhone 14 without LiDAR, iOS 26.6.2, 2026-09-26. Run 3 (a real house, outdoors at night, lit by a porch light). The card appeared at least 9 times in 80 s: 0:26, 0:36, 0:44, 0:48–0:50, 1:26–1:28, 1:30.5, 1:32.75, 1:38.25 and 1:43.75 in the recording. Report ID A41-2055-04 in run3-2055.md.
What happens.
- Flicker. The dark card and the task card alternate every few seconds.
- It hides the way out. At 1:26.25–1:28.25 the dark card has no "Can't get there" button, and at 1:30.5 the button is half faded in. At 1:44, on the server request screen, it is there. The tester was stuck on the first task at the time (see "The first "Tilt down… at your meter" task blocked the start in all three runs: no timeout, and the two-spots rule is never explained").
- Wrong words. It says "see the wall" while the task is the ground.
- An impossible action. The porch light was on. The tester: "I cannot. That's the light there." (0:27), "I cannot turn on more light. I'm sorry." (0:48).
- The target ring and arrow stay on screen under the dark card, so it isn't clear whether the task is still active.
Kept photos had a mean luma of 44–99 (median 57) at ISO 1000–3200, against a gate of 40. The scene sat right on the threshold; frames aimed at shadowed gravel fell under it.
Cause.
- The capture gate skips a frame when
meanLuma < minMeanLuma(40) (AutoCapture.swift#L48-L49,#L127). walkCoachingdebounces it by time only: 0.7 s to show, 0.5 s to clear, with no hysteresis on the luma itself (ScanEngine.swift#L564-L594). A scene near 40 flips back and forth.- On the wall walk, coaching replaces the instruction (
WallWalkScreen.swift#L84), and the reply button is only built whenstate.coaching == nil(WallWalkScreen.swift#L264-L265). The gap request screen keeps its button during coaching (GapRequestScreen.swift#L27-L37), which is why it was there at 1:44. - The copy is fixed (
ScanCopy.swift#L77-L78). The close-up's own too-dark copy already suggests the flashlight (ScanCopy.swift#L119).
Fix direction.
- Add hysteresis on luma (for example, show below 40 for 2 s, clear above 48). Keep the task card and add a small "low light" badge instead of replacing it.
- Never hide "Can't get there" on the wall walk.
- Offer the flashlight (a torch toggle). Check whether it works alongside the AR session on phones without LiDAR.
- Don't say "wall" on a ground task, and don't ask for a light as the only action.
- If more than half the frames are dark for about 20 s, say it once, plainly ("It's too dark to measure. Try in daylight."), with a way out.
Related.
- New issues "The first "Tilt down… at your meter" task blocked the start in all three runs: no timeout, and the two-spots rule is never explained" and "No way to finish a scan early: stopping took 7 rapid "Can't get there" taps, each silently setting ends".
- Report ID A41-2055-04.
Screen recordings are in the comment below.
Activity
AidenJohnston commentedon Sep 27, 2026
Screen recordings from the build 4.1 field test (TestFlight 4.1, iPhone 14 without LiDAR). Click a link to play.
Times are in each run's recording. Full analyses: PR #60.
Refresh observed live image and background finalize behavior (#80)