Skip to content

feat(reports): preserve grouping comparison explained-share delta for serialized successor - #827

Draft
seonghobae wants to merge 3 commits into
feat/leftover-map-compare-reconstruction-v2500from
feat/leftover-map-compare-explained-share-v2510
Draft

feat(reports): preserve grouping comparison explained-share delta for serialized successor#827
seonghobae wants to merge 3 commits into
feat/leftover-map-compare-reconstruction-v2500from
feat/leftover-map-compare-explained-share-v2510

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

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, tree 6bd51a74eff08240b223a65be8de023cc45984ee. Its first parent is historical #827 8b3011b03777822a23af831b4fddcc06e7837019; 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_share through formatLeftoverMapExplainedShare. Missing/non-finite e omits only this metric; finite zero and finite values above 1 remain explicit and are never clamped. Never derive e from , 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 is aria-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, job 101630982322, 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 persisted R̂²/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 commit 77a6c1d771d5ac34f7e3a44f3c1c17fd9adb4f05, tree 6bd51a74eff08240b223a65be8de023cc45984ee.

The clean staging tree was independently re-read after the run: neither .github/workflows/automation-827-current-826-reconstruction-r1.yml nor .github/automation/827-r1.py exists in it. Concurrent product promotion produced 0f9e9c8... 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/fr versioned 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.

…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.

Copy link
Copy Markdown
Contributor Author

Independent exact-head APPROVE is required before squash-merge. This token is seonghobae (ADMIN); Copilot/Devin COMMENTED is not independent APPROVE. Do not self-approve. Do not squash-merge onto the unprotected leftover base (feat/leftover-map-compare-reconstruction-v2500 / #826). After independent review, retarget onto leftover-coordinates (feat/leftover-map-coordinates-v2240 / #782) rather than squash-merging here.

Head ead81bd (v2.51.0 / ADR 0294) captions persisted leftover-map explained leftover share e on grouping comparison leftover-pair buttons through formatLeftoverMapExplainedShare. Distinct aria-label Leftover map comparison explained leftover share. Missing or non-finite e omits the badge and keeps leftover-map reconstruction R̂ when finite, leftover-map distance d, plus strip coverage notes. UI-only; no SQL; no leftover score or theta.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

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 / ead81bd) captions persisted leftover-map explained leftover share e = R̂²/R² on grouping comparison leftover-pair buttons. Leave open for independent review. Do not squash-merge onto the leftover base. Do not self-approve. Copilot review is not independent APPROVE.

Next buyer increment this cycle: leftover-map unexplained leftover share s = U²/R² on the same grouping comparison leftover-pair buttons (ADR 0295 / v2.52.0), stacked onto this head. UI-only. Distinct aria-label Leftover map comparison unexplained leftover share. Do not invent s from U and R, e, , leftover-map distance, plotted coordinates, coverage, or unused axes. When finite, e + s + x = 1. Issues #79 and #87 stay open. #96 remains closed. Do not merge revert #808 without independent APPROVE.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment thread frontend/src/App.tsx
Comment on lines +4073 to +4075
const explainedShare = formatLeftoverMapExplainedShare(
pair.leftover_map_explained_share,
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Preserve #827 ADR 0294/product delta while inheriting current #826 ancestry through a normal two-parent merge. No force-push or destructive rebase.
seonghobae added a commit that referenced this pull request Sep 5, 2026
Preserve #829 ADR 0295/product delta while inheriting current #827 ancestry through a normal two-parent merge. No force-push or destructive rebase.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 seonghobae changed the title feat(reports): leftover-map explained leftover share on grouping comparison strip (v2.51.0) feat(reports): preserve grouping comparison explained-share delta for serialized successor Sep 7, 2026

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

seonghobae added a commit that referenced this pull request Sep 7, 2026
seonghobae added a commit that referenced this pull request Sep 7, 2026
seonghobae added a commit that referenced this pull request Sep 7, 2026
github-actions Bot pushed a commit that referenced this pull request Sep 7, 2026
Preserve repaired historical #828 as first parent and exact #827 as second parent; validated reconstructed tree, no force.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant