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

feat(reports): preserve grouping-comparison residual delta for serialized successor#835
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 badge; finite zero and negative values remain explicit and are never clamped. UI/read-model composition only: no SQL, new measurement authority, theta, or invented score.

Current stack / identity authority

Historical ADR0298/v2.55.0 is evidence only. Exact current #827 is v2.53.0, #828 is reconstructing its immediate successor as v2.54.0, and #829 is the next valid serialized delta. Keeping this branch's old v2.55.0 title as current authority would collide with the repairing chain. Allocate an unclaimed ADR/release identity only after #828#829#830#831 and the canonical unexplained-leftover predecessor have converged.

Closed #834 is an unmerged competing implementation of the same residual buyer gap; do not reopen or duplicate its stale stack merely because it is closed. Preserve whichever valid source/test/evidence delta is not already inherited here when reconstructing the successor, and document exact succession before treating #834 as fully superseded.

Product invariants

  • Missing/non-finite persisted R omits only the grouping-comparison residual badge; finite zero and negative values remain explicit.
  • Never derive R from Y-E, U and , distance, plotted coordinates, reconstruction, shares, rank, coverage counts, or unused-axis count.
  • Preserve distinct localized grouping-comparison residual copy.
  • Any finite persisted metric rendered inside a pair button must also be present in the actionable button's accessible name; a child badge must not be hidden by an explicit parent aria-label.
  • Inherit current-parent ABAC and whole-population psychometric-aggregate gating; never recompute hidden-population truth from a visible subset.

UI / evidence boundary

Canonical KO/EN/JA/ZH/VI/ES/DE/FR translation authority remains #922/#929/#932; historical inline locale strings are compatibility evidence only. Keep Draft until current-parent reconstruction, exact-head repository/security checks, Storybook/browser/keyboard/focus/a11y evidence, translation-ledger convergence, applicable authenticated PostgreSQL/k6 acceptance, and qualifying independent review are current. No self-approval, bypass, force-push, 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.
seonghobae added a commit that referenced this pull request Sep 5, 2026
Preserve #836 ADR 0299/product delta while inheriting current #835 ancestry through a normal two-parent merge. No force-push or destructive rebase.
@seonghobae seonghobae changed the title feat(reports): leftover residual on grouping comparison strip (v2.55.0) feat(reports): preserve grouping-comparison residual delta for serialized successor Sep 7, 2026
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