feat(reports): preserve grouping comparison unexplained-share delta for serialized successor - #829
Conversation
…mparison strip (v2.52.0) Caption persisted leftover-map unexplained leftover share s = U²/R² on grouping comparison leftover-pair buttons through formatLeftoverMapUnexplainedShare (ADR 0295). Distinct aria-label Leftover map comparison unexplained leftover share. Missing or non-finite s omits that badge and keeps e, R̂, d, and coverage notes. Do not invent s from U and R. UI-only; no new columns.
|
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:45 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 (#829 / v2.52.0 / ADR 0295 / Verification: Leave open for independent review. Do not squash-merge onto the leftover base. Do not self-approve. Copilot review is not independent APPROVE. Stacked onto #827 @ Next buyer increment after this: leftover-map cross share |
seonghobae
left a comment
There was a problem hiding this comment.
Copilot review requested via GitHub App. Copilot review is not independent APPROVE. Leave this PR open.
| const unexplainedShare = formatLeftoverMapUnexplainedShare( | ||
| pair.leftover_map_unexplained_share, | ||
| ); |
There was a problem hiding this comment.
🟡 Unexplained share badge never renders
Live payloads from fetch_period_comparison omit leftover_map_unexplained_share, so formatLeftoverMapUnexplainedShare always receives undefined. The new badge only appears with mocked data.
Prompt for agents
The grouping comparison endpoint must include the persisted unexplained share consumed by ReportsPanel. Update backend/app/report_ingestion.py fetch_period_comparison so its leftover-pair query selects report_leftover_pair.leftover_map_unexplained_share and its payload serializes a finite database value as a float while preserving null. Add or extend backend comparison tests to verify the field reaches GET /api/reports/compare/{period_code}; keep the existing authorization filtering unchanged.
Was this helpful? React with 👍 or 👎 to provide feedback.
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first/capacity finding: this Ready PR is a dependent increment on still-open #827, while the current leftover-map foundation #802 has not merged and #811 is Draft/conflicting. Preserve the v2.52.0 unexplained-share delta, but keep this child Draft until prerequisite convergence provides a legal protected-main path. No close, squash, or evidence transfer.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head stack-authority finding: live base already equals #827 exact 8b3011b03777822a23af831b4fddcc06e7837019, but the PR body still cites obsolete parent ead81bd, predecessor verification, and historical retarget guidance. Preserve ADR 0295/product semantics and Draft state; make live parent/head/evidence authoritative and do not transfer predecessor tests.
seonghobae
left a comment
There was a problem hiding this comment.
Serialized-descendant finding: #825's reconstructed identity and #826/#827 collision repairs make this PR's historical ADR0295/v2.52.0 non-authoritative. Preserve the unexplained-share delta and exact historical ancestry as evidence, but do not promote that identity. After #825→#826→#827 converge, reconstruct from exact promoted #827 with an unclaimed ADR/release identity and inherited authorization/UI contracts.
|
Fresh review finding on historical |
seonghobae
left a comment
There was a problem hiding this comment.
Verified current historical-head accessibility finding for successor reconstruction. The grouping-comparison pair button sets an explicit aria-label to Open leftover … pair from comparison: <title> · <criterion>, while the persisted unexplained-share value is rendered only inside a descendant badge with its own aria-label. Because the button already has an explicit accessible name, that descendant metric is not part of the actionable name. Preserve the valid unexplained-share delta, but on reconstruction after exact promoted #828 append the localized unexplained-share label and finite persisted value to the button name and make the duplicate visual badge non-name-bearing (aria-hidden). Add a regression that locates the button by an accessible name containing the persisted U²/R² value. Missing/non-finite share must remain absent; do not derive or clamp psychometric truth.
seonghobae
left a comment
There was a problem hiding this comment.
r3 run 34096383373 is a harness RED, not a product-conflict RED. Exact #828/live-head verification passed, then reconstruction exited before dependency setup. The failing guard quotes the i18n semantic key as grep -c '"'Leftover map comparison unexplained leftover share'"' ...; Bash splits the unquoted spaces into additional grep operands, so the guard exits 2 even when reconstruction is valid. Repair by replacing this shell-quoting assertion with a semantic Python count/assertion, start again from exact #828, and do not reuse failed staging. Preserve the planned realistic accessible-name RED, minimal parent-name/duplicate-badge fix, full exact-head GREEN, and non-force product promotion only after live-head re-verification.
Summary
Preserve the valid grouping-comparison persisted unexplained-leftover-share
s = U² / R²delta as the serialized successor of exact #828. Missing/non-finitesomits only that metric; finite zero and values above 1 remain explicit and are never clamped. UI/read-model composition only: no SQL, new measurement authority, theta, or invented score.Current stack authority
#828 is exact promoted predecessor
7b6dbbb99a09d0523bce43c6872bbd9fa382a43a(ADR0367/v2.54.0). #829 product branch is now non-force promoted to0e4fd5815686120ec66203cb6848834b56bdf289, treef814e6889e5d7674a9f8b65fcccb4f61cbb95662, with historical #829118500f73251eaaf717d5329b8fb6d9895196fe7as first parent and exact #828 as second parent. ADR0369 / v2.55.0 is the current collision-free identity; historical ADR0295/v2.52.0 remains evidence only.Independent live verification confirms the product branch points to
0e4fd581..., the parent order is preserved, and neither.github/workflows/automation-829-current-828-reconstruction-r4.ymlnor.github/automation/829-r4.pyexists in the product tree.Review finding and realistic RED
Historical
frontend/src/App.tsxgave each grouping-comparison pair button an explicitaria-labelending at pair title/criterion while rendering persistedU²/R²only in a descendant span with its own label. Because the explicit parent label owns the actionable accessible name, the buyer-visible metric could be omitted for assistive technology. Review5128914203records that product finding.Runs
34094051465and34094519359were harness failures before product RED. r334096383373fixed those but exposed a shell-quoting guard defect. r434098420270then passed exact-parent/live-head verification, semantic reconstruction, frozen graph installation, the realistic accessibility RED, the minimal causal fix, and the fullExact reconstructed GREENstep. The run is nevertheless terminal failure because its combined finalVerify authority and promote product branch non-forcestep failed after the product ref had already moved. That run-level failure is not rewritten as GREEN and should not be rerun unchanged: its initial guard expects the old product head, which is no longer true.The product promotion itself is adopted only because its result was independently re-read from GitHub: exact branch head, exact two-parent ancestry, clean product tree, and absence of temporary harness files all match the intended promotion. The failed final harness step remains non-transferable workflow evidence rather than a product-conflict finding.
Product invariants
somits only the comparison unexplained-share badge and accessible-name suffix.U²/R² 0.00; finite values above 1 are shown rather than clamped.sfromU,R, distance, plotted coordinates, reconstruction, residual, explained share, rank, coverage counts, or unused-axis count.Descendant and evidence boundary
#830 is now the earliest stale descendant and must reconstruct from exact
#829@0e4fd5815686120ec66203cb6848834b56bdf289; predecessor isolated checks do not transfer. Canonical KO/EN/JA/ZH/VI/ES/DE/FR translation authority remains #922/#929/#932. Inline five-locale strings in this reconstruction are compatibility presentation, not a competing source of truth.Keep Draft until hosted exact-product-head required checks, current browser/keyboard/focus/a11y evidence, translation-ledger convergence, authenticated PostgreSQL/k6 acceptance where applicable, and qualifying independent approval exist. Draft-triggered
Testsaction-required status is not execution evidence. No self-approval, parent bypass, force-push, destructive rebase, or gate weakening.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.