Skip to content

feat(reports): leftover-map unexplained leftover on pair segments (v2.33.0) - #805

Closed
seonghobae wants to merge 1 commit into
feat/leftover-map-segment-cross-share-v2320from
feat/leftover-map-segment-unexplained-leftover-v2330
Closed

feat(reports): leftover-map unexplained leftover on pair segments (v2.33.0)#805
seonghobae wants to merge 1 commit into
feat/leftover-map-segment-cross-share-v2320from
feat/leftover-map-segment-unexplained-leftover-v2330

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Superseded by verified full carryover in #806

This PR is closed without merge only under the verified-successor exception. Its exact head e3fdfd741a5b4a063843120d01243febb3d304f8 is now an immutable ancestor of open successor #806 exact head 33f6c3dda7f80b1bcf7b244d5e6d65068d582ba7.

#806 was retargeted directly to #804 exact base c513002bea9e0ee3e6ccd0931c5256e52dbbd878 without rewriting either feature branch. Fresh compare proves #806 is exactly two commits ahead / zero behind that base, and fresh compare from this PR head to #806 head is exactly one commit ahead / zero behind with e3fdfd741… as the merge base. Therefore #806's current diff contains this PR's complete unexplained-leftover implementation, ADR 0276, changelog/docs, i18n/layout/component code and tests/fixtures, plus the successor residual delta.

Review 5120233182 records the carryover evidence. Historical checks/reviews from #805 do not transfer to #806; #806 must regenerate exact-head evidence and independent review before any normal merge. 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.
@coderabbitai

coderabbitai Bot commented Aug 29, 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: 0cda1727-adca-4aa3-b6d3-d218140cb812

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.

Copy link
Copy Markdown
Contributor Author

Leave open for independent review on exact head e3fdfd74. Do not self-approve. Do not squash-merge onto the unprotected leftover base (#804). After independent APPROVE, retarget onto leftover-coordinates (#782) rather than merging here.

@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 3 potential issues.

Devin Review

Comment on lines +369 to +375
const unexplainedLeftoverY = leftoverMapStackedCaptionY(
labelPosition.labelY,
(distanceLabel !== null ? 1 : 0) +
(reconstructionLabel !== null ? 1 : 0) +
(explainedShareLabel !== null ? 1 : 0) +
(unexplainedShareLabel !== null ? 1 : 0) +
(crossShareLabel !== 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.

🟡 Lower leftover captions disappear

When a segment lies near the plot's lower edge, unexplainedLeftoverY always stacks the new caption downward. The finite U caption falls outside the SVG viewport.

Prompt for agents
The segment-caption layout in frontend/src/leftoverMapPlotLayout.ts always stacks captions toward increasing Y. With all six persisted labels present, the new unexplained-leftover caption sits 60 pixels below the segment midpoint. A valid horizontal segment near the lower plot boundary can therefore place the caption beyond the 320-pixel SVG viewport, where it is clipped. Make the stack direction or starting position boundary-aware so every finite caption remains inside the plot, while preserving spacing and handling any subset of missing labels. Add layout and component tests for segments near both vertical boundaries with all captions present.
Devin Review

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

Comment on lines +339 to +341
const unexplainedLeftoverLabel = formatLeftoverMapUnexplained(
pair.leftover_map_unexplained,
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Persisted U remains authoritative

formatLeftoverMapUnexplained receives the persisted U field directly. Missing and non-finite values disappear; zero and finite negatives remain visible.

Devin Review

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

Comment on lines +220 to +232
{segment.unexplainedLeftoverLabel !== null ? (
<text
className="leftover-map-plot-segment-label leftover-map-plot-segment-unexplained"
x={segment.unexplainedLeftoverX}
y={segment.unexplainedLeftoverY}
textAnchor="middle"
aria-label={tf(LEFTOVER_MAP_PLOT_SEGMENT_UNEXPLAINED, {
label: segment.unexplainedLeftoverLabel,
})}
>
{segment.unexplainedLeftoverLabel}
</text>
) : null}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Missing U preserves prior labels

The U label has an independent null guard. Its absence leaves the segment and every earlier finite caption rendered.

Devin Review

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

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-30: write probe. Independent APPROVE still required on exact head e3fdfd7. Do not self-approve. Strix fail-closed on Vulnerabilities [1-9] remains. Next buyer gap continues locally if this comment lands.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Successor-carryover verification: #806 has been retargeted directly to #804 exact base c513002bea9e0ee3e6ccd0931c5256e52dbbd878 without changing either feature branch. Fresh compare shows #804@c513002b… → #806@33f6c3dd… is exactly two commits ahead / zero behind, and fresh compare from this PR head e3fdfd741a5b4a063843120d01243febb3d304f8 to #806 head is exactly one commit ahead / zero behind with this head as the merge base. Therefore #806 now preserves this PR's entire commit/tree (implementation, ADR 0276, changelog/docs, i18n/layout/component tests/fixtures) plus its own residual delta. No historical check/review result is being promoted; only the immutable commit ancestry is inherited. Closing #805 is valid only under the verified-successor exception, not as a no-delta discard.

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