Skip to content

fix(a11y): give overview disclosures unique linked IDs - #392

Open
seonghobae wants to merge 5 commits into
developmentalfrom
fix/overview-stats-unique-aria-ids
Open

fix(a11y): give overview disclosures unique linked IDs#392
seonghobae wants to merge 5 commits into
developmentalfrom
fix/overview-stats-unique-aria-ids

Conversation

@seonghobae

Copy link
Copy Markdown

Buyer-visible accessibility gap

OverviewStats used repository-global static IDs for its explanation toggle and content. Rendering the component more than once created duplicate IDs and ambiguous aria-controls relationships, allowing a button to reference another card's content.

Change

  • derive one stable instance prefix from React useId();
  • assign distinct <prefix>-toggle and <prefix>-content identifiers;
  • preserve native button semantics, aria-expanded, focus styling, and hidden state;
  • name the bounded explanation region through reciprocal aria-labelledby;
  • add a two-instance DOM regression proving ID uniqueness, same-instance reciprocal references, initial collapse, and independent activation;
  • update CHANGELOG and APA 7 doctoring from official React and W3C sources.

Replacement rationale

This is a clean four-file maintainer replacement on exact current developmental (4f8796ec8c3a8d130136029650705714724cb0ac). It supersedes #275, whose simple accessibility intent had accumulated 30 changed files and more than 1,200 unrelated deletions. No check or review evidence from that stale lineage is reused here.

Exact-head gate

Current exact head: 828fb6cadde1ee34cf2fa40850fff8aa59bb0141.

Merge only after exact-head web lint/type checking/tests/coverage/build, repository CI, Security Scan, SAST Semgrep, dependency/supply-chain gates, current-head automated review, qualifying independent approval, zero unresolved actionable threads, and every repository protection rule succeed without bypass.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Warning

Review limit reached

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

Next review available in: 26 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5ef9dc50-762c-4e8f-b85b-b286b4e13711

📥 Commits

Reviewing files that changed from the base of the PR and between 4f8796e and 19c67e7.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • docs/doctoring/overview-stats-disclosure-identity.md
  • packages/web/src/components/dashboard/overview-stats.test.tsx
  • packages/web/src/components/dashboard/overview-stats.tsx

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

Copy link
Copy Markdown
Author

@coderabbitai review

@opencode-agent @cwl-noema-review exact-head review requested for 828fb6cadde1ee34cf2fa40850fff8aa59bb0141. This is a clean four-file replacement on exact current developmental; it includes the unique linked-ID production change, two-instance DOM regression, CHANGELOG, and APA 7 doctoring. Do not reuse #275 review or workflow evidence.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

@seonghobae: I will review pull request #392 at the current head. I will evaluate this PR independently and will not reuse review or workflow evidence from #275.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Author

@opencode-agent @cwl-noema-review @coderabbitai Please review exact current head 19c67e730191341ebdc43edbb26744eaf68a13bc. Verify per-instance React useId linkage, reciprocal aria-controls/aria-labelledby, named region semantics, two-instance collision and independent activation coverage, preservation of visual behavior, the React runtime import regression repair, APA 7 doctoring, successful exact-head CI/security/supply-chain checks, and zero unresolved findings.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

@seonghobae: I will review pull request #392 at exact head 19c67e730191341ebdc43edbb26744eaf68a13bc. I will evaluate the requested accessibility behavior, regression coverage, documentation, and available check status independently.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@opencode-agent opencode-agent 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.

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 19c67e730191341ebdc43edbb26744eaf68a13bc.

  • Head SHA: 19c67e730191341ebdc43edbb26744eaf68a13bc

  • Workflow run: 30993118993

  • 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 (3 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (3 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs: overview-stats-disclosure-identity.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: overview-stats-disclosure-identity.md"]
  R2 --> V2["docs review"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 5, 2026

Copy link
Copy Markdown

OpenCode Review Overview

  • Head SHA: 19c67e730191341ebdc43edbb26744eaf68a13bc
  • Workflow run: 30993118993
  • 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 19c67e730191341ebdc43edbb26744eaf68a13bc.

  • Head SHA: 19c67e730191341ebdc43edbb26744eaf68a13bc

  • Workflow run: 30993118993

  • 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 (3 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (3 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs: overview-stats-disclosure-identity.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: overview-stats-disclosure-identity.md"]
  R2 --> V2["docs review"]
Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant