feat(reports): preserve grouping-comparison axis-share payload delta for serialized successor - #842
Conversation
…v2.61.0)
Return persisted leftover_map_axes on GET /api/reports/compare/{period} and
caption each grouping row through leftoverMapCompareAxisShare (ADR 0304).
Share 0 is shown, including rank-0 unused axes. Missing or non-finite share
omits that leftover-map comparison axis share badge. Do not invent leftover-map
axis share from leftover-map singular value. Do not add leftover-map graphic
or singular values to the strip. No new columns.
|
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 |
seonghobae
left a comment
There was a problem hiding this comment.
Fresh successor verification: this later ADR 0304 implementation reproduces the same authorization defect found on #828. Its branch still uses compare_period_groupings() to filter members and leftover_pairs after fetch_period_comparison() has loaded full-group persisted aggregates, then spreads **row and rewrites only post_count. Therefore leftover_map_axes can disclose full-population axis share/singular-value aggregates to an account that sees only one member of a mixed-visibility grouping. This means #842 is not yet a verified safe successor for #828 despite the non-colliding ADR number. Add the same mixed-visibility API RED and fail closed for leftover_map_axes unless the caller sees the entire persisted grouping population; do not recompute psychometric truth from visible pair geometry. Preserve fully-visible behavior, ADR 0304, and existing coordinate/axis-share contracts.
|
@codex address that feedback Adopt the non-force current head |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
seonghobae
left a comment
There was a problem hiding this comment.
Current-head governance finding: #842 and sibling #841 are both based on exact #840 b5732ba2a6de25595989db0b5fb74308b8eae75a, but they assign two different decisions to ADR 0304 and both claim v2.61.0. #841 uses ADR 0304 for the grouping-comparison graphic; this branch creates docs/adr/0304-leftover-map-compare-axis-share.md for axis-share disclosure. The axis-share ADR is also marked Accepted in source even though #842 is Draft and has no qualifying independent current-head approval, while the PR body says it remains Proposed. This is a repair finding, not a reason to close either valid product delta. Keep #842 Draft; move the axis-share decision to a verified-unclaimed ADR identity (0368 is currently unclaimed in repository/default-branch and open-PR search) and return it to Proposed, updating all branch-local references without changing the product/authorization semantics. Do not renumber this candidate to ADR 0305: direct descendant #843 already owns ADR 0305. Keep the parallel v2.61.0 release collision explicit until one candidate is normally integrated or a verified successor fully inherits the other; do not silently overwrite release identity. Existing mixed-visibility RED remains authoritative and must still fail closed rather than recomputing the aggregate from visible geometry.
seonghobae
left a comment
There was a problem hiding this comment.
Exact product-head Tests 34007417526 is now terminal RED with real inherited source defects, not a failure of the axis-share authorization repair. Frontend has the same three failures already reproduced on sibling #841: the 20px small-canvas segment caption escapes above the viewport (labelY=-20 instead of >=12), Vietnamese explained-share copy regressed to phần dư giải thích..., and the Vietnamese caption regression duplicates the pre-coverage English caption instead of binding to production LEFTOVER_MAP_PLOT_CAPTION. The full PostgreSQL/Python suite reached 1768 passed / 147 skipped / 1 failed; the sole failure is runtime provenance (lineageweave.__version__ == 2.41.0 versus pyproject/frontend 2.61.0). Preserve the mixed-visibility leftover_map_axes fail-close and ADR 0368 Proposed exactly; repair only the inherited plot-bounds/copy/version defects, then rerun against an exact clean tree. #843 reconstruction on f013dfb... becomes stale if this product head moves and must be rebuilt from the repaired parent.
seonghobae
left a comment
There was a problem hiding this comment.
Foundation correction: the inherited plot-bounds/Vietnamese/runtime drift on this exact head is owned by direct parent #840 (b5732ba2a6de25595989db0b5fb74308b8eae75a), not by this sibling branch. Keep the already-promoted mixed-visibility fail-close and ADR 0368 Proposed delta intact. After #840 reaches a verified clean repair, reconstruct #842 non-force from that parent and synchronize runtime identity to 2.61.0; the current child-local r2 lane must not be promoted as an independent source fork even if it later turns GREEN.
Summary
Preserve the distinct delta that returns persisted leftover-map axis share on
GET /api/reports/compare/{period}grouping rows and composes the grouping-comparison strip throughleftoverMapCompareAxisShare. No new schema, invented psychometric score, or theta authority.Current stack authority
GitHub base metadata points to #840 (
feat/leftover-map-compare-coordinates-payload-v2600@b5732ba2a6de25595989db0b5fb74308b8eae75a). Exact #8270f9e9c8db37948041f39b4e68e4bbd808fa83752is the current reconstructed product authority and #828 is now the earliest active descendant reconstruction; the previous #842 description naming #814 as earliest stale is superseded.This branch's mixed-visibility repair remains a valid invariant: persisted
leftover_map_axesis exposed only when caller visibility covers the complete persisted grouping population; otherwise the aggregate fails closed to[]and is never recomputed from a visible subset. ADR0368 remains Proposed. Historical v2.61.0 and current headf013dfb53b255e8e0be1dfb783cb41dca7eeb83eare evidence only. Reconstruct only after exact promoted #840 and allocate a coherent distinct release identity. Sibling #841 remains a separate graphic-composition decision; do not collapse the two deltas.Descendants that contain this provisional head must be reconstructed after #842 moves; predecessor checks and approvals do not transfer.
Product invariants
Consume persisted finite
leftover_shareonly; never derive it from singular value, pair/marker count, distance, rank, coverage, geometry, or unused-axis count. Missing/non-finite share omits only the badge; persisted zero and finite negative values remain explicit. Whole-population authorization is mandatory and subset recomputation is forbidden.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/security GREEN, production build/Storybook, current responsive/pointer/touch/keyboard/focus/a11y browser evidence, translation-ledger convergence, applicable authenticated PostgreSQL/k6 acceptance, safe descendant convergence, and qualifying independent approval are current. No self-approval, parent bypass, force-push, destructive rebase, or gate weakening.