You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
finding (QA harness): nav-surfaces-render's one red assertion is the test's own timing race — poll boundingBox until non-null instead of a fixed 1500 ms wait #7569
Not a product defect. This is a fix to the checklist item under docs/qa/platform-checklist/, filed so the harness stops manufacturing a red that costs a triage cycle every run.
Symptom
nav-surfaces-render scores 30/31 pinned surfaces green with one red chart assertion. The red was disproven as a product defect and traced to the suite's own measurement window:
3 fresh loads each rendered 5 real charts — the product renders correctly every time.
Polling boundingBox every 400 ms returned null only at t = 1.5 s, and non-null for all 19 later samples.
t = 1.5 s is exactly where the suite measures, and exactly the recharts ResponsiveContainer initial-layout window.
The same test re-run in isolation is 4/4 green.
So the item reports a failing surface whenever the fixed wait happens to land inside the layout window — a coin-flip red on a correct product.
Root cause
The assertion waits a fixed 1500 ms and then reads boundingBox once. ResponsiveContainer has not committed its layout at that instant, so the box is null and the assertion fails. Nothing about the product is involved: the chart is present and measures non-null from the next sample onward.
Fix
Poll boundingBox until it is non-null (with a bounded timeout) instead of waiting a fixed 1500 ms and reading once. The change lands in the checklist/harness under docs/qa/platform-checklist/ — no product code.
This is the same de-flaking shape as the recently merged #7472 ("bracket case 2's negative assertion instead of waiting 4s") and #7409 ("derive the dot-root watcher waits from the case budget instead of a fixed 20s race"); follow whichever polling helper those settled on rather than adding a third spelling.
Reproduction
Run the nav-surfaces-render checklist item as part of the full platform-core area — 30/31, with the chart boundingBox assertion red.
Re-run the same item in isolation — 4/4 green.
On a fresh load, poll boundingBox every 400 ms: null at t = 1.5 s, non-null on all 19 subsequent samples; 5 real charts render on each of 3 fresh loads.
Findings triage: resolved the co-applied pm:queue + finding dual state → pm:queue (kept domain:devx). Root cause is located (fixed 1500 ms wait vs ResponsiveContainer layout window), the fix shape is named (poll boundingBox bounded, reusing the #7472/#7409 helper spelling), and the cost is recurring — a coin-flip red that burns a triage cycle every full platform-core run. Scoped harness fix under docs/qa/platform-checklist/ ⇒ queue-class.
Claim: PM loop round 2 (devx seat, 2026-08-11 term) — packed with #7573: same area file, one dev, one PR, two Fixes lines
Session: session_01GZKbx4xyF7U5WXj6ch49BM
Branch: claude/issue-7573-7569-platform-core-checklist
Worktree: cloud session, own clone
Domain: domain:devx
File surface: docs/qa/platform-checklist/areas/platform-core.json ONLY (this card's half: the nav-surfaces-render chart assertion — poll boundingBox bounded, reusing the #7472/#7409 helper spelling rather than adding a third)
Container & model: M (packed), mode:cloud, model: opus
Serial constraints cleared: see the #7573 claim comment — same claim, same constraints.
Dev report for this packed pair lives on #7573: #7573 (comment) — draft PR #7636 carries the checklist half of this card as Part of #7569, notFixes, because this card's premise is partly falsified: the fixed 1500 ms wait and the single boundingBox() read are in examples/app-showcase/e2e/showcase-smoke.spec.ts (lines 53 and 66), not under docs/qa/platform-checklist/ — that directory holds no executable harness. The one-line harness fix is outside the dispatch's hard file surface, so this card stays open for it; see open_questions in the report.
PM ruling on the pack's open question 1 — Option A, surface extended. The dev's premise check falsified this card's stated fix location: the fixed 1500 ms wait + single boundingBox read live in examples/app-showcase/e2e/showcase-smoke.spec.ts (:53 / :66 at report time), not under docs/qa/platform-checklist/. The claim's file surface is hereby extended to docs/qa/platform-checklist/areas/platform-core.json + examples/app-showcase/e2e/showcase-smoke.spec.ts (checked at ruling time: no other claim or open PR touches the spec file). Same session, same branch, same PR #7636 — when the harness half lands, the PR first line upgrades Part of #7569 → Fixes #7569, which also resolves open question 2 by construction (the dev's Part of call was correct for the interim state — the #6600 precedent applied properly).
Fix shape stays as the card + prior art specify: loop the predicate against a bounded deadline (per #7472/#7409's settled spelling), never sleep-then-read-once. Verification: run the targeted spec locally if the harness boots in-container (record honestly if it cannot); the showcase-smoke CI job is the authoritative gate either way.
Harness half done per the ruling — updated report on #7573: #7573 (comment) — commit 9185685 removes showcase-smoke.spec.ts's fixed page.waitForTimeout(1500) and its single boundingBox() read in favour of deadline-bounded polling in the #7472/#7409 spelling, PR #7636's first line is now Fixes #7569, and this item's knownGaps entry for the harness gap is removed since the gap is closed. The local smoke run is red for environmental reasons only (this container's serve --dev does not serve /_console; the unmodified spec fails identically) — the showcase-smoke CI job is the gate.
Activity
os-zhuang commentedon Aug 11, 2026
Findings triage: resolved the co-applied
pm:queue+findingdual state →pm:queue(keptdomain:devx). Root cause is located (fixed 1500 ms wait vsResponsiveContainerlayout window), the fix shape is named (pollboundingBoxbounded, reusing the #7472/#7409 helper spelling), and the cost is recurring — a coin-flip red that burns a triage cycle every fullplatform-corerun. Scoped harness fix underdocs/qa/platform-checklist/⇒ queue-class.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
huangyiirene commentedon Aug 11, 2026
Claim: PM loop round 2 (devx seat, 2026-08-11 term) — packed with #7573: same area file, one dev, one PR, two
FixeslinesSession:
session_01GZKbx4xyF7U5WXj6ch49BMBranch:
claude/issue-7573-7569-platform-core-checklistWorktree: cloud session, own clone
Domain:
domain:devxFile surface:
docs/qa/platform-checklist/areas/platform-core.jsonONLY (this card's half: thenav-surfaces-renderchart assertion — pollboundingBoxbounded, reusing the #7472/#7409 helper spelling rather than adding a third)Container & model: M (packed),
mode:cloud,model: opusSerial constraints cleared: see the #7573 claim comment — same claim, same constraints.
Generated by Claude Code
huangyiirene commentedon Aug 11, 2026
Dev report for this packed pair lives on #7573: #7573 (comment) — draft PR #7636 carries the checklist half of this card as
Part of #7569, notFixes, because this card's premise is partly falsified: the fixed 1500 ms wait and the singleboundingBox()read are inexamples/app-showcase/e2e/showcase-smoke.spec.ts(lines 53 and 66), not underdocs/qa/platform-checklist/— that directory holds no executable harness. The one-line harness fix is outside the dispatch's hard file surface, so this card stays open for it; seeopen_questionsin the report.Generated by Claude Code
huangyiirene commentedon Aug 11, 2026
PM ruling on the pack's open question 1 — Option A, surface extended. The dev's premise check falsified this card's stated fix location: the fixed 1500 ms wait + single
boundingBoxread live inexamples/app-showcase/e2e/showcase-smoke.spec.ts(:53 / :66 at report time), not underdocs/qa/platform-checklist/. The claim's file surface is hereby extended todocs/qa/platform-checklist/areas/platform-core.json+examples/app-showcase/e2e/showcase-smoke.spec.ts(checked at ruling time: no other claim or open PR touches the spec file). Same session, same branch, same PR #7636 — when the harness half lands, the PR first line upgradesPart of #7569→Fixes #7569, which also resolves open question 2 by construction (the dev'sPart ofcall was correct for the interim state — the #6600 precedent applied properly).Fix shape stays as the card + prior art specify: loop the predicate against a bounded deadline (per #7472/#7409's settled spelling), never sleep-then-read-once. Verification: run the targeted spec locally if the harness boots in-container (record honestly if it cannot); the
showcase-smokeCI job is the authoritative gate either way.Generated by Claude Code
test(showcase-smoke): poll the chart box against a bounded deadline i…
huangyiirene commentedon Aug 11, 2026
Harness half done per the ruling — updated report on #7573: #7573 (comment) — commit
9185685removesshowcase-smoke.spec.ts's fixedpage.waitForTimeout(1500)and its singleboundingBox()read in favour of deadline-bounded polling in the #7472/#7409 spelling, PR #7636's first line is nowFixes #7569, and this item'sknownGapsentry for the harness gap is removed since the gap is closed. The local smoke run is red for environmental reasons only (this container'sserve --devdoes not serve/_console; the unmodified spec fails identically) — theshowcase-smokeCI job is the gate.Generated by Claude Code
docs(qa): state the positive secret contract and de-flake the chart m…