Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 23 additions & 4 deletions data/outstanding-issues-snapshot.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{
"version": "outstanding-issues-snapshot-v1",
"ledger_revision": {
"sha": "bbc1748a9b8ff30c5fb951e6055e71e3eadeec6e",
"committed_at": "2026-08-27T11:57:49+00:00"
"sha": "362cc5dd50698e44481cfff76f578e075fa6a2bf",
"committed_at": "2026-08-27T20:30:32+08:00"
},
"counts": {
"open": 81,
"p1": 1,
"p2": 49,
"p3": 31,
"queued": 7,
"pending": 0,
"pending": 3,
"resolved": 431
},
"queue": [
Expand Down Expand Up @@ -823,5 +823,24 @@
"added": "2026-08-26"
}
],
"pending": []
"pending": [
{
"request_id": "73e80866-df3e-414b-8362-b438d282ca8c",
"action": "add",
"summary": "/calculators/search keeps a 2px residual scroll range at 1280x1200 after the dead-scroll sweep",
"created_at": "2026-08-27"
},
{
"request_id": "8cf62eef-79a8-4b23-83cc-9290eb71dff3",
"action": "add",
"summary": "mode-home-page-skeleton still subtracts a chrome estimate from 100dvh, the pattern invariant 24 retired everywhere else",
"created_at": "2026-08-27"
},
{
"request_id": "af8b8fb0-3930-43a6-8d06-c897866a86b9",
"action": "add",
"summary": "Lighthouse desktop-root LCP reads 100-175ms above main on a feature branch, decays run over run, and reddened PR #2422 once",
"created_at": "2026-08-27"
}
]
}
16 changes: 12 additions & 4 deletions data/repo-awareness-snapshot.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"version": "repo-awareness-snapshot-v1",
"captured_revision": {
"sha": "b64ecf90673ad17c8650b11318c2fd7844c05e7a",
"committed_at": "2026-08-27T20:45:44+08:00"
"sha": "072aba85fedc9a237d9a18ac2b256fb6cc92cd38",
"committed_at": "2026-08-27T13:11:23+00:00"
},
"routes": {
"modes": [
Expand Down Expand Up @@ -3865,6 +3865,14 @@
"outcome": "FIXED",
"checks": "merge-main, review-replies, thread-resolve, snapshot-regen"
},
{
"date": "2026-08-27",
"ref": "claude/home-page-scroll-stability-cbnak6",
"head": "c917e079635ee17c3059205b5356b4c51e6362cf",
"scope": "Phone defects from device screenshots: safety-findings sheet scroll lock and flex-clipped card; stopped-answer notice placement plus the never-clearing pending skeleton; phone answer-results bottom padding pb-4 -> pb-10; sidebar Documents entry repointed to /?mode=documents. 11 files, +118/-39.",
"outcome": "Merged to main 2026-08-27 as squash 28b1fef (PR #2422). Squash verified by content: git diff c917e079 28b1fef is empty, so nothing was dropped by the auto-merge.",
"checks": "CI green on head c917e079 (run 33072264164): Static PR checks, Build + bundle budget, Unit coverage, Safety and config, Caring Contacts, Production UI critical and Production UI 1/2/3 (Chromium journeys), Lighthouse budget, PR required - all success. Local before push: typecheck clean; lint clean at --max-warnings 0; full offline unit suite 10,814 passed with 3 pre-existing failures confirmed identical on a stashed tree. verify:ui and the verify:phone-chrome browser stages NOT run in this container - the lock pins Playwright chromium-1234, the image ships chromium-1194, and the #255 guard forbids substituting; browser proof delegated to CI Production UI. Lighthouse desktop-root LCP read high across four branch runs (961 FAILED, then 925/900/852 passing, vs main 748/705) and is recorded as its own unresolved ledger item rather than treated as cleared."
},
{
"date": "2026-08-27",
"ref": "codex/dsm-search-ux-elevation (PR #2415)",
Expand Down Expand Up @@ -25011,8 +25019,8 @@
}
],
"counts": {
"records": 2644,
"refs": 1612
"records": 2645,
"refs": 1613
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| 2026-08-27 | claude/home-page-scroll-stability-cbnak6 | c917e079635ee17c3059205b5356b4c51e6362cf | Phone defects from device screenshots: safety-findings sheet scroll lock and flex-clipped card; stopped-answer notice placement plus the never-clearing pending skeleton; phone answer-results bottom padding pb-4 -> pb-10; sidebar Documents entry repointed to /?mode=documents. 11 files, +118/-39. | Merged to main 2026-08-27 as squash 28b1fef (PR #2422). Squash verified by content: git diff c917e079 28b1fef is empty, so nothing was dropped by the auto-merge. | CI green on head c917e079 (run 33072264164): Static PR checks, Build + bundle budget, Unit coverage, Safety and config, Caring Contacts, Production UI critical and Production UI 1/2/3 (Chromium journeys), Lighthouse budget, PR required - all success. Local before push: typecheck clean; lint clean at --max-warnings 0; full offline unit suite 10,814 passed with 3 pre-existing failures confirmed identical on a stashed tree. verify:ui and the verify:phone-chrome browser stages NOT run in this container - the lock pins Playwright chromium-1234, the image ships chromium-1194, and the #255 guard forbids substituting; browser proof delegated to CI Production UI. Lighthouse desktop-root LCP read high across four branch runs (961 FAILED, then 925/900/852 passing, vs main 748/705) and is recorded as its own unresolved ledger item rather than treated as cleared. |
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": 2,
"id": "73e80866-df3e-414b-8362-b438d282ca8c",
"createdOn": "2026-08-27",
"action": "add",
"payload": {
"pri": "P3",
"type": "issue",
"summary": "/calculators/search keeps a 2px residual scroll range at 1280x1200 after the dead-scroll sweep",
"detail": "Found 2026-08-27 while verifying PR #2419 (dead scroll on pages that fit the window) across 39 routes x 5 viewports in Chromium. That sweep replaced every 'calc(100dvh - <chrome estimate>)' page-fill floor with flex growth, and afterwards every page that fits reported a scroll range of exactly 0 - except /calculators/search, which retained 2px at 1280x1200. It was deliberately left out of scope because it is NOT the chrome-estimate class the PR fixed: the residual traces to real content in the page, so removing it is a layout question for that route rather than another floor to delete. Impact is cosmetic (a scrollbar and one wheel notch on a page with nothing below the fold). Next: re-measure at 1280x1200 to confirm the axis and identify the overflowing element, then either trim the offending 2px or record the route as a documented exception under invariant 24 in docs/search-chrome-behaviour.md so the next sweep does not re-flag it. Stop: do not reintroduce a viewport-estimate floor to hide it, and do not clip the route's overflow to make the number zero.",
"source": "PR #2419 verification sweep, 2026-08-27; docs/search-chrome-behaviour.md invariant 24",
"issueUlid": "01M11M2Z7J6KR6BRB89QW4MDG7"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": 2,
"id": "8cf62eef-79a8-4b23-83cc-9290eb71dff3",
"createdOn": "2026-08-27",
"action": "add",
"payload": {
"pri": "P3",
"type": "task",
"summary": "mode-home-page-skeleton still subtracts a chrome estimate from 100dvh, the pattern invariant 24 retired everywhere else",
"detail": "PR #2419 replaced every 'calc(100dvh - <chrome estimate>)' page-fill floor with flex growth (shell #main-content, the composer reserve pad, the page shells, and the dashboard mode-home canvas) and recorded the rule as invariant 24 in docs/search-chrome-behaviour.md: 'A page fills the box it is in; it never subtracts a chrome estimate from 100dvh.' Two sites in src/components/mode-home-page-skeleton.tsx were deliberately left behind and are now the only page-fill estimates left in src/: line 32 'sm:min-h-[calc(100dvh-var(--shell-header-h))]' and line 60 'h-[calc(100dvh-var(--shell-header-h))]'. They were skipped because this is a route-loading placeholder rendered inside a Suspense boundary whose parent chain does not resolve a grown height, so swapping the class alone would collapse it - the parent chain has to be given a definite height first. --shell-header-h (4rem) is exactly the estimate invariant 24 exists to remove: it covers the header's inner bar plus its pb-2 but NOT the bar's own pt-[max(0.5rem,var(--safe-area-top))], which is why every floor built on it ran short. Impact is very low: the skeleton is visible for a fraction of a second while a route opens, and being a few px short there is invisible. Next: determine whether the skeleton's Suspense parent can carry a definite height; if yes, convert both sites to grow and delete the estimate; if no, record the exception explicitly under invariant 24 so the next sweep does not re-flag it as an oversight. Stop: do not simply swap the class without fixing the parent chain, and do not widen invariant 24 to permit estimates generally.",
"source": "PR #2419; docs/search-chrome-behaviour.md invariant 24; src/components/mode-home-page-skeleton.tsx:32,60",
"issueUlid": "01M11M3PZAA95DRY3VM3RZE224"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": 2,
"id": "af8b8fb0-3930-43a6-8d06-c897866a86b9",
"createdOn": "2026-08-27",
"action": "add",
"payload": {
"pri": "P2",
"type": "issue",
"summary": "Lighthouse desktop-root LCP reads 100-175ms above main on a feature branch, decays run over run, and reddened PR #2422 once",
"detail": "Six CI readings on 2026-08-27 against the same 786ms baseline (tolerance: breach needs BOTH >20% and >100ms). PR #2422 branch: 961 (FAILED, reported 2/3 samples breached), 925, 900, 852. main: 748 (603da96), 705 (be65b8a1). NOT ROOT-CAUSED; recorded so the next occurrence is not re-investigated from scratch. Evidence AGAINST a real code regression: (a) mobile-root - the SAME page - measured 2293/2305/2314 against its 2274 baseline across the same runs, i.e. unchanged, and a genuine slowdown in that page would show on both form factors; (b) desktop-documents-search measured FASTER than main on the same runners (745/806 vs main 828/841); (c) the monotone decay 961->925->900->852 is regression-to-mean of a noisy metric, not a fixed cost a diff adds; (d) reading the 11-file diff line by line, nothing alters the desktop root cold render - the only new guard (!showAnswerCancelledNotice on showAnswerPending) is a no-op when nothing was cancelled, and pb-4->pb-10 requires an answer to be present. ONE TESTABLE MECHANISM REMAINS: PR #2422 split src/components/clinical-dashboard/answer-cancelled-notice.tsx out of ClinicalDashboard (forced by the 4140-line maintainability budget), and a new client module can become a separate chunk on /. Next: rm -rf .next FIRST (AGENTS.md: a cached build reports stale byte-identical numbers and will wrongly pass), npm run build, then npm run check:bundle-budget, which attributes chunks per route and reports / separately; compare against main. If / gained a chunk, move AnswerCancelledNotice into src/components/clinical-dashboard/dashboard-notices.tsx, which ClinicalDashboard already imports - same budget relief, no new module boundary. GATE CAVEAT worth knowing: majorityBreachDecision in scripts/check-lighthouse-budget.mjs takes its 3 samples within ONE job on ONE runner, so it guards against a single outlier but not against a slow runner. Stop: do not raise the baseline or the tolerance to clear this; do not re-run the job to chase a better number. Related but distinct: #GQ5X8T (mobile-root timing, needs a synchronized control).",
"source": "PR #2422 CI runs 33067093750 (attempts 1-2), 33070896021, 33072264164; main runs 33063088413, 33065297542",
"issueUlid": "01M11M2914RBK2J72NBARMR4ZR"
}
}
Loading