Skip to content

fix(report): replay main focus accessibility on current review workflow - #1002

Merged
seonghobae merged 11 commits into
mainfrom
fix/report-main-focus-current-review-978
Aug 24, 2026
Merged

fix(report): replay main focus accessibility on current review workflow#1002
seonghobae merged 11 commits into
mainfrom
fix/report-main-focus-current-review-978

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Supersedes #978 and consolidates the active diagnostics-report focus/accessibility lanes (#1086 and #1067) plus merged child #1000 / issue #999 into one report-surface landing unit.

Product contract

Modality-safe keyboard focus

  • main, scrollable .table-wrap, export <pre>, and disclosure <summary> pointer-focus suppression uses :focus:not(:focus-visible) rather than blanket :focus { outline: none; }.
  • Explicit :focus-visible keyboard indicators remain intact for the main region, table regions, export blocks, and disclosure summaries.
  • Regressions reject blanket focus suppression and verify disclosure pointer-specific rules precede keyboard-visible rules.

Generic diagnostics title trust boundary

  • render_diagnostics_report() admits only None or an exact built-in str before truth-value testing and HTML escaping.
  • Caller-defined str subclasses fail with package-owned validation before overridden callbacks can execute.
  • Empty exact built-in strings retain default-title behavior and accepted built-in titles remain escaped in both <title> and <h1>.

Every report metric, table, export value, numerical value, and psychometric/statistical API remains unchanged.

Reconciled lineage

  • 🎨 Palette: [UX improvement] Improve focus styles for main content #978 product head: cb398e3fc44033a30e7177f7d561da14d2742dc6.
  • Clean main-focus successor before child integration: 52c7401bdec44a7a1e6194f0336617bfc5fe6eed.
  • Former child fix(report): harden generic diagnostics title boundary #1000 exact head: 528d980c1613fd6326f4c5c59effc85e80fb98b2.
  • Table/export RED: 2eee1a30029b7dba43a8fbaae7263cac855c51d3; GREEN: 05caaeaa31df17725c272fa49996354ddee2e93c.
  • Disclosure RED: aa420295e6c4bc026ce66d4c4c5a99d763325d08; GREEN: ba18912936fe7f38c0ef3264f3b7c27ae69ce656.
  • Current compatible successor 36e0bdd71535e56fe1329f31c2cd74d0749c64d8 changes only tests/test_report.py: it aligns the existing table-focus assertion with the modality-safe selector and adds test docstrings. No production source changed after ba189129....

#1086 and #1067 are closed after their substantive focus corrections were adopted here; their bot guidance/unrelated formatting churn was not adopted. #1000 is already folded into this branch. Do not reopen or merge those predecessor/duplicate lanes independently.

Evidence boundary

Evaluate all required checks and reviews only on current exact head 36e0bdd71535e56fe1329f31c2cd74d0749c64d8 against protected main@04d0bc21a2a20693bcf16108cd76d394fe844d23. The historical OpenCode CHANGES_REQUESTED review was for 52c7401b... and is predecessor-head evidence only; any still-effective gate requirement must be regenerated on this exact head. No bypass or self-approval.


Open in Devin Review

seonghobae and others added 3 commits August 17, 2026 19:06
Modifies the `:focus` rule on `<main>` to `:not(:focus-visible)` in `report.py` to ensure keyboard focus rings appear while suppressing mouse click rings.
@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 2f7db7bf-2bb9-4f7c-b5cb-e87884b80e9a

📥 Commits

Reviewing files that changed from the base of the PR and between 04d0bc2 and 36e0bdd.

