feat(reports): leftover-map rank on pair segments (v2.37.0) - #811
feat(reports): leftover-map rank on pair segments (v2.37.0)#811seonghobae wants to merge 24 commits into
Conversation
…ts (v2.31.0) Caption leftover-map graphic-display pair segments with persisted leftover-map unexplained leftover share s = U²/R² (ADR 0274). After make seed, closest and farthest leftover pairs sit above the member list with the Gabriel biplot of already-named coordinates, leftover-map axis share when finite, axis ticks that match ξ (x, y) ζ (x, y) on the pair row, pair segments that match d on the pair row, pair segments that match R̂ on the pair row, pair segments that match R̂²/R² on the pair row, and pair segments that match U²/R² on the pair row; click a post marker or a pair button opens that post. A missing or non-finite s omits that unexplained leftover share caption. A share greater than 1 is shown, never clamped. Do not invent s from U and R or from plotted coordinates. Never invent a leftover score or a theta. No new columns.
Caption leftover-map graphic-display pair segments with persisted leftover-map cross share x = 2 R̂ U / R² (ADR 0275). After make seed, closest and farthest leftover pairs sit above the member list with the Gabriel biplot of already-named coordinates, leftover-map axis share when finite, axis ticks that match ξ (x, y) ζ (x, y) on the pair row, pair segments that match d on the pair row, pair segments that match R̂ on the pair row, pair segments that match R̂²/R² on the pair row, pair segments that match U²/R² on the pair row, and pair segments that match 2R̂U/R² on the pair row; click a post marker or a pair button opens that post. A missing or non-finite x omits that leftover-map cross share caption. A finite negative share is shown; do not clamp to nonnegative. Do not invent x from R̂, U, and R or from plotted coordinates. Never invent a leftover score or a theta. No new columns.
….33.0) Caption leftover-map graphic-display pair segments with persisted leftover-map unexplained leftover U = R − R̂ (ADR 0276). After make seed, closest and farthest leftover pairs sit above the member list with the Gabriel biplot of already-named coordinates, leftover-map axis share when finite, axis ticks that match ξ (x, y) ζ (x, y) on the pair row, pair segments that match d on the pair row, pair segments that match R̂ on the pair row, pair segments that match R̂²/R² on the pair row, pair segments that match U²/R² on the pair row, pair segments that match 2R̂U/R² on the pair row, and pair segments that match U on the pair row; click a post marker or a pair button opens that post. A missing or non-finite U omits that unexplained leftover caption. A finite negative leftover is shown; do not clamp to nonnegative. Do not invent U from R and R̂ or from plotted coordinates. Never invent a leftover score or a theta. No new columns.
Caption leftover-map graphic-display pair segments with persisted leftover residual R so U + R̂ = R is graphic-auditable. UI-only; no new columns. Do not invent R from Y and E, from U and R̂, or from plotted coordinates.
Caption leftover-map graphic-display pair segments with persisted leftover observed Y so Y − E = R is graphic-auditable. UI-only; no new columns. Do not invent Y from R and E or from plotted coordinates.
Caption leftover-map graphic-display pair segments with persisted leftover expected E[Y|θ, item] (ADR 0279). After make seed, closest and farthest leftover pairs sit above the member list with pair segments that match E on the pair row; click a post marker or a pair button opens that post. A missing or non-finite E omits that leftover expected caption. A finite negative expected is shown; do not clamp to nonnegative. Do not invent E from Y and R or from plotted coordinates. Never invent a leftover score or a theta. UI-only; no new columns.
Caption leftover-map graphic-display pair segments with persisted leftover-map rank (ADR 0280). After make seed, closest and farthest leftover pairs sit above the member list with pair segments that match rank on the pair row; click a post marker or a pair button opens that post. A missing, negative, or non-integer rank omits that leftover-map rank caption. Rank 0 is shown when that persisted rank is a non-negative integer; do not hide a rank-0 collapse. Do not invent rank from plotted coordinates, leftover-map distance, or the count of unused axes. Never invent a leftover score or a theta. UI-only; 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 |
|
Queue 2026-08-30T19:08 KST. Head e626a1d v2.37.0 leftover-map rank on pair segments (ADR 0280) stacked onto #810 @ 6e37757. Frontend suite 617 passed; oxlint 0. UI-only; no new columns. Independent APPROVE still required. Do not squash-merge onto the leftover base. Do not self-approve. Only collaborator is seonghobae; no independent reviewer can be requested from this token. |
| const residualLabel = formatLeftoverMapResidual(pair.leftover_residual); | ||
| const observedLabel = formatLeftoverMapObserved(pair.observed_response); | ||
| const expectedLabel = formatLeftoverMapExpected(pair.expected_response); | ||
| const rankLabel = formatLeftoverMapRank(pair.leftover_map_rank); |
| const rankY = leftoverMapStackedCaptionY( | ||
| labelPosition.labelY, | ||
| (distanceLabel !== null ? 1 : 0) + | ||
| (reconstructionLabel !== null ? 1 : 0) + | ||
| (explainedShareLabel !== null ? 1 : 0) + | ||
| (unexplainedShareLabel !== null ? 1 : 0) + | ||
| (crossShareLabel !== null ? 1 : 0) + | ||
| (unexplainedLeftoverLabel !== null ? 1 : 0) + | ||
| (residualLabel !== null ? 1 : 0) + | ||
| (observedLabel !== null ? 1 : 0) + | ||
| (expectedLabel !== null ? 1 : 0), | ||
| ); |
|
Cycle note (2026-08-30T19:21 KST): independent APPROVE still required on exact head |
|
v2.38.0 leftover-map complete-case coverage on the graphic display (ADR 0281) is stacked locally on this head ( Leave this PR open. Independent APPROVE required on the leftover stack. Do not self-approve. Do not squash-merge onto the leftover base. After independent review, retarget onto leftover-coordinates (#782) rather than squash-merging here. |
|
Stacked successor is #812 ( Leave #811 and #812 open. Independent APPROVE required on the leftover stack. Do not self-approve. Do not squash-merge onto the leftover base. After independent review, retarget onto leftover-coordinates (#782) rather than squash-merging here. |
seonghobae
left a comment
There was a problem hiding this comment.
Stack-convergence review: fresh Git comparisons verify this exact head contains the complete former #805/#806/#809/#810 chain without rewrite. The current base is #804 exact head c513002bea9e0ee3e6ccd0931c5256e52dbbd878; #811 is exactly 5 commits ahead / 0 behind. Individual predecessor heads are immutable ancestors: #806 33f6c3dd… is 3 behind this head, #809 b334b00e… is 2 behind, #810 6e37757a… is 1 behind, each with that predecessor as the merge base. This validates predecessor closure only as full successor carryover. It does not validate product GREEN: base retargeting requires fresh exact-head checks, independent review, browser/a11y evidence, and applicable PostgreSQL/k6 evidence before normal merge.
seonghobae
left a comment
There was a problem hiding this comment.
live parent #802가 85b3233e로 전진한 뒤 다시 비교했습니다. #811의 leftoverMapPlotLayout.ts에는 parent에서 이미 수리된 세 가지 foundation invariant가 아직 없습니다: (1) rounded label이 같아도 distinct persisted tick을 보존해야 하는 numeric dedup, (2) segment caption의 perpendicular offset + top/bottom clamp, (3) 짧은 canvas에서 stack spacing을 가용 높이에 맞춰 줄이는 bound. #811은 최대 10개 persisted caption을 추가하므로 세 번째 문제는 parent보다 더 크게 증폭됩니다. 이 finding은 close 조건이 아니라 descendant adaptation 대상입니다. extended-stack RED를 먼저 추가한 뒤 v2.31–v2.37 label semantics를 보존한 채 parent layout invariants를 적용합니다.
|
@codex address the remaining verified RED on the current exact head. At |
|
To use Codex here, create an environment for this repo. |
|
@codex Please repair the current exact head non-force without rewriting concurrent work. Verify the existing RED in |
|
To use Codex here, create an environment for this repo. |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-parent convergence reproduced five intersections against #802 32f1cda10a2a1a6cabd64a3ae6f59bd6f0b20fd6: docs/product-technical-gap-baseline.md, frontend/src/i18n.test.ts, frontend/src/i18n.ts, frontend/src/leftoverMapPlotLayout.ts, and lineageweave/__init__.py. The three frontend/runtime files are deliberate successor composition: this branch owns v2.37.0 and ADR 0274–0280 additions over #802's explained-share foundation, including the verified Vietnamese terminology repair. The baseline is different: this branch accumulated old Aug 29–30 loop overlays, while the foundation owns newer code-current shared baseline authority. Convergence must therefore retain successor code/i18n/runtime, take the current parent baseline, append only a current convergence note, assert all version surfaces remain exactly 2.37.0, and rerun Vietnamese/i18n/layout/small-canvas/plot contracts before creating a two-parent product commit. No wholesale ours/theirs policy outside these exact paths.
Promote the verified clean convergence tree from staging onto unchanged #811 and exact #802. Preserve #811 v2.37 successor i18n/layout/runtime authority, retain the verified Vietnamese terminology repair, and adopt the current #802 product-gap baseline. Temporary workflow history is absent. This is a non-force two-parent convergence.
Summary
Preserve the persisted leftover-map successor sequence after #802 explained-share foundation: unexplained share
U²/R², cross share2R̂U/R², unexplained leftoverU, residualR, observedY, expectedE[Y|θ,item], and rank (ADR 0274–0280 / v2.31.0–v2.37.0). Missing/non-finite values omit only their own captions; rank must be a non-negative integer and rank 0 remains explicit. Never derive a persisted quantity from another quantity or plotted coordinates. UI/read-model successor delta only; no new SQL/columns or theta/score authority.Live parent / product state
Authoritative foundation #802 remains
32f1cda10a2a1a6cabd64a3ae6f59bd6f0b20fd6. #811 is current exact4dcd789385f67c76a4e479194f566f35bb5d2d76; its newest test-only delta strengthens top/bottom plot-edge rank placement. Predecessor checks/reviews and stale merge refs are not inherited.Verified repairs and foundation convergence
Review
5120615694found the Vietnamese explained-share terminology regression; isolated run33989558644repaired the intended translation source/expectation surfaces. Review5123492791recorded the exact #802/#811 convergence policy; run33999858322completed GREEN and was promoted non-force. Concurrent4dcd7893...was inspected and adopted rather than overwritten.Descendant convergence
The rank-boundary delta is now preserved through #812
df419c5a2f75782fa883915806d8cada7a78ff78, #81344ace39111664a9b39a81e575a8dbdf06506050f, #814bd90a974b72c649c423a7b99ee47dae1d8236b0e, #815c02dffc264f70283ff7ff2d07bfe83a47bd13e10, #8164d81c881469496fedeb8d9bb98cd485209df2089, #817aa47c96e15084d0b944558b980edef34133f8040, #818de3a61988768bcfddcab1dec3dfe3c60f9a89743, and #819f37ca315e3c48fa37bbcafe96e46c5d7dab991b7, each by verified non-force current-parent convergence. #820 is now the earliest stale descendant; run34054337875reconstructs its valid singular-value v2.46 delta from exact #819 and repairs the observed current-parent conflicts plus ADR/release state. #821 remains dependent and requires a distinct later ADR/release identity.Verification boundary
4dcd789385f67c76a4e479194f566f35bb5d2d7632f1cda10a2a1a6cabd64a3ae6f59bd6f0b20fd6Jeon, 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.
Keep Draft until exact-head required checks, applicable rendered browser/a11y evidence, and qualifying independent approval are complete. Do not force-push, self-approve, bypass required gates, transfer stale evidence, or invent measurement values.