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 live prefix is #828
ac386f981317144a98a0878ca0f13c7731f7cacc→ #82923519e93f0203ebaf9666f60e5eb7e6368dd6219→ #830bebd77c03e5beae469f42361c20bccc80787ebb5→ #83193e1b4fb5601b5733e9a4b0f7b4a9f63ff44354e.#1010 completed exact-head Tests
34612342413GREEN and normally merged into #831. Fresh #831 Tests34614827175is terminal SUCCESS on exact93e1b4fb...: frontend/browser job103314015764passed authenticated startup, seed, signed cross-share fixture and browser acceptance; PostgreSQL/full-suite job103314016038also completed GREEN. #831 has returned to Draft after validation admission because the ancestor/promotion chain is not yet complete.This PR's GitHub base metadata points to current #831
93e1b4fb.... Its historical product head remainsdbff5bf47b06eded0cff64b292815861d7f514f6; it stays Draft/conflicting until semantic reconstruction is admissible rather than destructively rewriting that evidence.#832 recovery inheritance and identity
#832 remains the open recovery/evidence authority for the same
Ubehavior. Exact reconstruction here must preserve all valid #832 deltas: finite/missing/non-finite/negative/zero persisted-Usemantics; helper/i18n/App regressions; the distinctLEFTOVER_MAP_COMPARE_UNEXPLAINED_LABELcontract; generated-lock/project-version parity by regeneration rather than hand edits; and all valid fixture/contract/evidence.Historical ADR0297/v2.54.0 is evidence only because current #828 owns v2.54.0. Allocate a collision-free current ADR/release identity only during reconstruction and keep the decision Proposed while Draft.
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 gate
The exact #831 repository/browser/accessibility receipt is now GREEN, but that alone does not authorize reconstruction: #830 and the serialized ancestors remain Draft and must first become actually promotable under their own current-head governance/evidence. When that prerequisite is satisfied, reconstruct non-force from historical
dbff5bf...onto exact accepted #831, explicitly preserving every valid #832 delta. 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 backend/frontend GREEN, regenerated lock/version parity, lint/build/Storybook, responsive pointer/touch/keyboard/focus/a11y evidence, canonical translation-ledger convergence, applicable PostgreSQL/k6 acceptance, and qualifying independent review are current. #832 may close only after this exact rebuilt successor proves complete inheritance. No self-approval, bypass, force-push, destructive rebase, source duplication, psychometric recomputation, ancestor skip, or stale-evidence transfer.