Skip to content

fix(analytics): reconcile terminal conversion KPI on protected main - #338

Open
seonghobae wants to merge 5 commits into
mainfrom
fix/terminal-kpi-main-20260810
Open

fix(analytics): reconcile terminal conversion KPI on protected main#338
seonghobae wants to merge 5 commits into
mainfrom
fix/terminal-kpi-main-20260810

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Objective

Reconstruct PR #328's bounded terminal-outcome KPI correction directly on the current protected-main baseline after #270 integrated, without carrying stale ancestry.

Fresh exact state — 2026-08-10

  • exact source head: 65cf2956ad69614cabbb1369b010b1278b06ab3a;
  • exact protected main: 55d7ae8647208e301f282350f076eeddaba61d11;
  • clean reconstruction: five changed files, mergeable and Ready;
  • exact-head CI 31389258830: success;
  • exact-head Security Scan 31389258832: success;
  • exact-head SAST Semgrep 31389258776: success;
  • exact-head fuzz 31389258688: success;
  • no automated check, comment, status, or model output is qualifying independent approval.

All five output blobs are byte-identical to predecessor #328's exact semantic head 99e7c79142ce8e10ad0ef6880ab6d4fa8826c113, and their protected-main inputs were byte-identical to #328's historical base before applying the bounded delta. This proves #270 introduced no path-local conflict while eliminating stale ancestry.

Contract preserved

conversionSuccessRate is computed over terminal SUCCEEDED + FAILED outcomes only, returning 0.0 while no job is terminal. In-flight SUBMITTED and PROCESSING jobs no longer count as failures. API, persisted/exported evidence Javadocs, focused response tests, and controller integration expectations use the same denominator.

Exact blob identities shared with #328:

  • KpiSnapshotRecord.java: 5a91a33effc2bd81f756d8a54cac71650b074552;
  • KpiSnapshotExportResponse.java: b5c40a2951300c1ae995aba5cddda2a07829f93c;
  • KpiSnapshotResponse.java: fe0e4f5ebf49a955f7be9313b9b3b48036af98fd;
  • KpiSnapshotResponseTest.java: eba5afc202051c8db853a65fc4235fd91a4abb28;
  • AnalyticsControllerTest.java: da895f917221072325d6a11933b0428766ba946e.

Scope / non-completion boundary

This is issue #327's bounded semantics slice. It does not complete tenant-scoped repository-query authority (#326), persisted numeric-domain validation (#329/#339), authentication, persistence redesign, or canonical documentation. PR #305 remains the cross-cutting documentation owner.

Merge gate

Keep this exact head unchanged. Auto-merge may complete only after live repository protection still sees all required checks passing, zero valid unresolved findings, and the counted approving review from a qualifying independent reviewer with write access. Automated evidence is not approval.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 34 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ffc0bb8c-ebe3-402a-bf47-9eee98e009fa

📥 Commits

Reviewing files that changed from the base of the PR and between 55d7ae8 and 65cf295.

📒 Files selected for processing (5)
  • src/main/java/com/clearfolio/viewer/analytics/KpiSnapshotRecord.java
  • src/main/java/com/clearfolio/viewer/api/KpiSnapshotExportResponse.java
  • src/main/java/com/clearfolio/viewer/api/KpiSnapshotResponse.java
  • src/test/java/com/clearfolio/viewer/api/KpiSnapshotResponseTest.java
  • src/test/java/com/clearfolio/viewer/controller/AnalyticsControllerTest.java

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.

@seonghobae
seonghobae marked this pull request as ready for review August 10, 2026 12:45
@seonghobae
seonghobae enabled auto-merge (squash) August 10, 2026 12:48

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review Please independently review exact current head 65cf2956ad69614cabbb1369b010b1278b06ab3a against protected main 55d7ae8647208e301f282350f076eeddaba61d11. Exact-head CI 31389258830, Security Scan 31389258832, SAST 31389258776, and fuzz 31389258688 are successful. Verify conversionSuccessRate = succeeded / (succeeded + failed), deterministic zero with no terminal outcomes, unchanged status counters, consistent API/export/persistence Javadocs, and separation from tenant-query and numeric-ledger work. The five output blobs are byte-identical to predecessor #328. Advisory review only; do not mutate, count as human approval, merge, or weaken gates.

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