Skip to content

feat(reports): preserve grouping comparison incomplete-item coverage for serialized reconstruction - #825

Draft
seonghobae wants to merge 3 commits into
feat/leftover-map-compare-incomplete-post-v2480from
feat/leftover-map-compare-incomplete-item-v2490
Draft

feat(reports): preserve grouping comparison incomplete-item coverage for serialized reconstruction#825
seonghobae wants to merge 3 commits into
feat/leftover-map-compare-incomplete-post-v2480from
feat/leftover-map-compare-incomplete-item-v2490

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Grouping-comparison leftover-map incomplete-item coverage is now reconstructed on exact current #824 without replaying the collided historical tree.

Current stack authority

The product head is now b73b10e3079e77f3e62235b2b709dc8a3f450292, a non-force fast-forward from historical #825 342f78b3ce37724caf66f43b2b9010dbeb4a1e26. Its first parent preserves that historical product head, its second parent is exact current #824@499d653ed6e9206249e3f3a07518ad3fc01f14bd, and its tree is the independently verified workflow-free clean tree 6474499b7f1141b4d87ea311fa65bb61cba34299. The serialized product identity is therefore #821 ADR0290/v2.47.0 → #822 ADR0291/v2.48.0 → #823 ADR0292/v2.49.0 → #824 ADR0293/v2.50.0 → #825 ADR0294/v2.51.0. ADR0294 remains Proposed while Draft.

The valid product delta is unchanged: missing, non-integer, negative, or item-complete-case-inconsistent dropped-item counts omit only the comparison note; persisted dropped 0 remains visible. The client never derives dropped criteria from scored-minus-used, leftover-pair count, plotted criterion markers, distance, rank, post/item coverage, incomplete-post coverage, or unused-axis count.

Authorization invariant

Exact #824 already enforces the confidentiality boundary in the compare API: mixed-visibility groupings may remain visible with filtered post_count, but leftover_map_coverage is absent. #825 consumes only that API-gated field through leftoverMapIncompleteItemCount; it does not add a raw alternate source or visible-subset recomputation. tests/test_compare_coverage_visibility.py remains part of the reconstructed GREEN. Fully visible persisted zero stays available.

RED → causal repair → reconstructed GREEN

Historical unique commit bca6baabd917478bf4f6b688ec2755cde95e3575 could not be replayed directly on current #824; hosted r3/r4 runs verified exact parent and then exposed the real conflict. r5 34081109093, job 101616411082, provided the realistic product RED by adding only the buyer-facing comparison incomplete-item expectation to exact #824; the focused test failed because Leftover map comparison incomplete items did not exist.

Later failed runs were harness RCA, not product regressions. The final adopted concurrent lane was automation/825-current-824-reconstruction-r13-20260907-1350; after exact-source/harness corrections it ran as 34083969145, job 101624378706, on exact harness head 2dad67ec215d1f4213ef74a44a8300140784b373. Exact-parent/bounded-harness verification, frozen frontend install, causal repair, diff integrity, focused App test, 211 i18n/helper tests, oxlint, production build, Storybook build, frozen dev+backend graph, coverage-visibility/governance/package-version tests all passed. The final step removed both temporary harness files and emitted bffdde720cba87a88f1c2291fa76f69a614c35ea, tree 6474499b7f1141b4d87ea311fa65bb61cba34299.

The clean staging tree was independently re-read after the run: both .github/workflows/automation-825-current-824-reconstruction-r13.yml and .github/automation/825-r13.py are absent. A new product merge commit b73b10e3079e77f3e62235b2b709dc8a3f450292 was then created from that exact tree with historical #825 first parent and exact #824 second parent, and feat/leftover-map-compare-incomplete-item-v2490 advanced with force=false.

UI / i18n delivery boundary

The reconstructed source/build evidence is GREEN, but material-UI completion is still pending. The product still needs convergence with #922/#929/#932's canonical ko/en/ja/zh/vi/es/de/fr versioned translation-ledger path and fresh exact-product-head normal/loading/empty/error/permission/responsive, keyboard/focus/a11y and rendered browser evidence. Current inline KO/ZH/JA/VI strings are compatibility copy only; they are not a competing translation authority or an eight-locale completion claim.

Evidence boundary

Keep Draft. Reconstructed source GREEN and clean product promotion are complete, but hosted exact-product-head gates, authenticated PostgreSQL/k6 acceptance where applicable, rendered browser/a11y acceptance, immutable release evidence, and qualifying independent approval remain non-transferable. #826 must now converge on this exact parent; predecessor GREEN does not transfer. No self-approval, force push, destructive rebase, gate weakening, or parent bypass.

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.

…arison strip (v2.49.0)

Caption persisted leftover-map incomplete item coverage on GET /api/reports/compare/{period} through leftoverMapIncompleteItemCount (ADR 0292). Distinct aria-label Leftover map comparison incomplete items. Omit when dropped counts are unusable. Do not invent dropped criteria from scored minus used. No SQL. No leftover score or theta.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-30T14:30Z: stacked leftover-map incomplete item coverage on the grouping comparison strip (ADR 0292 / v2.49.0) @ exact head bca6baa. Distinct aria-label Leftover map comparison incomplete items. Copy Leftover map dropped {dropped} incomplete criteria. Dropped 0 shown when persisted. UI-only; no SQL. Waiting on independent APPROVE of exact head. Copilot/Devin COMMENT is not independent APPROVE. Do not self-approve. Do not squash-merge this leftover stack onto unprotected leftover base. Coverage-strip census is now complete (post/item complete-case + incomplete post/item). Next buyer gap on this stack after independent APPROVE is leftover-map singular values on the grouping comparison strip (plot stack already has σ_k via #820/#823), or leftover-map graphic on the strip. #79 and #87 stay open.

@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: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-31T00:13 KST: exact head bca6baabd917478bf4f6b688ec2755cde95e3575 still has no independent APPROVE (Devin COMMENTED only). Leave this PR open. Do not squash-merge onto the unprotected leftover base. Do not self-approve. After independent review, retarget onto leftover-coordinates (feat/leftover-map-coordinates-v2240 / #782) rather than squash-merging here. Synthetic fixtures only.

Copy link
Copy Markdown
Contributor Author

Stacked leftover-map reconstruction R̂ on grouping comparison leftover-pair buttons is open as #826 (feat/leftover-map-compare-reconstruction-v2500 @ a4bf239, ADR 0293 / v2.50.0) onto this head. This PR still has no independent APPROVE (Devin COMMENTED only). Leave #825 and #826 open. Do not self-approve. Do not squash-merge.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-30T15:35Z: leftover-map axis share on the grouping comparison strip is now stacked as #828 (feat/leftover-map-compare-axis-share-v2500 @ e791376, ADR 0293 / v2.50.0) onto this exact head bca6baa. This PR still waits on independent APPROVE. Copilot/Devin COMMENT is not independent APPROVE. Do not self-approve. Do not squash-merge.

@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: this Ready increment depends on still-open #824 and the unmerged leftover-map stack. Preserve the incomplete-item coverage delta, but return the dependent PR to Draft until its prerequisite chain converges normally.

Preserve #825 ADR 0292/product delta while inheriting current #824 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 #826 ADR 0293/product delta while inheriting current #825 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 #828 grouping-comparison axis-share delta while inheriting current #825 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 stack-authority finding: live base already equals #824 exact 41d65a82ef0f0397714f4876093aee0acc66357a, while the body still cites obsolete parent 8b2ed95 and predecessor verification as current. Preserve ADR 0292/product semantics and Draft status; update authority/evidence rather than reconstructing a stack that is already 0-behind at the PR 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.

Fresh descendant-authority finding: #821's current reconstruction shifts the serialized identity sequence, so this historical ADR 0292 / v2.49.0 is not durable authority until #821#822#824 are reconstructed on current parents. Preserve the valid incomplete-item comparison delta, but reconstruct only after those parents under the next collision-free ADR/release identity; do not close or retarget around them.

Authorization inheritance is mandatory: persisted incomplete-item/coverage counts are full-group aggregates. If ABAC hides any persisted grouping member, the reconstructed comparison row must omit that aggregate rather than disclose a full-population count/denominator or recompute psychometric coverage from visible criteria/posts/pairs. Fully visible valid persisted zero remains visible.

The inherited-Vietnamese blocker text is stale; use the existing #922/#929/#932 eight-locale translation-ledger path and fresh exact-head rendered/a11y evidence instead. Keep Draft; no predecessor GREEN/approval transfer, force push, destructive rebase, self-approval, or gate weakening.

@seonghobae seonghobae changed the title feat(reports): leftover-map incomplete item coverage on grouping comparison strip (v2.49.0) feat(reports): preserve grouping comparison incomplete-item coverage for serialized reconstruction Sep 6, 2026
seonghobae added a commit that referenced this pull request Sep 7, 2026
seonghobae added a commit that referenced this pull request Sep 7, 2026
seonghobae added a commit that referenced this pull request Sep 7, 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