Skip to content

a11y(reports): include buyer-visible LeftoverPairList evidence in actionable button names #976

Description

@seonghobae

Buyer-visible gap

Exact serialized parent #828@7b6dbbb99a09d0523bce43c6872bbd9fa382a43a renders multiple persisted evidence badges inside each LeftoverPairList post button (R, Y/E, rank, U, U²/R², R̂²/R², 2R̂U/R², , coordinates, distance), but the button also sets an explicit aria-label containing only pair kind/title/criterion. The current test suite explicitly queries that shortened accessible name while separately asserting the richer visible text. Assistive technology therefore cannot discover the same buyer-visible evidence from the actionable control name.

This is distinct from #829, which repairs the same composition defect only for grouping-comparison pair actions. Do not expand #829 or race its single-writer lane.

Domain / ownership boundary

LineageWeave owns this read-model composition and accessibility contract. Consume existing persisted values and existing formatters only. Do not derive psychometric values, add SQL/schema, copy fast-mlsirm/TEPP/RankWeave truth, or create a translation authority competing with #922/#929/#932.

Acceptance

  1. Start from the then-current serialized product parent after feat(reports): preserve grouping comparison unexplained-share delta for serialized successor #829/feat(reports): preserve grouping comparison axis-singular delta for serialized successor #830 ancestry is settled; do not patch a stale historical head.
  2. Add a realistic focused RED proving a finite visible evidence badge is absent from the pair button accessible name because the explicit parent aria-label overrides descendant text.
  3. Apply the smallest composition repair so the actionable name contains the same finite buyer-visible evidence selected/rendered by the existing formatters, without duplicate accessibility-tree announcements. Missing/non-finite fields remain absent; do not invent or recompute values.
  4. Preserve click semantics, deterministic identity, keyboard/focus behavior, pointer/touch behavior, dense/responsive rendering, and existing whole-population authorization boundaries.
  5. Require current-head focused + full frontend GREEN, lint, production build, Storybook, browser keyboard/focus/a11y evidence, and translation-ledger consumer convergence before calling the UI complete.
  6. Keep ADR/release identity collision-free and Proposed while Draft; update docs/product-technical-gap-baseline.md code-current when the source lane begins.

Exact evidence

At #828@7b6dbbb..., frontend/src/components/LeftoverPairList.tsx renders the persisted badges under a <button aria-label={tf("Open leftover {kind} pair: {title} · {criterion}", ...)}>. frontend/src/components/LeftoverPairList.test.tsx asserts that shortened role/name while also asserting richer visible R, Y/E, rank, U²/R², R̂²/R², cross-share, reconstruction, coordinates and distance text. No open issue matched LeftoverPairList aria-label before filing.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions