Skip to content

feat(reports): preserve grouping-comparison coordinates delta for serialized successor - #839

Draft
seonghobae wants to merge 2 commits into
feat/leftover-map-compare-rank-v2580from
feat/leftover-map-compare-coordinates-v2590
Draft

feat(reports): preserve grouping-comparison coordinates delta for serialized successor#839
seonghobae wants to merge 2 commits into
feat/leftover-map-compare-rank-v2580from
feat/leftover-map-compare-coordinates-v2590

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Preserve the valid grouping-comparison persisted leftover-map coordinates ξ / ζ delta while the serialized report stack is repaired. Missing/non-finite coordinates omit only that badge; finite origin coordinates remain explicit. UI/read-model composition only: no SQL/schema, theta authority, or invented score.

Current stack authority

GitHub base metadata points to immediate predecessor #838 (feat/leftover-map-compare-rank-v2580@3d40d04db30e54138efb6f734b47e72965093572). #838 now waits on reconstructed #837 and the repaired predecessor chain. Historical ADR0302/v2.59.0 and its focused validation are evidence only, not current release authority.

Reconstruct the coordinates delta only after exact promoted #838, allocate the then-next unclaimed ADR/release identity, and keep it Proposed while Draft. The historical instruction to retarget directly to #782 is superseded because it would bypass valid serialized predecessors.

Product invariants

  • Missing/non-finite persisted axis coordinates omit only the comparison coordinates badge; finite zero/origin remains explicit.
  • Never infer coordinates from rank, distance, expected/observed/residual/reconstruction/unexplained values, shares, coverage, pair counts, or unused-axis count.
  • Preserve independent predecessor metrics and deterministic persisted coordinate identity.
  • Any persisted metric rendered inside an actionable pair button must be represented in that button's accessible name without duplicate announcement.
  • Preserve current-parent ABAC and whole-population psychometric-aggregate gating; never recompute hidden-population truth from a caller-visible subset.

Evidence boundary

Historical focused frontend evidence was 361 passing tests plus oxlint success, but it predates current-parent reconstruction and does not transfer. Canonical KO/EN/JA/ZH/VI/ES/DE/FR translation authority remains #922/#929/#932. Keep Draft until realistic current-parent RED, causal repair, exact-head backend/frontend GREEN, lint/build/Storybook, applicable browser/responsive/keyboard/focus/a11y evidence, translation-ledger convergence, applicable authenticated PostgreSQL/k6 acceptance, and qualifying independent approval are current. No self-approval, bypass, force-push, destructive rebase, or ancestor skip.

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.

…(v2.59.0)

Caption leftover-map coordinates ξ / ζ on grouping comparison leftover-pair
buttons through formatLeftoverMapCoordinates (ADR 0302). 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
ξ (x, y) ζ (x, y) on the pair row; click a post marker or a pair button opens that
post. A missing or non-finite axis omits that leftover-map comparison coordinates
badge and keeps leftover-map rank when that rank is a non-negative integer.
Rank-0 origin cells still name ξ (0.00, 0.00) ζ (0.00, 0.00). Do not invent
coordinates from leftover-map rank, leftover-map distance, or leftover-map
reconstruction. 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 overlay 2026-08-31 02:25 KST

Writes work (gh OIDC). Do not self-approve. Do not squash-merge. Do not merge #808 without independent APPROVE.

Independent approval is required. No self-approval, admin bypass, or force push.

@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
Comment on lines +4119 to +4124
const coordinates = formatLeftoverMapCoordinates(
pair.leftover_map_person_axis_1,
pair.leftover_map_person_axis_2,
pair.leftover_map_item_axis_1,
pair.leftover_map_item_axis_2,
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Coordinates absent from live comparisons

For live responses, formatLeftoverMapCoordinates receives undefined axes because fetch_period_comparison omits all four persisted coordinates. Every coordinate badge disappears outside mocked tests.

Prompt for agents
The grouping comparison UI in frontend/src/App.tsx reads leftover_map_person_axis_1, leftover_map_person_axis_2, leftover_map_item_axis_1, and leftover_map_item_axis_2, but backend/app/report_ingestion.py fetch_period_comparison does not select or serialize those columns. Extend that comparison query and its leftover_pairs payload to return the four persisted coordinate values, preserving nulls and converting finite database numerics consistently with the detailed report payload. Add an API-level comparison test that verifies real response coordinates, not only a mocked frontend response.
Devin Review

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

Comment thread frontend/src/App.tsx
Comment on lines +4119 to +4124
const coordinates = formatLeftoverMapCoordinates(
pair.leftover_map_person_axis_1,
pair.leftover_map_person_axis_2,
pair.leftover_map_item_axis_1,
pair.leftover_map_item_axis_2,
);

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: Formatter fail-closes independently

formatLeftoverMapCoordinates rejects any missing or non-finite axis while preserving zero and signed finite values. It never derives coordinates from neighboring measurements.

Devin Review

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

Copy link
Copy Markdown
Contributor Author

Cycle overlay 2026-08-31 02:35 KST: leftover-map coordinates ξ / ζ on GET /api/reports/compare/{period} leftover pairs (ADR 0303 / v2.60.0) is stacked as #840 (feat/leftover-map-compare-coordinates-payload-v2600 @ cbf9944) onto this coordinates caption increment. This PR still lacks independent APPROVE. Leave open. Do not self-approve. Do not squash-merge. Do not merge #808.

Preserve #839 ADR 0302/product delta while inheriting current #838 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 #840 ADR 0303/product delta while inheriting current #839 ancestry through a normal two-parent merge. No force-push or destructive rebase.
@seonghobae seonghobae changed the title feat(reports): leftover-map coordinates on grouping comparison strip (v2.59.0) feat(reports): preserve grouping-comparison coordinates 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