Skip to content

feat(reports): preserve grouping comparison incomplete-post coverage for serialized reconstruction - #824

Draft
seonghobae wants to merge 3 commits into
feat/leftover-map-axis-singular-v2470from
feat/leftover-map-compare-incomplete-post-v2480
Draft

feat(reports): preserve grouping comparison incomplete-post coverage for serialized reconstruction#824
seonghobae wants to merge 3 commits into
feat/leftover-map-axis-singular-v2470from
feat/leftover-map-compare-incomplete-post-v2480

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Preserve the valid grouping-comparison leftover-map incomplete-post coverage delta while serializing it on the promoted exact #823 parent. Historical ADR/release numbering is evidence only, not current authority.

Current stack authority

#824 targets exact #823@d9db46353c4a5ca5298b1376d27570b7091b59b3. Product head is now 499d653ed6e9206249e3f3a07518ad3fc01f14bd, preserving historical #824 head 41d65a82ef0f0397714f4876093aee0acc66357a as first parent and exact #823 as second parent with the independently GREEN clean reconstruction tree. Promotion was non-force.

Current identity order is #820 ADR0289/v2.46.0 → #821 ADR0290/v2.47.0 → #822 ADR0291/v2.48.0 → #823 ADR0292/v2.49.0 → #824 ADR0293/v2.50.0. ADR0293 remains Proposed while Draft; the historical ADR0291/v2.48.0 identity is evidence only.

The product delta is narrow: grouping-comparison rows may show persisted leftover-map incomplete-post count through leftoverMapIncompletePostCount; missing, non-integer, negative, or complete-case-inconsistent dropped count omits only the comparison note, while persisted valid dropped 0 remains visible. Never derive dropped posts from scored-minus-used, leftover-pair count, plotted markers, distance, rank, post/item coverage, incomplete-item coverage, or unused-axis count. No SQL/schema/new measurement authority.

Authorization invariant

This aggregate inherits ADR0290's full-visible-grouping boundary. Persisted grouping-level coverage or incomplete-count facts are shown only when the caller can see the full persisted grouping population. If ABAC hides any grouping member, omit the aggregate rather than disclose a hidden full-population count or recalculate psychometric coverage/counts from the visible subset.

RED → repair → GREEN evidence

Fresh review 5127078809 recorded the stale-parent/identity finding. r1 34068275700 failed before RED on an App.tsx 3-way conflict with #823 singular-badge changes. r2 34068418924 removed that overlap but failed closed before RED because it used the historical multiline count marker rather than current #823's one-line marker. Neither lane contributes product evidence.

r3 34068514467 restarted from exact #823 and completed terminal GREEN: non-overlapping historical regressions/locales reapplied, App source synthesized against exact current markers, realistic missing-ADR0293 governance RED reproduced, minimal ADR0293/v2.50 repair applied, ADR0290/0291/0292/0293 governance plus package-version GREEN, focused coverage/App/i18n GREEN, oxlint GREEN, production build GREEN, Storybook GREEN, authority verification GREEN, and workflow-free clean staging creation. Clean staging commit 8fd7ec2b38fa710bf0d9caa43c2288a62dc08456 has tree 12ed25168e66e65b8090a9edf3ff42a62b302c56 and exact #823 as its sole parent. The product merge commit uses that exact tree.

Descendant boundary

#825 remains the explicit child and must now refresh to exact #824@499d653ed6e9206249e3f3a07518ad3fc01f14bd, then reconstruct its valid incomplete-item comparison delta as ADR0294/v2.51.0. Do not close valid deltas, keep collided historical identities, bypass parents, force-push, destructively rebase, self-approve, weaken gates, or reuse predecessor evidence.

UI / i18n delivery boundary

The canonical eight-locale/versioned translation-ledger and material-screen consumer path remain owned by #922/#929/#932. This PR does not create a competing ledger or treat English fallback as translated coverage. Source contracts/lint/production build/Storybook are GREEN, but fresh exact-product-head rendered responsive, keyboard/focus/a11y and eight-locale consumer evidence remain required.

Evidence boundary

Keep Draft. Isolated reconstruction GREEN is not hosted exact-product-head required-check GREEN, authenticated PostgreSQL/k6 acceptance, browser/a11y acceptance, immutable release evidence, or a qualifying independent current-head APPROVE.

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.48.0)

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

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-30T14:26Z: stacked leftover-map incomplete post coverage on the grouping comparison strip (ADR 0291 / v2.48.0) @ exact head 8b2ed95. Distinct aria-label Leftover map comparison incomplete posts. Copy Leftover map dropped {dropped} incomplete posts. Dropped 0 shown when persisted (Demo Report High used 5/scored 3 omits complete-case but still names dropped 0; A-100 names dropped 1). 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. Next buyer gap on this stack after independent APPROVE is leftover-map incomplete item coverage on the grouping comparison 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 found 2 potential issues.

Devin Review

Comment thread frontend/src/App.tsx Outdated
Comment on lines +3995 to +3997
const comparisonIncompletePostCount = leftoverMapIncompletePostCount(
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.

🔍 Coverage scope differs from visible posts

comparisonIncompletePostCount uses report-wide coverage after the endpoint filters visible posts. Its dropped total can describe a broader population than the displayed row.

Devin Review

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

Comment thread frontend/src/App.tsx Outdated
Comment on lines +3995 to +3997
const comparisonIncompletePostCount = leftoverMapIncompletePostCount(
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: Shared validation preserves fail-closed semantics

leftoverMapIncompletePostCount rejects invalid or contradictory persisted totals. It still displays valid totals when companion coverage cannot establish a contradiction.

Devin Review

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

Copy link
Copy Markdown
Contributor Author

Stacked next buyer gap opened as #825 (feat/leftover-map-compare-incomplete-item-v2490 @ bca6baa, ADR 0292 / v2.49.0): leftover-map incomplete item coverage on the grouping comparison strip. This PR (#824 @ 8b2ed95) 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 #822 and the upstream leftover-map chain remain unmerged. Preserve this incomplete-post coverage delta and return the dependent PR to Draft.

Preserve #824 ADR 0291/product delta while inheriting current #822 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 #825 ADR 0292/product delta while inheriting current #824 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: metadata is already safely converged onto #822 exact c5f9653a889841da7b524e8763d1aae8f6eb2c46, but the PR body still names obsolete parent 6726353a and predecessor verification as current. Preserve the product/ADR delta and Draft state, but make live parent/head/evidence authority explicit; predecessor tests do not transfer.

@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: this historical branch is structurally based on current historical #822, but #821 now owns ADR 0290 / v2.47.0 and #822 must be reconstructed afterward under the next unique successor identity. Therefore this PR's historical ADR 0291 / v2.48.0 cannot be treated as durable authority; that slot may be consumed by reconstructed #822.

Preserve the valid incomplete-post comparison delta, keep it Draft, and after #821 then #822 clean promotion reconstruct it on the exact current serialized parent under the next collision-free ADR/release identity. Inherit the full-visible-grouping confidentiality boundary for persisted coverage aggregates: when ABAC hides any persisted grouping member, do not expose a full-group dropped-post/coverage denominator or recompute a psychometric count from visible rows.

The body claim that the Vietnamese terminology repair is unresolved is also stale. Do not carry it forward as a blocker; use fresh exact-head eight-locale/translation-ledger/browser/a11y evidence instead. No close, parent bypass, force push, destructive rebase, self-approval, or predecessor GREEN transfer.

@seonghobae seonghobae changed the title feat(reports): leftover-map incomplete post coverage on grouping comparison strip (v2.48.0) feat(reports): preserve grouping comparison incomplete-post coverage for serialized reconstruction Sep 6, 2026
@seonghobae
seonghobae changed the base branch from feat/leftover-map-compare-item-coverage-v2470 to feat/leftover-map-axis-singular-v2470 September 6, 2026 23:17

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

Exact parent #823 has now moved to d9db463 with ADR0292/v2.49.0. This head remains a valid but stale historical incomplete-post comparison delta with collided ADR0291/v2.48.0 identity. I am reconstructing only the incomplete-post comparison behavior from exact #823, preserving inherited ADR0290/0291 authorization fail-close and ADR0292 singular-badge semantics, reproducing the identity/governance RED first, then assigning ADR0293/v2.50.0 as Proposed. No historical GREEN or parent bypass will be reused.

seonghobae added a commit that referenced this pull request Sep 6, 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