Skip to content

feat(reports): leftover expected on pair segments (v2.36.0) - #810

Closed
seonghobae wants to merge 4 commits into
feat/leftover-map-segment-cross-share-v2320from
feat/leftover-map-segment-expected-v2360
Closed

feat(reports): leftover expected on pair segments (v2.36.0)#810
seonghobae wants to merge 4 commits into
feat/leftover-map-segment-cross-share-v2320from
feat/leftover-map-segment-expected-v2360

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Superseded by verified full carryover in #811

This PR is closed without merge only because every valid delta is preserved in open successor #811. Exact head 6e37757aae8b37b729cf16f076ffcec6c94cd445 is an immutable ancestor of #811 exact head e626a1d0770208d6f821e06542091aa2ead87f25.

#811 now directly targets #804 exact base c513002bea9e0ee3e6ccd0931c5256e52dbbd878; fresh compare is ahead by 5 / behind by 0. Fresh compare from this head to #811 is ahead by 1 / behind by 0 with this head as the merge base. The successor therefore carries this PR's expected-value implementation and every earlier unexplained/residual/observed commit, ADR/changelog/docs, i18n/layout/component code and executable tests/fixtures, plus #811's rank delta.

Current-head review 5120237656 on #811 records the consolidated ancestry. Historical checks/reviews from this PR do not transfer to #811. No force-push, squash, destructive rebase, gate weakening, or source deletion was used.

….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.
@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2135405a-3fd7-4257-8a77-11d0b81c44f6

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment on lines +424 to +434
const expectedY = 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),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Expected captions can be clipped

For low segments with several measurements, expectedY places the finite expected value outside the fixed SVG viewport. The graphic silently omits it.

Prompt for agents
The expected caption is appended to a downward-only label stack in frontend/src/leftoverMapPlotLayout.ts. A segment midpoint near the bottom of the 320px SVG can place expectedY beyond the viewport when preceding finite captions consume several 12px offsets. Adjust segment caption placement or the plot bounds so the complete stack remains inside the SVG for both upper and lower edge segments. Add a layout/component test with a low segment and all finite measurements that asserts the E caption coordinates remain within the viewport.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown
Contributor Author

Cycle note (2026-08-30T19:10 KST): retrying GitHub writes from this session. Leave this PR open for independent review. Do not self-approve. Do not squash-merge onto the unprotected leftover base. After independent review, retarget onto leftover-coordinates (#782) rather than squash-merging here. Synthetic fixtures only.

Copy link
Copy Markdown
Contributor Author

Queue 2026-08-30T19:08 KST. Head 6e37757 v2.36.0 leftover expected E on pair segments is green (Frontend lint/test/build + Full test suite). Independent APPROVE still required. Do not squash-merge onto the leftover base. Do not self-approve.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-30T19:22 KST. Writes recovered this session (#96 closed). Head 6e37757 v2.36.0 leftover expected E on pair segments stays open for independent APPROVE. Do not self-approve. Do not squash-merge onto the leftover base. Next buyer gap: leftover-map rank on pair segments (ADR 0164 already names rank on pair rows; segments still omit it). Synthetic fixtures only.

@seonghobae
seonghobae changed the base branch from feat/leftover-map-segment-observed-v2350 to feat/leftover-map-segment-cross-share-v2320 September 5, 2026 06:58
@seonghobae seonghobae closed this Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant