feat(reports): preserve grouping comparison explained-share delta for serialized successor - #827
Conversation
…arison strip (v2.51.0)
Caption persisted leftover-map explained leftover share e on GET /api/reports/compare/{period} leftover-pair buttons through formatLeftoverMapExplainedShare (ADR 0294). Distinct aria-label Leftover map comparison explained leftover share. Omit when e is missing or non-finite. Do not invent e from R̂ and R. No SQL. No leftover score or theta.
|
Independent exact-head APPROVE is required before squash-merge. This token is Head |
|
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 |
|
Cycle probe 2026-08-31 ~00:40 KST. Writes work (comment/close/create-PR/push). Token still empty X-OAuth-Scopes; GitHub App Grok has contents/PR/issues write as seonghobae. This PR (#827 / v2.51.0 / ADR 0294 / Next buyer increment this cycle: leftover-map unexplained leftover share |
| const explainedShare = formatLeftoverMapExplainedShare( | ||
| pair.leftover_map_explained_share, | ||
| ); |
There was a problem hiding this comment.
🟡 Explained-share badge never appears
Real comparison responses omit leftover_map_explained_share, so formatLeftoverMapExplainedShare always receives undefined. The new badge appears only with mocked test data.
Prompt for agents
The grouping comparison UI now consumes leftover_map_explained_share in frontend/src/App.tsx, but backend/app/report_ingestion.py fetch_period_comparison selects and serializes only leftover_map_reconstruction for each leftover pair. Add the persisted explained-share column to that comparison query and payload, then extend the comparison API test to verify finite values are returned and null values remain null. Keep the existing authorization filtering in backend/app/main.py unchanged.
Was this helpful? React with 👍 or 👎 to provide feedback.
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first finding: Ready is premature while base #826 and the upstream leftover-map chain remain unmerged. Preserve this explained-share increment, but keep it Draft until prerequisites converge normally to the protected line; do not close or squash.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head stack-authority finding: live base already equals #826 exact 1418d0dfecd240c5ac6b9f09111c732700330986, but the PR body still cites obsolete parent a4bf239, predecessor verification, and historical retarget guidance. Preserve ADR 0294/product semantics and Draft state; make current parent/head/evidence authoritative and do not transfer predecessor tests.
seonghobae
left a comment
There was a problem hiding this comment.
Serialized-descendant finding: ADR0294/v2.51.0 is now reserved for #825's current-parent reconstruction, so this historical #827 identity cannot remain authoritative. Preserve the explained-share delta, keep Draft, and reconstruct only after #825→#826 converge, using an unclaimed ADR/release identity against the live registry. Do not skip #826 or transfer its historical verification.
seonghobae
left a comment
There was a problem hiding this comment.
Exact historical-head review: the explained-share delta is valid, but its presentation inherits the same accessibility defect that #826 just repaired for persisted R̂. The historical code adds a descendant <span aria-label="Leftover map comparison explained leftover share">R̂²/R² …</span> inside a pair <button> whose explicit aria-label defines the button's accessible name. Sighted users can see e, while the metric/value is not reliably announced as part of the actionable pair name. Reconstruct this valid delta on exact current #826, do not replay historical ADR0294/v2.51.0, and require a realistic accessible-name RED. The causal repair should append the localized explained-share label/value to #826's existing pairAccessibleName, mark the duplicate visible badge aria-hidden, preserve persisted-only formatting (including zero and >1 without clamping), and allocate the next collision-free Proposed ADR/release identity. No psychometric recomputation, source copy, or parent bypass.
Summary
Grouping-comparison persisted explained-leftover share
e = R̂²/R²is now reconstructed as the serialized successor of exact current #826, with the historical accessible-name defect repaired instead of replaying the collided ADR/release tree.Current stack authority
#827 product head is
0f9e9c8db37948041f39b4e68e4bbd808fa83752, tree6bd51a74eff08240b223a65be8de023cc45984ee. Its first parent is historical #8278b3011b03777822a23af831b4fddcc06e7837019; its second parent is exact current#826@66a7750a10ad0e9526716d382707f99528a75d90. The product branch therefore preserves the historical valid delta while adopting the current serialized stack by non-force convergence. Current identity is ADR0296 / v2.53.0, Proposed while Draft; historical ADR0294/v2.51.0 is evidence only.Product and accessibility invariant
Format only persisted
leftover_map_explained_sharethroughformatLeftoverMapExplainedShare. Missing/non-finiteeomits only this metric; finite zero and finite values above 1 remain explicit and are never clamped. Never deriveefromR̂,R, distance, plotted coordinates, residuals, rank, coverage counts, or visible-subset proxies. fast-mlsirm remains the psychometric owner.The valid review finding is repaired: the historical implementation rendered a descendant explained-share badge inside a pair button with its own explicit
aria-label, so the visible metric was not reliably part of the actionable accessible name. The reconstructed source appends the localized explained-share label and formatted persisted value to the pair button's existing accessible name, while the duplicate visible badge isaria-hidden.RED → causal repair → reconstructed GREEN
The first exact-parent lane exposed a deterministic fixture-anchor harness defect and was repaired without moving product refs. Final run
34086334505, job101630982322, started from exact #826, passed bounded ancestry and frozen frontend installation, then reproduced the realistic accessibility RED by recreating the historical visual badge and requiring the actionable pair button name to include persistedR̂²/R² 0.76; the old explicit button label failed that query as expected. After reset, the causal reconstruction passed focused App/i18n/explained-share tests, oxlint, production build, Storybook, frozen dev+backend installation, inherited compare-coverage authorization, ADR0295/0296 governance, and package-version synchronization. The final step removed both temporary harness files and emitted clean staging commit77a6c1d771d5ac34f7e3a44f3c1c17fd9adb4f05, tree6bd51a74eff08240b223a65be8de023cc45984ee.The clean staging tree was independently re-read after the run: neither
.github/workflows/automation-827-current-826-reconstruction-r1.ymlnor.github/automation/827-r1.pyexists in it. Concurrent product promotion produced0f9e9c8...with the same exact tree and the required historical/current parent order, so that promotion is adopted rather than duplicated.Delivery boundary
Keep Draft. Reconstructed source/build and accessible-name regression are GREEN, but material-UI completion still requires fresh exact-product-head normal/loading/empty/error/permission/responsive browser evidence, keyboard/focus/screen-reader acceptance, and convergence with #922/#929/#932's canonical
ko/en/ja/zh/vi/es/de/frversioned translation ledger. Current inline KO/ZH/JA/VI strings are compatibility copy only. Hosted required/security/CodeQL gates, applicable authenticated PostgreSQL/k6 evidence, immutable release evidence, and qualifying independent approval remain non-transferable.Any descendant must now converge on exact
#827@0f9e9c8db37948041f39b4e68e4bbd808fa83752; predecessor GREEN does not transfer. No self-approval, force push, destructive rebase, gate weakening, or parent bypass.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.