Skip to content

feat(reports): preserve grouping-comparison residual delta for serialized successor - #835

Draft
seonghobae wants to merge 2 commits into
feat/leftover-map-compare-unexplained-v2540from
feat/leftover-map-compare-residual-v2550
Draft

seonghobae wants to merge 2 commits into
feat/leftover-map-compare-unexplained-v2540from
feat/leftover-map-compare-residual-v2550

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Preserve the valid grouping-comparison persisted leftover residual R delta while the serialized report stack is repaired. Missing/non-finite R omits only that metric; finite zero and negative values remain explicit and are never clamped. UI/read-model composition only: no schema, theta authority, invented score, or hidden-population recomputation.

Current serialized authority

The live prefix is #828 ac386f981317144a98a0878ca0f13c7731f7cacc → #829 23519e93f0203ebaf9666f60e5eb7e6368dd6219 → #830 bebd77c03e5beae469f42361c20bccc80787ebb5 → #831 93e1b4fb5601b5733e9a4b0f7b4a9f63ff44354e.

#1010 exact b013b8b7bc717c543b0d2ca8458c60dcc1f2144e completed hosted Tests 34612342413 SUCCESS and normally merged into #831. Fresh #831 Tests 34614827175 is now terminal SUCCESS on exact 93e1b4fb...: frontend/browser job 103314015764 passed authenticated startup, seed, signed fixture pin and browser acceptance, and PostgreSQL/full-suite job 103314016038 passed the complete suite. #831 has returned to Draft after validation admission because its ancestor/promotion chain remains incomplete.

#829 Tests 34614296610 and #830 Tests 34613528007 remain terminal SUCCESS on their unchanged exact heads; both remain Draft because prerequisite/promotion and independent-review gates are still open.

#832 and #833 both target current #831 at exact 93e1b4fb... while preserving their historical recovery/reconstruction heads. #833 itself remains historical dbff5bf47b06eded0cff64b292815861d7f514f6. This PR therefore correctly stays based on that historical #833 head with head f0da90928f0a01ba46ad82f3c53104edc910a630. Its direct parent branch has not advanced; do not create a speculative or destructive restack. After the ancestor chain is actually promotable and #833 is semantically reconstructed on accepted #831, reconstruct this child non-force from that exact repaired #833 and regenerate all non-transferable evidence.

Decision/release identity

Historical ADR0298/v2.55.0 is evidence only and collides with the current serialized allocation. Allocate the then-live collision-free ADR/release identity only during reconstruction on exact repaired #833, and keep the decision Proposed while Draft.

Closed #834 is a competing historical implementation of the same residual buyer gap. Its closed state is valid only if the reconstructed successor proves complete inheritance of every valid source/test/fixture/contract/evidence delta. Before treating #834 as fully superseded, compare it against rebuilt #835; if any valid delta is missing, reopen it or preserve the missing delta through an explicit successor under the no-drop rule.

Product/accessibility invariants

  • Consume only persisted R; never derive it from Y-E, U, R̂, geometry, reconstruction, shares, rank, coverage, pair count, or unused axes.
  • Missing/non-finite R omits only the residual metric; finite zero and negative values remain explicit and unclamped.
  • A finite persisted metric shown inside an actionable grouping-comparison pair must be represented in that button's accessible name; duplicate visible evidence must not be announced twice.
  • Preserve repaired parent read-model transport, primary-report strict-JSON resilience, whole-population ABAC/aggregate gating, and independent predecessor metrics; never reconstruct psychometric truth over a caller-visible subset.
  • Preserve the accepted mobile navigation/language boundary from fix(e2e): make authenticated browser stack reproducible #1010 when this child is eventually reconstructed; do not create a competing inline translation authority.

Keep Draft until exact repaired #833 exists on an actually promotable ancestor chain, this residual delta is reconstructed non-force, realistic current-parent RED → minimum causal repair → exact-head backend/frontend GREEN is complete, rendered responsive/pointer/touch/keyboard/focus/a11y evidence and canonical translation-ledger consumption are current, applicable authenticated PostgreSQL/k6 evidence exists, and qualifying independent approval/governance conditions are satisfied. No self-approval, bypass, force-push, destructive rebase, ancestor skip, stale-head evidence transfer, or gate weakening.

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.

Caption leftover residual R on grouping comparison leftover-pair
buttons through formatLeftoverMapResidual (ADR 0298). 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
R on the pair row; click a post marker or a pair button opens that post. A missing
or non-finite R omits that leftover-map comparison residual badge and
keeps leftover-map unexplained leftover U when finite. A finite negative leftover is shown,
never clamped. Do not invent R from Y and E or from U 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.
@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 2026-08-31 01:35 KST. Head a825c33. Independent collaborator APPROVE required. Copilot/Devin COMMENTED is not independent APPROVE. Only collaborator is seonghobae — no second human reviewer to request.

Leave this PR open. Do not squash-merge onto the unprotected leftover base (#833). Do not self-approve. After independent review, retarget onto leftover-coordinates (feat/leftover-map-coordinates-v2240 / #782) rather than squash-merging here.

Parallel residual #834 on #832 is a competing stack of the same buyer gap; leave both open.

Next increment on this head: leftover observed Y on grouping comparison leftover-pair buttons (ADR 0299 / v2.56.0). Synthetic fixtures only. NVIDIA_NIM_API_KEY only. 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 2 potential issues.

Devin Review

Comment thread frontend/src/App.tsx
const unexplainedLeftover = formatLeftoverMapUnexplained(
pair.leftover_map_unexplained,
);
const residual = formatLeftoverMapResidual(pair.leftover_residual);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Residual remains persisted evidence

formatLeftoverMapResidual reads the comparison payload directly. Missing or non-finite residuals omit only this badge, preserving neighboring measurements.

Devin Review

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

Comment on lines +23 to +24
export const LEFTOVER_MAP_COMPARE_RESIDUAL_LABEL =
"Leftover map comparison residual";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Signed residual values remain intact

The finiteness gate retains zero and negative residuals. Formatting matches the existing pair-row badge without clamping.

Devin Review

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

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-31 01:42 KST. Head a825c33. Leftover observed Y (ADR 0299 / v2.56.0) is stacked as #836 (feat/leftover-map-compare-observed-v2560 @ ada0c86). Leave both open. Independent APPROVE still missing. Do not squash-merge. Do not self-approve.

Preserve #835 ADR 0298/product delta while inheriting current #833 ancestry through a normal two-parent merge. No force-push or destructive rebase.

This branch has not been deployed

No deployments
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