Skip to content

feat(reports): grouping comparison item coverage (v2.48.0) - #822

Draft
seonghobae wants to merge 3 commits into
feat/leftover-map-compare-coverage-v2460from
feat/leftover-map-compare-item-coverage-v2470
Draft

feat(reports): grouping comparison item coverage (v2.48.0)#822
seonghobae wants to merge 3 commits into
feat/leftover-map-compare-coverage-v2460from
feat/leftover-map-compare-item-coverage-v2470

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Caption grouping-comparison item complete-case coverage through the persisted LineageWeave coverage aggregate (ADR0291 / v2.48.0). The UI does not invent item coverage from pair counts, plotted markers, rank, or another coverage field.

Current product ancestry

Exact parent is #821 93eaa40f34098678fd53da4dbdccb1782dfd41a7. Reconstruction r9 34066701457 / job 101576606683 completed terminal GREEN after restoring the repository-authoritative dependency boundary: Rust 1.97.1, frozen uv dev+backend, Corepack, and frozen pnpm. It passed the realistic ADR0291 RED→minimal fix path, ADR0290/0291 governance, full-visible-group authorization coverage, synchronized release identity, frontend item-coverage composition, oxlint, production build, Storybook, final authority assertions, and workflow-free staging.

Clean staging commit 121fbdc02b9cde367a1e76064d333e6cbbea9742, tree 7fa2127291527318f7cdc233cfd102794a7f17e8, was independently materialized; the temporary r9 workflow is absent from that staging tree. That same tree was recreated as product commit 724872a34469c84064d5a72b07c6acf16de8a760, with first parent historical #822 c5f9653a889841da7b524e8763d1aae8f6eb2c46 and second parent exact #821 93eaa40f34098678fd53da4dbdccb1782dfd41a7, then the product branch advanced with force=false.

ADR0291 remains Proposed while Draft; package/frontend/runtime identity is 2.48.0. Reconstruction GREEN proves the reconstructed tree only and is not transferred as hosted exact-product-head required GREEN or independent approval.

Authorization invariant inherited from #821

Persisted item coverage is shown only when caller-visible persisted grouping membership equals the complete persisted grouping membership. Partial visibility omits the aggregate, avoiding hidden denominator disclosure; psychometric coverage is never recomputed from the visible subset.

Harness RCA retained for traceability

Earlier r1–r8 failures were validation-harness/environment defects rather than grounds to discard the valid product delta. In particular r7/r8 proved Python backend installation succeeded and isolated failure to an incorrect npm frontend-install command. Exact repository CI uses Corepack and pnpm install --frozen-lockfile; r9 adopted that contract instead of weakening tests or changing product behavior. Review 5126951712 records the configuration finding.

Descendant boundary

#823 is explicitly serialized after this branch for ADR0292/v2.49.0, #824 after #823 for ADR0293/v2.50.0, and #825 after #824 for ADR0294/v2.51.0. Their historical heads remain evidence until each exact-parent reconstruction is GREEN; do not bypass or close them merely to resolve historical identity collisions.

UI / locale evidence boundary

Targeted reconstruction, build, and Storybook evidence are GREEN, but material-UI delivery is not complete. Eight-locale DB-backed translation authority remains #929/#932, and fresh exact-product-head hosted checks plus rendered responsive/browser/keyboard/focus/a11y acceptance are still required.

Keep Draft. No force-push, destructive rebase, self-approval, gate weakening, predecessor-evidence transfer, or invented measurement values.

…omparison strip (v2.47.0)

Caption persisted leftover-map item complete-case coverage on GET /api/reports/compare/{period} through leftoverMapItemCoverageCounts (ADR 0290). Distinct aria-label Leftover map comparison item coverage. Omit when counts are unusable. Do not invent coverage from leftover pair count. No SQL. No leftover score or theta.

Copy link
Copy Markdown
Contributor Author

Write-retry this cycle (seonghobae MCP). #822 is leftover-map v2.47 grouping comparison item complete-case coverage at 6726353 (ADR 0290), stacked on #821 @ 11a78553. Distinct aria-label Leftover map comparison item coverage. Do not squash-merge onto an unprotected leftover base. Do not self-approve. Independent APPROVE still required. Copilot/Devin COMMENT is not independent APPROVE.

Do not merge #808 without independent APPROVE. Issues #79 and #87 stay open. #96 is already closed.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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 2 potential issues.

Devin Review

Comment thread frontend/src/App.tsx Outdated
Comment on lines +3991 to +3993
const comparisonItemCoverageCounts = leftoverMapItemCoverageCounts(
row.leftover_map_coverage,
);

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: Item coverage remains persisted

The comparison payload already includes each grouping’s stored item counts. leftoverMapItemCoverageCounts validates those values without deriving them from display data.

Devin Review

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

