fix(a11y): lock console busy/unavailable contract and Storybook inventory - #977
fix(a11y): lock console busy/unavailable contract and Storybook inventory#977cursor[bot] wants to merge 8 commits into
Conversation
- `console.html`에 `:disabled` 및 `[aria-busy="true"]` 상태에 대한 CSS 추가 (투명도 감소, 커서 변경, 포인터 이벤트 차단) - `test_console_detail_loading_contract.py`에 새 CSS 규칙 검증 로직 추가 - `.jules/palette.md`에 ARIA 상태와 시각적 UI 간의 일치성에 대한 학습 기록 추가
Lock the WAI-ARIA busy/unavailable contract so a later busy detail panel cannot inherit pointer-events:none, and so closeDetail clears aria-disabled on the trigger. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Add ADR-0007, APA 7th WAI-ARIA/WCAG citations, and a no-build Storybook inventory so later dashboard surfaces reuse --busy-opacity instead of a global aria-busy rule. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
|
Current-owner reconciliation required before this successor can integrate. Exact head |
There was a problem hiding this comment.
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
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore 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 head8759efb721020c99dd171fe43ce3f6bb398df95e. -
Head SHA:
8759efb721020c99dd171fe43ce3f6bb398df95e -
Workflow run: 32153713227
-
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 (4 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (4 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (6 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (6 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (2 files)"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage evidence job did not run or did not publish coverage evidence. Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (4 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (4 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (6 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (6 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (2 files)"]
R3 --> V3["targeted test run"]
|
There was a problem hiding this comment.
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
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore 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 head8759efb721020c99dd171fe43ce3f6bb398df95e. -
Head SHA:
8759efb721020c99dd171fe43ce3f6bb398df95e -
Workflow run: 32162156537
-
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 (4 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (4 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (6 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (6 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (2 files)"]
R3 --> V3["targeted test run"]
|
@opencode-agent Re-review unchanged exact head |
|
Integrate the unique buyer behavior from overlapping dashboard PR #981 into this active design-system successor before final exact-head review: the deploy-blocking summary card may toggle the existing deploy-blocking filter only if the same source of truth also updates the filter control, |
|
@opencode-agent @cwl-noema-review Please review exact current head |
Buyer-visible outcome
Operators can tell a scan-detail request is in flight without losing the close control, and they cannot re-activate the same row from pointer or keyboard until the request finishes. Later dashboard or Storybook work reuses
--busy-opacityfrom the inventory instead of inventing a second busy style.Exact scope
This branch extends #974 (
57a281ab) with the residual contract pins from current-head review.develop@a68b57d4ccad4f895d7a3d9f909fffbc4653b17eaba5129(tests) and8759efb(docs)tests/test_console_detail_loading_contract.py,tests/test_console_dashboard_security.py,scanner/dashboard/console.html(newline),docs/adr/0007-console-busy-unavailable-tokens.md,docs/storybook-inventory.md,CHANGELOG.d/974-console-busy-unavailable.md, plus ADR/PRD/TRACEABILITY/ARCHITECTURE/TEST_STRATEGY and.jules/palette.mdcitations.No scanner rule, detector, API, database, dependency, credential, model, workflow, or merge-policy authority changes.
Interaction contract locked by tests
button:disabledandtr.scan[aria-disabled="true"]and is the only rule allowed to setpointer-events: none;#connect[aria-busy="true"]andtr.scan[aria-busy="true"]and must not setpointer-events;:disabled, [aria-busy="true"]selector must not return;closeDetail()clearsaria-busyandaria-disabledonlastDetailFocusbefore deleting the request id;--busy-opacityremains the shared token.Storybook and standards
The standalone console stays no-build.
docs/storybook-inventory.mdis the reusable object list for a later optional Storybook package. ADR-0007 records the WAI-ARIA 1.2 / WCAG 2.2 split in APA 7th.Do this next
57a281abso the close-path and busy-rule pins land together.--busy-opacityfor the next dashboard or Storybook surface. Do not add a global[aria-busy="true"]rule.Merge boundary
Do not integrate until this unchanged exact head has terminal required CI/security/coverage/review evidence and any qualifying independent non-author approval required by the live protected rules is present. Queued, skipped-required, stale, predecessor-head, author-only, model-only, or synthetic evidence is non-passing.