feat(reports): preserve grouping comparison cross-share delta for serialized successor - #831
Conversation
…(v2.53.0) Caption persisted leftover-map cross share x = 2R̂U/R² on grouping comparison leftover-pair buttons through formatLeftoverMapCrossShare (ADR 0296). Distinct aria-label Leftover map comparison cross share. Missing or non-finite x omits that badge and keeps s, e, R̂, d, and coverage notes. Do not invent x from R̂, U, and R. Finite negative share is shown, never clamped. UI-only; no new columns.
|
Cycle probe 2026-08-31 ~00:50 KST. Writes work (comment/close/create-PR/push). Token still empty X-OAuth-Scopes; GitHub App Grok has contents/PR/issues write as seonghobae. This PR (#831 / v2.53.0 / ADR 0296 / Verification: Leave open for independent review. Do not squash-merge onto the leftover base. Do not self-approve. Copilot review is not independent APPROVE. Stacked onto #829 @ Next buyer increment after this: leftover-map unexplained leftover |
📝 WalkthroughWalkthrough비교용 leftover pair 응답이 persisted cross-share 값을 포함합니다. 프론트엔드는 값을 포맷하여 접근 가능한 페어 이름과 시각적 배지에 표시합니다. 백엔드와 프론트엔드 회귀 테스트는 signed, zero, null 값을 검증합니다. ChangesLeftover cross-share 흐름
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: 🟡 Moderate · up to Period-comparison requests can fail when persisted cross-share data is non-finite, so the response normalization should be fixed before merge. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
|
Queue cycle 2026-08-31T01:06KST: write probe. Leave open for independent review. Do not self-approve. |
|
Cycle 2026-08-31T01:19 KST: write-retry on #831 (v2.53.0 leftover-map cross share). Independent APPROVE required; no self-approve. Next buyer gap continues from this head if checks/reviews allow. |
|
Stacked #833 ( |
|
Cycle 2026-08-31 01:19 KST. Head Downstream: #833 (U / v2.54.0 on this head) then local residual |
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first/capacity finding: this PR is Ready while its base #829 remains an unmerged feature prerequisite and the live leftover-map foundation is still #802 with #811 Draft/conflicting. Preserve the cross-share delta and evidence, but this descendant has no current protected-main merge path. Return it to Draft so the prerequisite lane remains the only active validation lane; do not close, squash, or discard its ADR/product delta.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head stack-authority finding: live base already equals #829 exact 118500f73251eaaf717d5329b8fb6d9895196fe7, but the PR body still cites obsolete parent 4d82c28, predecessor verification, and historical retarget guidance. Preserve ADR 0296/product semantics and Draft state; make live parent/head/evidence authoritative and do not transfer predecessor tests.
seonghobae
left a comment
There was a problem hiding this comment.
Current-stack finding: #830 has been reopened because its distinct comparison-axis-singular delta was previously closed without merge or verified succession. This PR can no longer treat historical #829 as its final parent authority or ADR0296/v2.53.0 as reserved. Preserve the cross-share delta, stay Draft, and reconstruct after exact promoted #830 with a then-unclaimed ADR/release identity. Do not bypass the recovered valid delta or transfer historical verification.
|
Fresh review finding on historical |
fix(reports): normalize non-finite primary cross-share
Keycloak 26 hostname v2 derives the iss claim from the request host. With a bare KC_HOSTNAME=localhost, the in-network call the seed makes to keycloak:8080 mints iss=http://localhost:8080/... while the backend validates KEYCLOAK_ISSUER=http://localhost:18080/... -- so every seeded post-content warm-up 401s and the authenticated browser gate cannot start. Pin KC_HOSTNAME to the full public URL so one issuer serves browser and in-network callers alike, and lock the invariant with a compose contract test.
The keycloak_issuer comment still described hostname-strict=false reflecting the request Host into the iss claim. Compose now pins KC_HOSTNAME to the public URL, so the issuer no longer varies by caller.
…rator-null-startup-831 fix(e2e): make authenticated browser stack reproducible
Summary
Preserve and project the distinct persisted grouping-comparison cross-share
x = 2R̂U / R²through LineageWeave's authorized period-comparison read model and actionable UI. Missing/non-finitexomits only its evidence suffix/badge; finite zero and negative values remain explicit and unclamped. No schema/measurement authority is introduced andxis never recomputed from neighbouring fields.Current serialized authority
ac386f981317144a98a0878ca0f13c7731f7cacc.23519e93f0203ebaf9666f60e5eb7e6368dd6219.bebd77c03e5beae469f42361c20bccc80787ebb5.93e1b4fb5601b5733e9a4b0f7b4a9f63ff44354e.Historical #831 heads and predecessor receipts remain provenance only; intervening commits were read and adopted rather than overwritten.
Product repairs retained
The comparison action transports persisted
leftover_map_cross_sharethrough the real period-comparison payload, serializes it through_finite_float_or_none(), preserves finite positive/zero/negative values, maps null/NaN/+Inf/-Inf toNone, composes the same persisted value into the actionable pair name, and hides only the duplicate visual badge from the accessibility tree. The normally integrated #1008 successor also applies the same finite/null normalization boundary to primaryfetch_period_reports()and carries fake-boundary plus live-PostgreSQL strict-JSON regressions.#1010 normally merged into this branch as exact
93e1b4fb...after its own exact headb013b8b7...completed Tests34612342413GREEN. That repair keeps repository-local contextual-orchestrator optional/fail-closed, makes synthetic authenticated seeding reproducible, fixes Playwright Pixel-7 device collection and browser-failure evidence retention, repairs locale option enumeration, and restores the existing semantic WorkspaceNav/language tools below 768px instead of hiding them for a nonexistent drawer.Exact-head validation
Fresh Tests
34614827175is terminal SUCCESS on unchanged exact93e1b4fb....103314015764: SUCCESS through lint, full frontend tests, production build, Storybook, Chromium installation, authenticated product-stack startup, synthetic seed, persisted signed cross-share fixture pin, andRun authenticated grouping-comparison browser acceptance.103314016038: SUCCESS, including the completeRun full test suite against PostgreSQLstep.The temporary Ready admission has served its validation purpose, so this PR is back in Draft. The receipt proves current source/test/browser coherence only; it is not independent approval, protected-main Security/CodeQL acceptance, release evidence, or permission to skip the serialized prerequisite chain.
Live descendant convergence
#832 and #833 both target the #831 branch. Their base metadata already points to exact
93e1b4fb...; their historical product heads remain Draft recovery/reconstruction evidence and are not force-rewritten. #833 is the intended semantic successor for persisted unexplained-leftoverU; #832 remains recovery authority until #833 proves complete inheritance. #835 remains on historical #833 until #833 itself is reconstructed; no speculative descendant restack is authorized.Product invariants
Consume persisted
x; never derive it fromR̂,U,R, geometry, distance, other shares, rank, coverage, counts, or unused axes. Preserve whole-population authorization and inherited #829/#830 behavior. Canonical KO/EN/JA/ZH/VI/ES/DE/FR translation-ledger authority remains the governed owner path.Promotion gate
The exact-head repository/browser/accessibility acceptance gate for
93e1b4fb...is now GREEN, but #830 remains the serialized prerequisite and is still Draft. Do not reconstruct #833 or merge this child until the ancestor chain is actually promotable under its own current-head gates. Protected-main integration later still requires the live default-branch ruleset, qualifying independent approval, Security/CodeQL and other required receipts, release evidence, and any applicable buyer-path performance acceptance. No self-approval, bypass, synthetic status, force push, destructive rebase, ancestor skip, or stale evidence transfer.