Comment thread frontend/src/App.tsx
Comment on lines +4029 to +4033
{comparisonItemCoverageCounts !== null ? (
<p className="post-meta" role="note" aria-label={t(LEFTOVER_MAP_COMPARE_ITEM_COVERAGE_LABEL)}>
{tf(LEFTOVER_MAP_PLOT_ITEM_COVERAGE, comparisonItemCoverageCounts)}
</p>
) : 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: Malformed coverage stays isolated

leftoverMapItemCoverageCounts accepts valid 0 of M coverage and rejects malformed counts. A rejected item caption does not suppress post coverage or pairs.

Devin Review

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

Copy link
Copy Markdown
Contributor Author

Write-retry this cycle (seonghobae gh). #822 leftover-map item complete-case coverage on the grouping comparison strip (v2.47.0 / ADR 0290) stays open at 6726353a on #821. Do not squash-merge onto an unprotected leftover base. Do not self-approve. Independent APPROVE still required. Copilot/Devin COMMENT is not independent APPROVE. Do not merge #808 without independent APPROVE. Issues #79 and #87 stay open. Next buyer increment stacks here: leftover-map incomplete post coverage on the grouping comparison strip (ADR 0291 / v2.48.0). The strip still does not gain leftover-map incomplete item coverage or the leftover-map graphic.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-30T14:20Z: still waiting on independent APPROVE of exact head 6726353a (item complete-case on grouping comparison strip, ADR 0290 / v2.47.0). Copilot/Devin COMMENT is not independent APPROVE. Do not self-approve. Do not squash-merge this leftover stack onto unprotected leftover base. Next buyer gap stacked on this head is leftover-map incomplete post coverage on the grouping comparison strip (ADR 0291 / v2.48.0): distinct aria-label Leftover map comparison incomplete posts, copy Leftover map dropped {dropped} incomplete posts, omit independently of post/item complete-case, dropped 0 shown when persisted. Strip still does not gain incomplete item coverage or the leftover-map graphic. #79 and #87 stay open.

Copy link
Copy Markdown
Contributor Author

Stacked next buyer gap opened as #824 (feat/leftover-map-compare-incomplete-post-v2480 @ 8b2ed95, ADR 0291 / v2.48.0): leftover-map incomplete post coverage on the grouping comparison strip. This PR (#822 @ 6726353a) still needs independent APPROVE of exact head. Copilot/Devin COMMENT is not independent APPROVE. Do not self-approve. Do not squash-merge onto unprotected leftover base.

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

Parent-first finding: Ready is premature while base #821 and the upstream leftover-map stack remain unmerged. Preserve this item-coverage increment and return the dependent PR to Draft.

Preserve #822 ADR 0290/product delta while inheriting current #821 ancestry through a normal two-parent merge. No force-push or destructive rebase.
seonghobae added a commit that referenced this pull request Sep 5, 2026
Preserve #824 ADR 0291/product delta while inheriting current #822 ancestry through a normal two-parent merge. No force-push or destructive rebase.

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

Current-head authority review: the product/ADR delta is already non-force converged onto current #821 (5d9ed038a8525736ba47d5a80e4ff04edfbab28c, fresh compare ahead 2 / behind 0), but the PR body still named obsolete parent/head topology and predecessor verification as if current. That is a repair finding because stack authority and evidence attribution must follow the live head. I updated the body to the current parent/head and explicitly stopped predecessor test observations from transferring. Keep Draft while inherited Vietnamese terminology and current-head hosted/browser/a11y/independent-review evidence remain unresolved.

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

Fresh descendant review while #821 is being reconstructed from exact #820:

  • The item complete-case coverage delta remains valid, but this historical head's ADR 0290 / v2.47.0 identity cannot survive unchanged. #821 now owns that successor slot for grouping-comparison post complete-case coverage after #820 ADR 0289 / v2.46.0.
  • Do not close or retarget around #821. Once #821's clean product tree is promoted, reconstruct this delta from the exact new #821 head under the next unique ADR/release identity, preserving the parent's full-visible-grouping authorization boundary. The same confidentiality rule applies: persisted item-coverage denominators must not be exposed for a grouping whose persisted member population is only partially caller-visible; do not recompute psychometric item coverage from visible rows, leftover pairs, or criterion markers.
  • The body statement that the Vietnamese terminology regression is still unresolved is stale; upstream current-parent convergence already preserved that repair. Replace it with exact current-parent/browser/a11y/eight-locale evidence requirements rather than carrying a solved blocker forward.

Keep Draft; predecessor tests/reviews do not transfer. No force push, destructive rebase, self-approval, identity reuse, or parent bypass.

@seonghobae seonghobae changed the title feat(reports): leftover-map item complete-case coverage on grouping comparison strip (v2.47.0) feat(reports): preserve grouping comparison item coverage for current-parent reconstruction Sep 6, 2026
seonghobae added a commit that referenced this pull request Sep 6, 2026

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

Current-parent reconstruction review: the v2.48 product delta remains valid; the recent failures are harness/environment findings, not grounds to close or weaken the product contract. r7 proved uv sync --frozen --extra dev --extra backend succeeds, then failed immediately at npm --prefix frontend ci. Exact #821 CI authority uses Corepack + pnpm install --frozen-lockfile, not npm, and the backend path pins Rust 1.97.1 before the backend extra. r9 therefore restores those repository-authoritative dependency boundaries before evaluating ADR0291, full-visible-grouping authorization, release identity, frontend composition, lint, production build, and Storybook. Do not promote this historical head or inherit predecessor GREEN unless the workflow-free current-parent tree is fully verified.

@seonghobae seonghobae changed the title feat(reports): preserve grouping comparison item coverage for current-parent reconstruction feat(reports): grouping comparison item coverage (v2.48.0) Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant