feat(reports): preserve grouping-comparison unexplained-leftover delta for serialized successor - #833
Conversation
…on strip (v2.54.0) Caption leftover-map unexplained leftover U on grouping comparison leftover-pair buttons through formatLeftoverMapUnexplained (ADR 0297). 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 U on the pair row; click a post marker or a pair button opens that post. A missing or non-finite U omits that leftover-map comparison unexplained leftover badge and keeps leftover-map cross share x when finite. A finite negative leftover is shown, never clamped. Do not invent U from R and R̂. 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-31T01:19 KST. Writes work (comment/create-PR/push). Token still empty X-OAuth-Scopes; GitHub App Grok has contents/PR/issues write as seonghobae. This PR (#833 / v2.54.0 / ADR 0297 / 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 #831 @ Next buyer increment after this: leftover residual |
| const unexplainedLeftover = formatLeftoverMapUnexplained( | ||
| pair.leftover_map_unexplained, | ||
| ); |
There was a problem hiding this comment.
🟡 Production unexplained badges never appear
Real comparisons omit leftover_map_unexplained in fetch_period_comparison, so formatLeftoverMapUnexplained always hides the new badge. Only mocked responses display it.
Prompt for agents
Expose the persisted unexplained leftover through the real comparison API. In backend/app/report_ingestion.py, update fetch_period_comparison so its leftover-pair query selects report_leftover_pair.leftover_map_unexplained and its payload serialization returns the nullable finite value, matching fetch_period_reports. Add or extend the backend /api/reports/compare/{period_code} integration test to verify the field reaches authorized comparison pairs. Keep the frontend formatter fail-closed for missing or non-finite values.
Was this helpful? React with 👍 or 👎 to provide feedback.
|
Cycle 2026-08-31 01:19 KST. Head Local leftover residual Parallel stack #832 / #834 is a competing U-then-R increment on the same buyer gap; leave those open too. After independent review, retarget onto leftover-coordinates ( Next after R: leftover observed |
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first/capacity finding: this PR is Ready while its base is the still-open feature branch owned by #831, which is itself stacked on an unmerged descendant chain behind the current #802/#811 foundation. Ready here is premature validation admission and can consume review/Actions capacity without a legal protected-main merge path. Preserve the full v2.54.0 delta, but keep this dependent PR Draft until its prerequisite chain converges normally; do not close or squash it.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head stack-authority finding: live base already equals #831 exact 8a12062cd8efef0c99abe794ef3e9f8dcbc31617, but the PR body still cites obsolete parent 2cefc0b, predecessor verification, and historical retarget guidance. Preserve ADR 0297/product semantics and Draft state; make live parent/head/evidence authoritative and do not transfer predecessor tests.
Summary
Preserve the valid persisted grouping-comparison unexplained leftover
Udelta while the serialized report stack is repaired. Missing/non-finiteUomits only that metric; finite zero and negative values remain explicit. UI/read-model composition only: no schema, theta authority, invented score, or psychometric recomputation.Current serialized authority
The current prefix is #828
ac386f981317144a98a0878ca0f13c7731f7cacc→ #82923519e93f0203ebaf9666f60e5eb7e6368dd6219→ #830bebd77c03e5beae469f42361c20bccc80787ebb5→ #8319189a3e718665b29845a75b9e8360971eb9f7556.#831 moved by normal merge of #1008 after #1008 exact head
d581a73c0be5a4906d9e6b19578f5dff4498d4c4passed repository Tests34563424670. Issue #1006 is completed; wrong-base recovery #1007 is closed after verified successor inheritance. The live #831 head now includes the primary-report finite/null normalization and the live-PostgreSQL strict-JSON regression set.This PR's GitHub base has been explicitly refreshed to exact #831
9189a3e.... Its historical head remainsdbff5bf47b06eded0cff64b292815861d7f514f6; it is not promoted or merged. All predecessor #831 acceptance evidence is invalid after the parent movement. Fresh #831 Tests34567103798is admitted on9189a3e...; live Actions state is authoritative rather than any copied transient status. Current authenticated rendered responsive/pointer/touch/keyboard/focus/screen-reader evidence remains missing.Historical identity and #832 recovery inheritance
Historical ADR0297/v2.54.0 is evidence only; current #828 owns v2.54.0. No replacement ADR/release version is materialized on this stale head. Allocate both from fresh live authority only during semantic reconstruction, keeping the new ADR Proposed while Draft.
#832 remains an open Draft recovery/evidence lane on exact base
9189a3e.... Exact #833 reconstruction must preserve all of #832's valid delta explicitly: persisted-Ufinite/missing/non-finite/negative/zero semantics; helper/i18n/App regressions; the assertion thatLEFTOVER_MAP_COMPARE_UNEXPLAINED_LABELremains distinct from the unexplained-share label; generated-lock/project-version parity by regeneration rather than hand edits; and all valid fixture/contract/evidence. Do not close #832 until exact rebuilt #833 proves complete inheritance.Product/accessibility invariants
U; never derive it fromR,R̂, distance, coordinates, residual, explained/unexplained/cross shares, rank, coverage, or unused axes.Uomits only its comparison suffix/badge; finite zero remains explicit and finite negative values are not clamped.Uto the actionable grouping-comparison button's accessible name and hide only the duplicate visual badge from the accessibility tree.Reconstruction/evidence boundary
The parent movement has been converged at PR metadata level to exact
9189a3e...; do not transfer predecessor GREEN. Semantic reconstruction must start from historicaldbff5bf...and adopt the exact accepted #831 tree non-force only after #831's fresh repository and browser/accessibility acceptance are current. Overlapping App/i18n/lock files require semantic reconstruction rather than wholesale ours/theirs selection.Keep Draft until realistic exact-parent RED → minimum causal fix → exact-head full backend/frontend GREEN, regenerated lock/version parity, lint/build/Storybook, current rendered responsive/pointer/touch/keyboard/focus/a11y evidence, canonical translation-ledger convergence, applicable PostgreSQL/k6 acceptance, and qualifying independent review are current. No self-approval, bypass, force-push, destructive rebase, source duplication, psychometric recomputation, ancestor skip, or predecessor-evidence transfer.