feat(reports): leftover-map coordinates on grouping comparison payload (v2.60.0) - #840
Conversation
…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).
|
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 overlay 2026-08-31 02:35 KSTWrites work (
Independent approval is required. No self-approval, admin bypass, or force push. |
| "leftover_map_person_axis_1": ( | ||
| None | ||
| if pair["leftover_map_person_axis_1"] is None | ||
| else float(pair["leftover_map_person_axis_1"]) | ||
| ), |
There was a problem hiding this comment.
🟡 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.
Was this helpful? React with 👍 or 👎 to provide feedback.
| "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"]) | ||
| ), |
| "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"]) | ||
| ), |
|
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. |
|
Cycle write probe 2026-08-31T03:24+09:00: exact head |
|
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 |
seonghobae
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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.
Summary
Return persisted leftover-map coordinates
ξ/ζonGET /api/reports/compare/{period}leftover pairs (ADR 0303 / v2.60.0). Compare payload only; no new SQL/columns, invented coordinates/score/theta, or persisted inner-product/cosine/length derivation.Local product findings
Current product head remains
b5732ba2a6de25595989db0b5fb74308b8eae75aon #839. Hosted tests on this old downstream tree exposed inherited small-canvas/Vietnamese/runtime drift. Existingautomation/840-foundation-tests-repair-20260906, run34015056955, is diagnostic evidence only and is not promotion authority.Current structural owner order
Fresh ancestry correction is now further advanced than the earlier body recorded. The reviewed small-canvas/Vietnamese/rank-boundary source truth has been carried through #812
df419c5a2f75782fa883915806d8cada7a78ff78and #81344ace39111664a9b39a81e575a8dbdf06506050fby verified non-force current-parent convergence. #814 is now the earliest structurally stale descendant; its exact-parent laneautomation/814-current-813-convergence-20260907, run34043779954, is active but not yet GREEN.Release-identity repair still begins from the historical first mismatch at v2.42 (#816) and must remain coherent for each reconstructed successor. Therefore continue #814→#839 in order, preserving each valid product/governance/release delta, before reconstructing this v2.60 coordinate payload on the then-current exact #839. The old #840 diagnostic tree must not bypass that ancestry or become a branch-local source fork.
Descendant boundary
#841 and #842 both currently depend on this provisional #840 head. After #840 is rebuilt, preserve each sibling product decision separately, repair their duplicate release identity explicitly rather than collapsing deltas, and reconstruct their descendants from exact promoted parents.
Product invariant
A missing/non-finite 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.Keep Draft. Exact-product-head required checks, authenticated PostgreSQL/k6 where applicable, current browser/a11y evidence, safe descendant convergence, and qualifying independent approval remain unclaimed.