test(#300): harden two CI-only E2E flakes (T148 backoff ceiling, game-3d camera poll)#315
Merged
Merged
Conversation
Speculative, question-first post that brainstorms turning the /chatt 3D atlas into a participatory civic model, drawing on the Model City simulator and Civic League engagement-board concepts. Invites reader feedback on civic UI/UX, metrics, and how a community could participate. Adds a featured OG image, reuses chatt-atlas-og.jpg for social sharing, and regenerates the committed blog-data.json index. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-3d camera poll) Two of the four flakes tracked in #300, each a timing assumption visible in the test code; neither reproduces locally (webkit WebGL / CI-load timing). offline-queue T148 (firefox): the retry-delay assertions checked wall-clock UPPER bounds (delay1<2000, delay2<3000) on the provider's setTimeout backoff [1000,2000]. setTimeout guarantees a MINIMUM elapsed time, never a maximum, so under CI load the intercepted-attempt gaps overshoot the ceiling and the test flakes. Keep the lower bounds (backoff happened) and add delay2>delay1 (backoff grew) — the real behavior under test. game-3d SC-004 (webkit): the three camera-move polls capped at 3s. On webkit's software WebGL under CI load the render loop that writes data-camera-position lags the input event by >3s; the camera does move (these pass on retry), the budget was just too tight. Raise to 10s. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jul 18, 2026
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.
Fixes 2 of the 4 flakes tracked in #300. Each is a timing assumption visible in the test code — root-caused from the source + the CI flake signature. Neither reproduces locally (webkit has no WebGL here; the races only manifest under CI load), so these are code-reasoned fixes, verified by the flake signature matching the mechanism and by each change being a strict loosening/budget-increase that cannot mask a real regression the remaining assertions still catch.
offline-queue T148 (firefox) — wrong assertion, HIGH confidence
The retry-delay checks asserted wall-clock upper bounds (
delay1 < 2000,delay2 < 3000) on the provider'ssetTimeoutbackoff[1000, 2000](supabase-provider.ts:172).setTimeoutguarantees a minimum elapsed time, never a maximum — under CI load (esp. firefox) the gap between intercepted attempts overshoots the ceiling and the test flakes.Kept the lower bounds (backoff happened) and added
delay2 > delay1(backoff grew) — the actual "exponential backoff" behavior under test. The upper bounds tested something the runtime never promises.game-3d SC-004 (webkit) — budget too tight, evidence-supported
The three camera-move polls capped at 3s. On webkit's software WebGL under CI load the render loop that writes
data-camera-positionlags the input event by >3s. The camera does move — these pass on retry — so the mechanism works; the poll budget was just too tight. Raised the three polls to 10s (a longer wait for the same real condition, inert on the happy path).Verification
type-check·lint· full unit suite · production build · Adding cesium inlines a WASM module as a template literal → vendor chunk fails to parse → client JS dead app-wide #294 chunk-parse all green (pre-push gate).Not in this PR (the other 2 of 4)
messaging-scroll T007-T008(chromium) —data-show-scroll-buttonflip race; cause not code-obvious, needs CI reproduction.payment realtime(chromium) — suspectedpostgres_changessubscribe-readiness race; needs CI reproduction to confirm before touching.🤖 Generated with Claude Code