From 2f5ed0c29e4c6cd6b3125289960b9fde1b84f52c Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 30 Jul 2026 21:31:51 +0000 Subject: [PATCH 1/2] issues: record the withdrawn live-region finding as #151 so it is not re-filed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Archive-only row. There is no defect and no work to do — the row exists purely as a guard rail against repeating a misreading that already happened once. search-results-header-band.tsx sets aria-live={faulted ? "off" : "polite"} on its count/status span, which reads like a silenced failure announcement. It is not: the band mounts a separate fault panel with role="alert" carrying the failure title, body and Retry, and the mute is deliberate so the two do not both speak. The reasoning is in a comment directly above the attribute, and tests/search-results-header-band.dom.test.tsx pins it with singular role queries that throw on duplicates. During session 2026-07-30 (PR #1481) this was filed as a real P2 defect on the strength of the attribute alone, and the proposed fix — escalating the count span to role="alert"/aria-live="assertive" — would have produced a duplicate announcement and a red test, making it worse than no change. Codex caught it. An earlier withdrawal row was then lost to the squash that merged #1481, which is the row-deletion shape #148 now guards against. Also records that the mockup's escalation is correct in the mockup and must not be ported: search-refine-adaptive-mockups.tsx has no fault panel, so there the count span is the only announcement channel. #148 needed no work — the merge-base deletion check landed on main independently, and its output now reports the base it compared against. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01JdPa3mHCX5ZQZZvU5GHU3r --- docs/outstanding-issues.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/outstanding-issues.md b/docs/outstanding-issues.md index af446e8d15..dde5506436 100644 --- a/docs/outstanding-issues.md +++ b/docs/outstanding-issues.md @@ -83,7 +83,7 @@ removed after current-main verification; it is not missing recommended work. | 34 | `#105` | Optional | High — browser/UI verification | When a driven-browser session is available | 30–60 minutes | Decide how the ten `LoadingPanel` fallbacks can be observed at all, then verify or re-scope. A cold-load grep cannot see them — every lazy surface mounts behind interaction state, so nothing renders them on first paint — and a claimed cold-load verification was withdrawn 2026-07-30 after it turned out to be matching `ModeHomePageSkeleton`. Either drive the interaction in a browser and assert the surface's specific label, or record that they are unobservable on cold load. The preconnect half is already verified; do not redo it. **Stop:** do not close this on a cold-load grep. | | 35 | `#126` | Optional | Standard — repository hygiene | Once per UTC calendar quarter, or when the live ledger grows large | 5–15 minutes | Run `npm run ledger:rotate -- --dry-run`, then `npm run ledger:rotate` if the preview looks right; commit the live+archive diff. Stop if dry-run shows unexpected mass moves or archive path collisions. | - + ## Open items @@ -156,6 +156,7 @@ Move resolved rows here with the resolution date and a one-line outcome. Keep th | ID | Type | Summary | Outcome | Resolved | | ---- | ----- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | +| #151 | issue | Misreading the results band's muted live region as a defect (withdrawn finding, kept as a guard rail) | NOT A DEFECT — recorded 2026-07-30 so it is not re-filed. `search-results-header-band.tsx` sets `aria-live={faulted ? "off" : "polite"}` on its count/status span, which reads like a silenced failure announcement. It is not. The band mounts a separate fault panel with `role="alert"` carrying the failure title, body and Retry, and the mute is deliberate so the two do not both speak — the reasoning sits in a comment directly above the attribute, and `tests/search-results-header-band.dom.test.tsx` ("keeps exactly one status region and one alert while faulted") pins it with singular role queries that throw on duplicates. **Why this row exists:** the misreading was filed as a real P2 defect during session 2026-07-30 (PR #1481) on the strength of the attribute alone, and the proposed fix — escalating the count span to `role="alert"`/`aria-live="assertive"` — would have produced a DUPLICATE announcement and a red test, making it worse than no change. Codex caught it. An earlier withdrawal row was itself lost to the squash that merged #1481, which is the row-deletion shape `#148` now guards. **Stop:** do not "fix" this, and do not port the mockup's escalation to production. `search-refine-adaptive-mockups.tsx` legitimately escalates because it has no fault panel, so there the count span is the only announcement channel; that does not transfer. Verify which node owns an announcement before calling a live region a defect. | 2026-07-30 | | #105 | task | Verify the #017-exempt client latency wins in a browser | Resolved 2026-07-30. The preconnect/dns-prefetch half was already proved in SSR and the live DOM. The remaining fallback was verified in driven Chromium by switching the dashboard from Answer to Documents while delaying the exact document-search-results chunk by 1.6 s: role=status with aria-label=Loading document results appeared after 315 ms at 1440x900 and 123 ms at 390x844, then disappeared when the chunk executed. The phone pass used keyboard activation, reduced motion, and forced colors, retained focus on Mode Documents, and had zero horizontal overflow. | 2026-07-30 | | #127 | issue | Document-route phone header intermittently failed to hide | Resolved 2026-07-30 by PR #1427, which fixed the short/clamped drag mechanism. Its runway polling and delivered-travel assertions then passed across the four recorded post-fix runs and the later PR #1480 exact-head browser/PWA document-header journeys, with no recurrence. | 2026-07-30 | From f58068135ec4b1361983b049da82c0b424a1e325 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 31 Jul 2026 00:30:31 +0000 Subject: [PATCH 2/2] issues: renumber withdrawn live-region archive row to #156 main claimed open #155 for the cross-session concurrency hazard (#1513). Keep that open row and move this PR's archive guard-rail to #156, bumping issues:next-id to 157. Co-authored-by: BigSimmo --- docs/outstanding-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/outstanding-issues.md b/docs/outstanding-issues.md index 0e750b7ec8..b66a32512d 100644 --- a/docs/outstanding-issues.md +++ b/docs/outstanding-issues.md @@ -83,7 +83,7 @@ removed after current-main verification; it is not missing recommended work. | 34 | `#105` | Optional | High — browser/UI verification | When a driven-browser session is available | 30–60 minutes | Decide how the ten `LoadingPanel` fallbacks can be observed at all, then verify or re-scope. A cold-load grep cannot see them — every lazy surface mounts behind interaction state, so nothing renders them on first paint — and a claimed cold-load verification was withdrawn 2026-07-30 after it turned out to be matching `ModeHomePageSkeleton`. Either drive the interaction in a browser and assert the surface's specific label, or record that they are unobservable on cold load. The preconnect half is already verified; do not redo it. **Stop:** do not close this on a cold-load grep. | | 35 | `#126` | Optional | Standard — repository hygiene | Once per UTC calendar quarter, or when the live ledger grows large | 5–15 minutes | Run `npm run ledger:rotate -- --dry-run`, then `npm run ledger:rotate` if the preview looks right; commit the live+archive diff. Stop if dry-run shows unexpected mass moves or archive path collisions. | - + ## Open items @@ -151,7 +151,7 @@ Move resolved rows here with the resolution date and a one-line outcome. Keep th | ID | Type | Summary | Outcome | Resolved | | ---- | ----- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | -| #155 | issue | Misreading the results band's muted live region as a defect (withdrawn finding, kept as a guard rail) | NOT A DEFECT — recorded 2026-07-30 so it is not re-filed. `search-results-header-band.tsx` sets `aria-live={faulted ? "off" : "polite"}` on its count/status span, which reads like a silenced failure announcement. It is not. The band mounts a separate fault panel with `role="alert"` carrying the failure title, body and Retry, and the mute is deliberate so the two do not both speak — the reasoning sits in a comment directly above the attribute, and `tests/search-results-header-band.dom.test.tsx` ("keeps exactly one status region and one alert while faulted") pins it with singular role queries that throw on duplicates. **Why this row exists:** the misreading was filed as a real P2 defect during session 2026-07-30 (PR #1481) on the strength of the attribute alone, and the proposed fix — escalating the count span to `role="alert"`/`aria-live="assertive"` — would have produced a DUPLICATE announcement and a red test, making it worse than no change. Codex caught it. An earlier withdrawal row was itself lost to the squash that merged #1481, which is the row-deletion shape `#148` now guards. **Stop:** do not "fix" this, and do not port the mockup's escalation to production. `search-refine-adaptive-mockups.tsx` legitimately escalates because it has no fault panel, so there the count span is the only announcement channel; that does not transfer. Verify which node owns an announcement before calling a live region a defect. | 2026-07-30 | +| #156 | issue | Misreading the results band's muted live region as a defect (withdrawn finding, kept as a guard rail) | NOT A DEFECT — recorded 2026-07-30 so it is not re-filed. `search-results-header-band.tsx` sets `aria-live={faulted ? "off" : "polite"}` on its count/status span, which reads like a silenced failure announcement. It is not. The band mounts a separate fault panel with `role="alert"` carrying the failure title, body and Retry, and the mute is deliberate so the two do not both speak — the reasoning sits in a comment directly above the attribute, and `tests/search-results-header-band.dom.test.tsx` ("keeps exactly one status region and one alert while faulted") pins it with singular role queries that throw on duplicates. **Why this row exists:** the misreading was filed as a real P2 defect during session 2026-07-30 (PR #1481) on the strength of the attribute alone, and the proposed fix — escalating the count span to `role="alert"`/`aria-live="assertive"` — would have produced a DUPLICATE announcement and a red test, making it worse than no change. Codex caught it. An earlier withdrawal row was itself lost to the squash that merged #1481, which is the row-deletion shape `#148` now guards. **Stop:** do not "fix" this, and do not port the mockup's escalation to production. `search-refine-adaptive-mockups.tsx` legitimately escalates because it has no fault panel, so there the count span is the only announcement channel; that does not transfer. Verify which node owns an announcement before calling a live region a defect. | 2026-07-30 | | #153 | issue | Pre-commit hook aborted commits in worktrees lacking the sync script | Resolved 2026-07-31 by PR #1494. `core.hooksPath` is an absolute path to the primary checkout, so `.githooks/pre-commit` runs from every linked worktree, including ones whose branch predates the docs-sync tooling and so lacks `scripts/update-docs-inventory.mjs`; those commits died with `MODULE_NOT_FOUND`. PR #1442 had already tracked the hook and script onto `main`, leaving only the guard, which #1494 added to `main`'s committed hook: the inventory task drops itself when its script is missing, and the all-tasks-empty early exit is re-checked (without that, an empty `docs_to_check` makes the trailing diff match every modified file and fail the commit for unrelated reasons). Verified in an isolated repository where the script genuinely does not exist — deleting it from a real worktree does not exercise this path, because the mixed-inputs guard sees the unstaged deletion and fails first. `codex/docs-sync-automation-pr` is superseded and can be abandoned. | 2026-07-31 | | #105 | task | Verify the #017-exempt client latency wins in a browser | Resolved 2026-07-30. The preconnect/dns-prefetch half was already proved in SSR and the live DOM. The remaining fallback was verified in driven Chromium by switching the dashboard from Answer to Documents while delaying the exact document-search-results chunk by 1.6 s: role=status with aria-label=Loading document results appeared after 315 ms at 1440x900 and 123 ms at 390x844, then disappeared when the chunk executed. The phone pass used keyboard activation, reduced motion, and forced colors, retained focus on Mode Documents, and had zero horizontal overflow. | 2026-07-30 | | #127 | issue | Document-route phone header intermittently failed to hide | Resolved 2026-07-30 by PR #1427, which fixed the short/clamped drag mechanism. Its runway polling and delivered-travel assertions then passed across the four recorded post-fix runs and the later PR #1480 exact-head browser/PWA document-header journeys, with no recurrence. | 2026-07-30 |