feat(reports): leftover observed on grouping comparison strip (v2.56.0) - #836
Conversation
Caption leftover observed Y on grouping comparison leftover-pair buttons through formatLeftoverMapObserved (ADR 0299). After make seed, closest and farthest leftover pairs sit above the member list with the Gabriel biplot of already-named coordinates and grouping comparison leftover-pair buttons that match Y on the pair row; click a post marker or a pair button opens that post. A missing or non-finite Y omits that leftover-map comparison observed badge and keeps leftover residual R when finite. A finite negative leftover is shown, never clamped. Do not invent Y from R and E. UI-only; no new columns. Never invent a leftover score or a theta. 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.
|
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 2026-08-31 01:42 KST. Head Leave this PR open. Do not squash-merge onto the unprotected leftover base (#835). Do not self-approve. After independent review, retarget onto leftover-coordinates ( Next increment on this head: leftover expected |
There was a problem hiding this comment.
📝 Info: Formatter preserves valid edge values
formatLeftoverMapObserved keeps zero and finite negatives while rejecting missing or non-finite values. Its result cannot suppress neighboring badges.
(Refers to this code)
Was this helpful? React with 👍 or 👎 to provide feedback.
| pair.leftover_map_unexplained, | ||
| ); | ||
| const residual = formatLeftoverMapResidual(pair.leftover_residual); | ||
| const observed = formatLeftoverMapObserved(pair.observed_response); |
There was a problem hiding this comment.
🟡 Observed comparison badges never appear
Real comparison responses omit observed_response in fetch_period_comparison, so formatLeftoverMapObserved always receives undefined. Every new Y badge stays hidden.
Prompt for agents
The frontend now renders pair.observed_response in frontend/src/App.tsx, but backend/app/report_ingestion.py fetch_period_comparison does not select observed_response from report_leftover_pair or serialize it into comparison leftover_pairs. Extend that comparison query and payload to carry the persisted nullable value without deriving it from residual or expected response. Add comparison-endpoint coverage using a real fetch_period_comparison-shaped payload, including finite, null, and zero values, so frontend mocks cannot mask future API omissions.
Was this helpful? React with 👍 or 👎 to provide feedback.
|
Cycle 2026-08-31 01:45 KST. Head |
Summary
Yon grouping comparison leftover-pair buttons through formatLeftoverMapObserved (ADR 0299 / v2.56.0).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 matchdon the pair row, pair segments that matchR̂on the pair row, pair segments that matchR̂²/R²on the pair row, pair segments that matchU²/R²on the pair row, pair segments that match2R̂U/R²on the pair row, pair segments that matchUon the pair row, pair segments that matchRon the pair row, pair segments that matchYon the pair row, pair segments that matchEon 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 reconstructionR̂on the pair row, grouping comparison leftover-pair buttons that match leftover-map explained leftover shareeon the pair row, grouping comparison leftover-pair buttons that match leftover-map unexplained leftover shareson the pair row, grouping comparison leftover-pair buttons that match leftover-map cross sharexon the pair row, grouping comparison leftover-pair buttons that match leftover-map unexplained leftoverUon the pair row, grouping comparison leftover-pair buttons that match leftover residualRon the pair row, and grouping comparison leftover-pair buttons that match leftover observedYon the pair row; click a post marker or a pair button opens that post.Yomits that leftover-map comparison observed badge and keeps leftover residualRwhen finite, leftover-map unexplained leftoverUwhen finite, leftover-map cross sharexwhen finite, leftover-map unexplained leftover shareswhen finite, leftover-map explained leftover shareewhen finite, leftover-map reconstructionR̂when finite, leftover-map distanced, 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 nameY 0.00when that persisted observed response is finite. A finite negative leftover is shown, never clamped. Do not inventYfromRandE, leftover-map distance, plotted coordinates, leftover residual, leftover-map reconstruction, leftover-map unexplained leftover, leftover-map explained leftover share, leftover-map unexplained leftover share, leftover-map cross 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.Leftover map comparison observed. Copy is the sameY {n.nn}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.feat/leftover-map-compare-residual-v2550/ feat(reports): leftover residual on grouping comparison strip (v2.55.0) #835 @a825c33). 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/leftoverObservedExpected.test.ts src/leftoverResidual.test.ts src/leftoverMapUnexplained.test.ts src/leftoverMapUnexplainedShare.test.ts src/leftoverMapCrossShare.test.ts src/leftoverMapExplainedShare.test.ts src/leftoverMapReconstruction.test.ts src/i18n.test.ts src/App.test.tsx: 9 files, 336 passed.pnpm exec oxlinton changed frontend files: 0 warnings, 0 errors.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.