Skip to content

feat(reports): leftover-map cross share on grouping comparison strip (v2.53.0) - #831

Open
seonghobae wants to merge 1 commit into
feat/leftover-map-compare-unexplained-share-v2520from
feat/leftover-map-compare-cross-share-v2530
Open

feat(reports): leftover-map cross share on grouping comparison strip (v2.53.0)#831
seonghobae wants to merge 1 commit into
feat/leftover-map-compare-unexplained-share-v2520from
feat/leftover-map-compare-cross-share-v2530

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Caption leftover-map cross share x on grouping comparison leftover-pair buttons through formatLeftoverMapCrossShare (ADR 0296 / v2.53.0).
  • After make seed, closest and farthest leftover pairs sit above the member list with the Gabriel biplot of already-named coordinates, leftover-map axis share when finite, axis ticks that match ξ (x, y) ζ (x, y) on the pair row, pair segments that match d on the pair row, pair segments that match on the pair row, pair segments that match R̂²/R² on the pair row, pair segments that match U²/R² on the pair row, pair segments that match 2R̂U/R² on the pair row, pair segments that match U on the pair row, pair segments that match R on the pair row, pair segments that match Y on the pair row, pair segments that match E on the pair row, pair segments that match leftover-map rank on the pair row, a plot caption that matches leftover-map complete-case coverage above the pair list, a plot caption that matches leftover-map item complete-case coverage, a plot caption that matches leftover-map incomplete post coverage, a plot caption that matches leftover-map incomplete item coverage, a pair-list note that matches leftover-map post complete-case coverage, a pair-list note that matches leftover-map item complete-case coverage, a pair-list note that matches leftover-map incomplete post coverage, a pair-list note that matches leftover-map incomplete item coverage, a grouping comparison note that matches leftover-map post complete-case coverage, a grouping comparison note that matches leftover-map item complete-case coverage, a grouping comparison note that matches leftover-map incomplete post coverage, a grouping comparison note that matches leftover-map incomplete item coverage, grouping comparison leftover-pair buttons that match leftover-map reconstruction on the pair row, grouping comparison leftover-pair buttons that match leftover-map explained leftover share e on the pair row, grouping comparison leftover-pair buttons that match leftover-map unexplained leftover share s on the pair row, and grouping comparison leftover-pair buttons that match leftover-map cross share x on the pair row; click a post marker or a pair button opens that post.
  • A missing or non-finite x omits that leftover-map comparison cross share badge and keeps leftover-map unexplained leftover share s when finite, leftover-map explained leftover share e when finite, leftover-map reconstruction when finite, leftover-map distance d, the strip leftover-map post coverage note, leftover-map item coverage note, leftover-map incomplete post note, leftover-map incomplete item note, leftover pairs, and any leftover-map captions on the pair list and graphic. Rank-0 origin cells still name 2R̂U/R² 0.00 when that persisted share is finite. A finite negative share is shown, never clamped. Do not invent x from , U, and R, leftover-map distance, plotted coordinates, leftover-map reconstruction, leftover residual, leftover-map explained leftover share, leftover-map unexplained leftover share, leftover-map rank, leftover-map post coverage, leftover-map item coverage, leftover-map incomplete post coverage, leftover-map incomplete item coverage, or the count of unused axes.
  • UI-only; no SQL; no new columns. Distinct aria-label Leftover map comparison cross share. Copy is the same 2R̂U/R² {value} formatter as the pair-row badge. The strip does not gain the leftover-map graphic. Never invent a leftover score. Never invent a theta. Do not persist leftover-map inner product, cosine, or length.
  • Stacked onto leftover-map unexplained leftover share on grouping comparison leftover-pair buttons (feat/leftover-map-compare-unexplained-share-v2520 / feat(reports): leftover-map unexplained leftover share on grouping comparison strip (v2.52.0) #829 @ 4d82c28). Leave this PR open for independent review. Do not squash-merge onto the unprotected leftover base. Do not self-approve. After independent review, retarget onto leftover-coordinates (feat/leftover-map-coordinates-v2240 / feat(reports): persist leftover-map coordinates (v2.24.0) #782) rather than squash-merging here.

Verification

  • pnpm exec vitest run src/leftoverMapCrossShare.test.ts src/leftoverMapUnexplainedShare.test.ts src/leftoverMapExplainedShare.test.ts src/leftoverMapReconstruction.test.ts src/i18n.test.ts src/App.test.tsx: 6 files, 310 passed.
  • pnpm exec oxlint on changed frontend files: 0 warnings, 0 errors.
  • PostgreSQL period-report compare tests were not executed here (UI-only; no schema change).

Evidence boundary

Authenticated PostgreSQL API and k6 runtime acceptance are not claimed. No real records or credentials. Synthetic fixtures only.

Independent approval is required. No self-approval, admin bypass, or force push.

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.


Devin Review

…(v2.53.0)

Caption persisted leftover-map cross share x = 2R̂U/R² on grouping
comparison leftover-pair buttons through formatLeftoverMapCrossShare
(ADR 0296). Distinct aria-label Leftover map comparison cross share.
Missing or non-finite x omits that badge and keeps s, e, R̂, d, and
coverage notes. Do not invent x from R̂, U, and R. Finite negative
share is shown, never clamped. UI-only; no new columns.

Copy link
Copy Markdown
Contributor Author

Cycle probe 2026-08-31 ~00:50 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 (#831 / v2.53.0 / ADR 0296 / 2cefc0b) captions persisted leftover-map cross share x = 2R̂U/R² on grouping comparison leftover-pair buttons through formatLeftoverMapCrossShare. Distinct aria-label Leftover map comparison cross share. UI-only; no new columns. Missing or non-finite x omits that badge independently of s, e, , d, and coverage notes. A finite negative share is shown, never clamped. Do not invent x from , U, and R. When finite, e + s + x = 1 is now strip-auditable.

Verification: pnpm exec vitest run src/leftoverMapCrossShare.test.ts src/leftoverMapUnexplainedShare.test.ts src/leftoverMapExplainedShare.test.ts src/leftoverMapReconstruction.test.ts src/i18n.test.ts src/App.test.tsx — 6 files, 310 passed. pnpm exec oxlint on changed frontend files — 0 warnings, 0 errors.

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 #829 @ 4d82c28. Issues #79 and #87 stay open. #96 remains closed. Do not merge revert #808 without independent APPROVE.

Next buyer increment after this: leftover-map unexplained leftover U on the same grouping comparison leftover-pair buttons so U + R̂ = R is strip-auditable.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: cda1aa15-31f7-41cb-9274-2fbe9f938cf2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@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 +4087 to +4089
const crossShare = formatLeftoverMapCrossShare(
pair.leftover_map_cross_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.

🟡 Comparison cross share never appears

For real responses, formatLeftoverMapCrossShare receives undefined; the comparison payload never selects the persisted cross share. The badge only appears with mocked data.

Prompt for agents
Update backend/app/report_ingestion.py fetch_period_comparison so its leftover-pair query selects report_leftover_pair.leftover_map_cross_share and its response payload serializes that value as a nullable float. Add or extend backend comparison-endpoint tests to verify finite, zero, negative, null, and authorization-filtered values reach the frontend contract. Keep the frontend formatter as the fail-closed display boundary.
Devin Review

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

Copy link
Copy Markdown
Contributor Author

Queue cycle 2026-08-31T01:06KST: write probe. Leave open for independent review. Do not self-approve.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-31T01:19 KST: write-retry on #831 (v2.53.0 leftover-map cross share). Independent APPROVE required; no self-approve. Next buyer gap continues from this head if checks/reviews allow.

Copy link
Copy Markdown
Contributor Author

Stacked #833 (feat/leftover-map-compare-unexplained-v2540 @ 18d89b4, v2.54.0 / ADR 0297) captions persisted leftover-map unexplained leftover U on the same grouping comparison leftover-pair buttons. Leave #831 open for independent APPROVE. Do not self-approve. Do not squash-merge this leftover base.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-31 01:19 KST. Head 2cefc0b still has no independent collaborator APPROVE (Devin Review COMMENTED is not independent APPROVE). Leave open. Do not squash-merge. Do not self-approve.

Downstream: #833 (U / v2.54.0 on this head) then local residual R / v2.55.0. Parallel #832/#834 also stacked from this head. After independent review, retarget onto leftover-coordinates rather than squash-merging onto this leftover base.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant