feat(reports): preserve leftover-axis singular badges for serialized reconstruction - #823
Conversation
…v2.47.0) Caption leftover-axis report badges with persisted leftover-map singular values σ_k when finite and non-negative (ADR 0290). Pair-list leftover-axis badges stay distinct from leftover-map graphic axis captions. Do not invent σ_k from leftover-map axis share. UI-only; no SQL; no new columns. Never invent a leftover score. Never invent a theta.
|
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 |
|
Write-retry this cycle (seonghobae gh). #823 is leftover-map v2.47 leftover-axis badge singular values at |
| export function leftoverMapAxisBadgeShare( | ||
| leftoverShare: LeftoverMapAxis["leftover_share"] | null | undefined, | ||
| ): string { | ||
| return ((leftoverShare ?? Number.NaN) * 100).toFixed(0); | ||
| } |
There was a problem hiding this comment.
| export function leftoverMapAxisBadgeSingular( | ||
| axis: Pick<LeftoverMapAxis, "axis_index"> & { | ||
| leftover_singular_value?: LeftoverMapAxis["leftover_singular_value"] | null; | ||
| }, | ||
| ): string | null { | ||
| return formatLeftoverMapPlotAxisSingular( | ||
| leftoverSingularForAxis([axis], axis.axis_index), | ||
| ); | ||
| } |
|
Write-retry this cycle (seonghobae gh). #823 leftover-axis badge σ_k (v2.47.0 / ADR 0290) stays open at |
|
Cycle 2026-08-30T14:20Z: still waiting on independent APPROVE of exact head |
|
Cycle 2026-08-30T14:24Z: write probe (comment). Independent APPROVE still required. Do not self-approve. Stack continues leftover-map singular values after v2.47.0. |
seonghobae
left a comment
There was a problem hiding this comment.
Fresh ancestry/identity review after #820 promotion:
- This head still targets the #820 branch at stale base SHA
b7222713...; current authoritative #820 is503d043e165e0ae4c6b5c8cca4366c114c74ef2d. Treat the old merge-base and predecessor test counts as historical evidence only. - The product delta (persisted
σ_kon leftover-axis report badges, fail-closed independently of share) is valid and must be preserved, but ADR 0290 / v2.47.0 is no longer a valid identity here. #821 is now reconstructing grouping-comparison post coverage as the explicit #820 child under ADR 0290 / v2.47.0. Reusing that identity here would recreate the collision we just repaired at #821. - The body instruction to retarget around the stack to #782 is stale and violates the current parent/single-writer convergence policy. Do not bypass #820/#821 or close this PR. After the current chain converges, reconstruct this valid delta on the current serialized parent with a unique later ADR/release identity, preserve #820 singular-value semantics and the #821 authorization fail-close, and keep the ADR Proposed while Draft.
No predecessor GREEN/approval is transferred. No force push/destructive rebase or squash-around-parent.
seonghobae
left a comment
There was a problem hiding this comment.
Fresh review against current #822 authority confirms the existing repair finding is now executable: this head still carries the historical ADR 0290 / v2.47.0 identity and diverges from exact parent #822724872a, while the valid leftover-axis singular-value UI delta remains distinct. I started an exact-parent reconstruction from #822 that preserves the current ADR 0290/0291 authorization contracts, reproduces a governance RED before creating ADR 0292 / v2.49.0 as Proposed, reuses the persisted singular-value formatter, and requires focused frontend, lint, production-build, Storybook, package-version, and ADR GREEN before any non-force product promotion. No predecessor GREEN or historical identity will be reused.
Summary
Reconstruct the valid leftover-axis singular-value report-badge delta on the exact current #822 parent without preserving the historical ADR/release collision or stale ancestry.
Current ancestry / identity authority
#823 now targets and contains exact
#822@724872a34469c84064d5a72b07c6acf16de8a760. Product head isd9db46353c4a5ca5298b1376d27570b7091b59b3; it preserves historical #823 headeb172c40d8ecd08f3e1c220cbf3117b488cddb30as first parent and exact #822 as second parent, with the independently GREEN clean tree from reconstruction run34068005539. Promotion was non-force.Current identity order is #820 ADR0289/v2.46.0 → #821 ADR0290/v2.47.0 → #822 ADR0291/v2.48.0 → #823 ADR0292/v2.49.0. ADR0292 remains Proposed while this PR is Draft. The historical ADR0290/v2.47.0 identity is evidence only and is not promoted.
The product delta remains deliberately narrow: leftover-axis report badges name persisted finite, non-negative
σ_k, including rank-0σ 0.00, independently of axis share; missing/non-finite/negative singular values omit only the singular-value caption; never inferσ_kfrom share. No SQL/schema/new measurement authority.RED → repair → GREEN evidence
Fresh review
5127059551confirmed the stale-parent/identity collision. Reconstruction r1 proved that the historical UI delta reapplies cleanly and reproduced the ADR0292 governance RED, then failed only because its ARCHITECTURE documentation insertion marker did not match current #822 wording; no product GREEN was claimed from r1.r2
34068005539restarted from exact #822, reproduced the same governance RED, applied the minimal ADR0292/v2.49 identity/documentation repair, then passed ADR0290/0291/0292 governance and package-version tests, focused singular-badge/App/i18n tests, oxlint, production build, Storybook build, reconstructed-authority verification, and workflow-free clean staging creation. Clean staging commit82bad547a89e765386f431fc6d7ac2d97369f2b9has tree07beee3a173ea915c8dc0004366056802ae931e7and exact #822 as its sole parent; the product merge commit uses that exact tree.Descendant boundary
#824 is now refreshed to this exact product head as its base and remains the next serialized valid delta, planned as ADR0293/v2.50.0. #825 remains after #824. Their historical ADR/release numbers remain evidence only; do not close valid deltas, bypass parents, force-push, destructively rebase, self-approve, or reuse predecessor GREEN.
UI / i18n delivery boundary
This is material report UI. The canonical eight-locale/versioned translation-ledger and material-screen consumer path remain owned by #922/#929/#932; this PR does not create a competing translation ledger. Current reconstruction proves source contracts, lint, production build, and Storybook build, but fresh exact-product-head rendered browser/responsive/keyboard/focus/a11y evidence and eight-locale ledger consumption are still required before UI delivery can be called complete.
Evidence boundary
Keep Draft. Isolated reconstruction GREEN is not hosted exact-product-head required-check GREEN, authenticated PostgreSQL/k6 acceptance, browser/a11y acceptance, immutable release evidence, or a qualifying independent current-head APPROVE.
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.