feat(reports): preserve grouping comparison reconstruction for serialized successor - #826
Conversation
…ip (v2.50.0)
Caption persisted leftover-map reconstruction R̂ on GET /api/reports/compare/{period} leftover-pair buttons through formatLeftoverMapReconstruction (ADR 0293). Distinct aria-label Leftover map comparison reconstruction. Omit when R̂ is missing or non-finite. Do not invent R̂ from leftover-map distance or plotted coordinates. No SQL. No leftover score or theta.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Independent exact-head APPROVE is required before squash-merge. This token is Head |
|
cycle write probe 2026-08-30T15:27Z — confirming REST comment permission |
| {reconstruction ? ( | ||
| <span | ||
| className="post-badge" | ||
| aria-label={t(LEFTOVER_MAP_COMPARE_RECONSTRUCTION_LABEL)} | ||
| > |
There was a problem hiding this comment.
🟡 Screen readers miss reconstruction badges
When reconstruction exists, the enclosing button’s explicit accessible name suppresses this descendant. Screen-reader users cannot discover its R̂ value or meaning.
Prompt for agents
The grouping comparison pair button in frontend/src/App.tsx has its own aria-label, so its descendant reconstruction badge does not contribute to the button's accessible name and can be flattened as presentational button content. Preserve the visible R̂ badge while exposing both the reconstruction label and formatted value to assistive technology. Update the accessibility test to assert the pair button's computed accessible name or another independently exposed semantic element, rather than locating a labeled span that sits inside the button.
Was this helpful? React with 👍 or 👎 to provide feedback.
| const reconstruction = formatLeftoverMapReconstruction( | ||
| pair.leftover_map_reconstruction, | ||
| ); |
There was a problem hiding this comment.
📝 Info: Comparison payload already carries reconstruction
The comparison payload already returns persisted reconstruction after authorization filtering. Missing and non-finite values remain omitted by the shared formatter.
Was this helpful? React with 👍 or 👎 to provide feedback.
| {reconstruction ? ( | ||
| <span | ||
| className="post-badge" | ||
| aria-label={t(LEFTOVER_MAP_COMPARE_RECONSTRUCTION_LABEL)} | ||
| > | ||
| {reconstruction} | ||
| </span> | ||
| ) : null} |
|
Stacked leftover-map explained leftover share e on grouping comparison leftover-pair buttons is open as #827 ( |
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first finding: Ready is premature while base #825 and the upstream leftover-map chain are unmerged. Preserve the reconstruction delta; return this dependent PR to Draft until prerequisites converge normally.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head stack-authority finding: metadata is already safely converged onto #825 exact 342f78b3ce37724caf66f43b2b9010dbeb4a1e26, but the body still cites obsolete parent bca6baa and historical retarget guidance. Preserve ADR 0293/product semantics and Draft state; current parent/head and current evidence must be authoritative, with predecessor test observations non-transferable.
seonghobae
left a comment
There was a problem hiding this comment.
Current stack finding: this PR's historical ADR0293/v2.50.0 identity is already consumed by current #824. #825 is being reconstructed from exact #824 with its own collision-free identity, so #826 cannot preserve ADR0293/v2.50.0 or treat the historical #825 head as final parent authority. Keep the reconstruction delta, stay Draft, and after #825 clean promotion reconstruct non-force from that exact parent with an unclaimed ADR/release identity. Do not retarget around #825 or close the valid delta.
Summary
Preserve the valid persisted leftover-map reconstruction
R̂comparison delta as the serialized successor of exact#825@b73b10e3079e77f3e62235b2b709dc8a3f450292, while repairing its historical accessibility defect. Current identity is ADR0295 / v2.52.0, Proposed while Draft. Historical ADR0293/v2.50.0 remains ancestry/evidence only.The product rule is bounded: format only persisted
leftover_map_reconstruction; finite zero remains explicit; missing/non-finite values omit onlyR̂. Never derive reconstruction from distance, coordinates, residuals, unexplained leftover, rank, coverage, or visible-subset proxies. fast-mlsirm retains psychometric authority.Valid finding → realistic RED → causal repair → reconstructed GREEN
The Devin accessibility finding was valid. Historical #826 rendered an
R̂badge inside a pair button with an explicitaria-label, so descendant badge text did not contribute to the accessible name. Run34084886224reproduced the realistic RED: a persistedR̂ +0.25fixture was visibly present while the computed button name remainedOpen leftover closest pair from comparison: Public post · sales-lead.The first reconstruction harness also exposed a test-fixture anchoring defect: exact #825 intentionally has two matching generic pair prefixes, so the script's one-anchor assertion was invalid. The workflow prepatch was removed and the product script was bound to the unique comparison-report context immediately preceding
leftover_map_coverage.Corrected run
34085092049, job101627486611, is terminal GREEN. It passed exact-parent/bounded-harness verification, the accessibility RED, the minimal accessible-name repair, diff integrity, focused App/i18n/reconstruction tests, oxlint, production build, Storybook, frozen dev/backend install, inherited coverage-visibility/governance/package-version tests, and emitted workflow-free staging commit8e350aa9db4473e4ad32aaf0c312cf171fa0892awith treee1476f66eb0ce9d3c61a72ba25704a24bb55010a. Independent Git object inspection confirmed that exact tree and both temporary harness paths are absent.That verified tree has now been promoted to product commit
66a7750a10ad0e9526716d382707f99528a75d90using normal non-force ref advancement. Parent order preserves historical #8261418d0dfecd240c5ac6b9f09111c732700330986first and exact current #825b73b10e3079e77f3e62235b2b709dc8a3f450292second. Product tree is exactlye1476f66eb0ce9d3c61a72ba25704a24bb55010a; no automation workflow/script is part of the product tree.The repair includes the localized reconstruction label/value in the explicit pair-button accessible name and marks the duplicate visible badge
aria-hidden, avoiding both suppression and double announcement. Current inline compatibility copy is preserved while canonical eight-locale translation authority remains #922/#929/#932.Remaining acceptance
Keep Draft. Reconstructed GREEN is not hosted exact-product-head acceptance. Require fresh hosted Tests/SAST/Security/CodeQL where applicable, material browser/keyboard/focus/screen-reader evidence for the current product head, canonical
ko/en/ja/zh/vi/es/de/frledger convergence, applicable authenticated PostgreSQL/k6 evidence, and qualifying independent approval before merge. No predecessor evidence transfer, self-approval, force push, destructive rebase, or gate weakening.#827 must converge from this exact promoted head rather than historical #826 ancestry.
Jeon, M., Jin, I. H., Schweinberger, M., & Baugh, S. (2021). Mapping unobserved item–respondent interactions: A latent space item response model with interaction map. Psychometrika, 86(2), 378–403.
Gabriel, K. R. (1971). The biplot graphic display of matrices with application to principal component analysis. Biometrika, 58(3), 453–467.