📒 Files selected for processing (7)
  • docs/changelog.d/999-report-title-callback-safety.md
  • python/fast_mlsirm/report.py
  • tests/test_report.py
  • tests/test_report_focus_contrast.py
  • tests/test_report_numeric_motion_css.py
  • tests/test_report_summary_focus.py
  • tests/test_report_title_callback_safety.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Please independently review exact current head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed against live main. Exact-head CI, Security Scan, CodeQL, and Semgrep are terminal-success. Verify the buyer-visible keyboard-focus contract and that the effective diff remains limited to report.py plus its focused regression; do not transfer #978 predecessor evidence.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed.

  • Head SHA: 52c7401bdec44a7a1e6194f0336617bfc5fe6eed

  • Workflow run: 32213314612

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: report.py"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: report.py"]
  R1 --> V1["required checks"]
  Evidence --> S2["Test: test_report_numeric_motion_css.py"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: test_report_numeric_motion_css.py"]
  R2 --> V2["targeted test run"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 52c7401bdec44a7a1e6194f0336617bfc5fe6eed
  • Workflow run: 32213314612
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed.

  • Head SHA: 52c7401bdec44a7a1e6194f0336617bfc5fe6eed

  • Workflow run: 32213314612

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: report.py"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: report.py"]
  R1 --> V1["required checks"]
  Evidence --> S2["Test: test_report_numeric_motion_css.py"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: test_report_numeric_motion_css.py"]
  R2 --> V2["targeted test run"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 19, 2026 04:58

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review review

Fresh re-review request: ContextualWisdomLab/.github#1136 has merged, fixing the central coverage-evidence bug (_install_trusted_uv() target-triple validation) that caused the prior REQUEST_CHANGES verdict on this PR. Please re-review exact current head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed — the underlying infrastructure blocker is now resolved on .github main. Do not transfer evidence from any prior head.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please re-review unchanged exact head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed with the current central workflow. Its only formal REQUEST_CHANGES is coverage failure from run 32213314612; the first causal boundary was central trusted-uv version verification, now corrected on ContextualWisdomLab/.github protected main by #1136 at 9e9f59f3ac1e96a960c021b131d768c238f4c21a. Reacquire same-head coverage/review evidence from the current workflow; predecessor workflow evidence is historical only.

@seonghobae
seonghobae enabled auto-merge (squash) August 19, 2026 10:17

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please re-review unchanged exact head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed against live main@04d0bc21a2a20693bcf16108cd76d394fe844d23. Repository CI, Security Scan, CodeQL, and Semgrep are terminal-success on this exact head and inline review threads are empty. The current formal CHANGES_REQUESTED is central coverage run 32213314612, created before .github main advanced to 9e9f59f3ac1e96a960c021b131d768c238f4c21a (fix(ci): verify trusted uv target-triple output (#1136), 2026-08-19T09:24:32Z), which repairs the trusted-uv materialization boundary. Please regenerate same-head coverage/formal review evidence under the current central contract; do not carry the prior infrastructure verdict forward.

@opencode-agent
opencode-agent Bot disabled auto-merge August 19, 2026 12:16
@seonghobae
seonghobae enabled auto-merge (squash) August 19, 2026 13:10
@opencode-agent
opencode-agent Bot disabled auto-merge August 19, 2026 13:58

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review review

Re-dispatch unchanged exact head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed under central .github@bbedc1a51ec1a2421f129955c629b3cd0507a4ec. Repository CI, Security Scan, CodeQL, and Semgrep are terminal-success and inline threads are empty. The sole formal CHANGES_REQUESTED came from central coverage run 32213314612 before #1136 corrected trusted-uv verification; central main now also includes #1140's OIDC permission repair for scheduler callers. Generate fresh same-head coverage/formal review evidence without transferring the old infrastructure verdict.

@seonghobae seonghobae closed this Aug 19, 2026
@seonghobae seonghobae reopened this Aug 19, 2026
@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review review

Re-review exact current head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed against protected main base 04d0bc21a2a20693bcf16108cd76d394fe844d23; use current patch and Checks only. Local CSS accessibility regression validation passed 2 tests: pointer focus suppression remains scoped to main:focus:not(:focus-visible) and keyboard main:focus-visible retains a visible outline.

@seonghobae
seonghobae enabled auto-merge (squash) August 20, 2026 04:34
* test(report): reject hostile generic report titles

* fix(report): reject title subclasses before callbacks

* docs(changelog): record report title callback hardening

* test(report): preserve title HTML escaping contract

* chore(report): remove bot-local palette artifact

* chore(report): restore protected-main palette artifact

* chore(report): match protected-main palette blob exactly
@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review
@cwl-noema-review review

Re-review updated exact current head 776963d0fbe2ea8d71d1effd6fa7ba0e52b19f91 against protected main base 04d0bc21a2a20693bcf16108cd76d394fe844d23; this head includes the merged generic report title child. Use current source and Checks only. The focus accessibility regression and generic title callback boundary were locally validated.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review\n@cwl-noema-review review\n\nPlease review exact current head 776963d. Bind every review and approval decision to this SHA and current main. Existing review state is not sufficient evidence for this head; use current Checks and changed-file evidence only.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head review (36e0bdd):

  • Concurrent review commits added modality-safe focus rules for main, scroll containers, and disclosure summaries; the current test contract is now aligned with all three selectors.
  • Report suite: 48 passed. Ruff passed. Interrogate passed at 100% for the changed report/test surface. git diff --check passed.
  • No actionable source finding remains at this exact head. Please preserve the protected review/check gates and normal auto-merge only.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review @cwl-noema-review review

Copy link
Copy Markdown
Contributor Author

@opencode-agent review @cwl-noema-review review

Please evaluate only current exact head 36e0bdd71535e56fe1329f31c2cd74d0749c64d8 against protected main@04d0bc21a2a20693bcf16108cd76d394fe844d23. The historical CHANGES_REQUESTED submission evaluated predecessor head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed; do not transfer that head's coverage result. Current product scope is the generic title trust boundary plus modality-safe focus handling consolidated from the closed duplicate report lanes.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head re-review request (36e0bdd): the prior OpenCode CHANGES_REQUESTED review references superseded head 52c7401 and a historical coverage-evidence failure. The current report lane has 48 focused tests passing, Ruff/interrogate 100%, and the current exact-head required checks have been re-triggered. Review only this SHA and regenerate coverage evidence before deciding.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review @cwl-noema-review review

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please perform a review-only formal review of exact current PR head 36e0bdd71535e56fe1329f31c2cd74d0749c64d8. Re-check changed-file scope, current-head findings, unresolved threads, mergeability, and every required Check. Do not reuse a stale review, mutate the branch, self-approve, or merge.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head review record: verified 36e0bdd71535e56fe1329f31c2cd74d0749c64d8 after CodeGraph tracing of the report renderer and its callers. The accessibility change preserves keyboard-visible focus via :focus-visible while suppressing pointer-only outlines, keeps reduced-motion handling and numeric tabular styling, and adds exact-title callback/escaping regressions. Local evidence: 22 focused tests passed; Ruff passed; interrogate 100%; compileall and git diff --check passed. No additional source defect found. Hosted checks must finish against this exact SHA before normal protected merge.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review

Please perform a formal review of exact current head 36e0bdd71535e56fe1329f31c2cd74d0749c64d8 against live base 04d0bc21a2a20693bcf16108cd76d394fe844d23. The only formal CHANGES_REQUESTED review is tied to superseded head 52c7401bdec44a7a1e6194f0336617bfc5fe6eed and its historical coverage failure. Current-head coverage-evidence, CI, security, CodeQL, Semgrep, and local evidence are terminal-success. Re-evaluate changed files and unresolved threads on this SHA only; do not reuse stale evidence, mutate the branch, self-approve, or merge.

@opencode-agent opencode-agent Bot added area: accessibility Accessibility and assistive-technology support area: ci-cd CI, GitHub Actions, checks, release, or supply chain priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: bug Defect or incorrect behavior labels Aug 22, 2026
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

2 similar comments
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

An error occurred during the review process. Please try again later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae merged commit be8a52e into main Aug 24, 2026
38 checks passed
@seonghobae
seonghobae deleted the fix/report-main-focus-current-review-978 branch August 24, 2026 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: accessibility Accessibility and assistive-technology support area: ci-cd CI, GitHub Actions, checks, release, or supply chain priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: bug Defect or incorrect behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant