Skip to content

feat(reports): preserve grouping-comparison coordinate-payload delta for serialized successor - #840

Draft
seonghobae wants to merge 2 commits into
feat/leftover-map-compare-coordinates-v2590from
feat/leftover-map-compare-coordinates-payload-v2600
Draft

feat(reports): preserve grouping-comparison coordinate-payload delta for serialized successor#840
seonghobae wants to merge 2 commits into
feat/leftover-map-compare-coordinates-v2590from
feat/leftover-map-compare-coordinates-payload-v2600

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Preserve the valid delta that returns persisted leftover-map coordinates ξ / ζ on GET /api/reports/compare/{period} leftover pairs. Compare read-model payload only: no new SQL/schema, invented coordinates/score/theta, or persisted inner-product/cosine/length derivation.

Current stack authority

GitHub base metadata points to immediate predecessor #839 (feat/leftover-map-compare-coordinates-v2590@14453e71b3871cd726e14ac6e19462a66695b5db). The repaired serialized authority has advanced through exact #827 0f9e9c8db37948041f39b4e68e4bbd808fa83752; #828 is now the earliest active reconstruction and #829#839 retain their valid deltas behind it. The previous description naming #820 as earliest stale is superseded.

Historical ADR0303/v2.60.0, current head b5732ba2a6de25595989db0b5fb74308b8eae75a, and diagnostic run 34015056955 remain evidence only. Reconstruct this coordinate-payload delta only after exact promoted #839, allocate the then-next unclaimed ADR/release identity from live authority, and keep it Proposed while Draft. Do not promote the historical tree, bypass an ancestor, force-push, destructively rebase, or transfer predecessor checks.

Descendant boundary

#841/#842 retain distinct downstream decisions and must converge after this PR is reconstructed; duplicate historical release/ADR identities must be repaired rather than collapsed. Their historical ancestry is not acceptance evidence for this PR.

Product invariant

A missing/non-finite persisted axis remains absent rather than inferred from rank, distance, Y/E/R/U, reconstruction/share terms, coverage, pair count, or unused axes. Stored origin zeros remain valid. The compare payload may carry only persisted coordinates and existing persisted measurement outputs. Whole-population psychometric aggregates remain subject to current-parent ABAC and must not be recomputed from a caller-visible subset.

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 repository/security GREEN, applicable authenticated PostgreSQL/k6, current browser/responsive/keyboard/focus/a11y evidence, safe descendant convergence, and qualifying independent approval are current. No self-approval or gate weakening.

…d (v2.60.0)

Return persisted leftover-map coordinates ξ / ζ on GET /api/reports/compare/{period} leftover pairs so grouping comparison leftover-pair buttons can match the pair-row coordinate badge on live responses (ADR 0303).
@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:35 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 3 potential issues.

Devin Review

Comment on lines +1128 to +1132
"leftover_map_person_axis_1": (
None
if pair["leftover_map_person_axis_1"] is None
else float(pair["leftover_map_person_axis_1"])
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Non-finite coordinates break comparisons

When a stored coordinate is NaN or infinite, float forwards it into JSON. The entire comparison request fails instead of omitting coordinates.

Prompt for agents
Make fetch_period_comparison serialize each of the four leftover-map coordinate fields only when its database numeric is finite; return null for missing or non-finite values. The report_leftover_pair coordinate columns are unconstrained PostgreSQL numeric values, which can contain NaN or infinities, while FastAPI's JSON serializer rejects their float forms. Apply the same handling consistently to person axes 1/2 and item axes 1/2, and add coverage for non-finite persisted coordinates without deriving replacement coordinates.
Devin Review

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

Comment on lines +1128 to +1147
"leftover_map_person_axis_1": (
None
if pair["leftover_map_person_axis_1"] is None
else float(pair["leftover_map_person_axis_1"])
),
"leftover_map_person_axis_2": (
None
if pair["leftover_map_person_axis_2"] is None
else float(pair["leftover_map_person_axis_2"])
),
"leftover_map_item_axis_1": (
None
if pair["leftover_map_item_axis_1"] is None
else float(pair["leftover_map_item_axis_1"])
),
"leftover_map_item_axis_2": (
None
if pair["leftover_map_item_axis_2"] is None
else float(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: Redaction preserves new coordinates

Authorization filtering still removes hidden pairs before stripping internal metadata. The four coordinate fields remain in each surviving public pair.

Devin Review

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

Comment on lines +1128 to +1147
"leftover_map_person_axis_1": (
None
if pair["leftover_map_person_axis_1"] is None
else float(pair["leftover_map_person_axis_1"])
),
"leftover_map_person_axis_2": (
None
if pair["leftover_map_person_axis_2"] is None
else float(pair["leftover_map_person_axis_2"])
),
"leftover_map_item_axis_1": (
None
if pair["leftover_map_item_axis_1"] is None
else float(pair["leftover_map_item_axis_1"])
),
"leftover_map_item_axis_2": (
None
if pair["leftover_map_item_axis_2"] is None
else float(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: Partial coordinates fail closed

Each missing axis remains independently null. The existing formatter requires four finite values, so partial coordinates cannot produce a misleading badge.

Devin Review

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

Copy link
Copy Markdown
Contributor Author

Cycle write probe 2026-08-31T03:23+09:00: leftover-map coordinates payload #840 remains open for independent APPROVE. No self-approval. Do not squash-merge onto the unprotected leftover base.

Copy link
Copy Markdown
Contributor Author

Cycle write probe 2026-08-31T03:24+09:00: exact head cbf994462ec787d4d3e7a2749f913f62fd9c96d0 still lacks independent APPROVE. Collaborators are only the author, so this cycle cannot request a second human reviewer without self-approval. Leave #840 open. Do not squash-merge. Do not self-approve. Next buyer gap is leftover-map graphic display of already-named ξ / ζ on the grouping comparison strip (ADR 0304 / v2.61.0), stacked on this payload.

Copy link
Copy Markdown
Contributor Author

Cycle overlay 2026-08-31 03:38 KST: leftover-map graphic display of already-named ξ / ζ on the grouping comparison strip is stacked as feat/leftover-map-compare-graphic-v2610 (ADR 0304 / v2.61.0) onto this payload head cbf9944. Leave #840 open for independent APPROVE. Do not self-approve. Do not squash-merge.

Preserve #840 ADR 0303/product delta while inheriting current #839 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 #841 ADR 0304 graphic/product delta while inheriting current #840 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 #842 axis-share product delta while inheriting current #840 ancestry through a normal two-parent merge. ADR/version collision remains an explicit repair finding. No force-push or destructive rebase.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Current-head repair finding on b5732ba2a6de25595989db0b5fb74308b8eae75a: required Tests already fail in both frontend and full-suite lanes, and the same causal drift later reproduced on both direct children #841 and #842. The shared defects are owned here, not in either child: lineageweave.__version__ is still 2.41.0 while pyproject/frontend ship 2.60.0; the small-canvas segment-caption stack can escape the viewport; and Vietnamese explained-share copy/regression has drifted from the production caption. Repair #840 once with a realistic exact-head RED→GREEN and then reconstruct #841/#842 non-force. Do not duplicate the patch independently in sibling branches, and do not transfer predecessor checks or approval.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Correction to the earlier foundation note: #840 is the nearest shared parent for sibling #841/#842, but it is not the structural root of every inherited defect. Fresh ancestry inspection shows release-identity drift starts at #816: #815 is v2.41.0 with runtime 2.41.0, while #816 is v2.42.0 but still reports runtime 2.41.0. The active #840 isolated lane remains useful to verify the shared small-canvas/Vietnamese patch on this exact tree, but its clean result must not be promoted ahead of current-parent convergence beginning at #813 and per-release identity repair from #816 onward. After that ancestry reaches #840, adapt/replay the verified shared source delta on the reconstructed exact head, then rebuild #841/#842.

@seonghobae seonghobae changed the title feat(reports): leftover-map coordinates on grouping comparison payload (v2.60.0) feat(reports): preserve grouping-comparison coordinate-payload 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