fix(billing): classify permanent callback conflicts - #7569
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
Greptile SummaryThis PR distinguishes permanent billing callback conflicts from transient settlement failures while retaining compatibility with markerless clients.
Confidence Score: 5/5The PR appears safe to merge, with the new permanent-conflict behavior aligned with frozen attribution, cycle-close handling, and protocol compatibility. No actionable failures remain: permanent conditions receive explicit reconciliation outcomes, transient failures remain retryable, markerless clients retain their established semantics, and the affected paths have focused unit and integration coverage.
|
| Filename | Overview |
|---|---|
| apps/sim/app/api/billing/update-cost/route.ts | Classifies elapsed-period and deleted-user failures as protocol-aware, non-retryable reconciliation conflicts while preserving markerless behavior. |
| apps/sim/lib/billing/threshold-billing.ts | Adds the permanent elapsed-period settlement code and distinguishes it from retryable overlapping or future mismatches. |
| apps/sim/app/api/billing/update-cost/route.test.ts | Covers reconciliation responses across all protocols, exact PostgreSQL constraint matching, and markerless compatibility. |
| apps/sim/app/api/billing/update-cost/replay.integration.test.ts | Adds an environment-gated PostgreSQL and Go integration test for durable replay and transient recovery. |
| apps/sim/lib/copilot/generated/billing-protocol-v1.ts | Adds stable callback outcome codes and messages for elapsed periods and deleted users. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Billing callback] --> B[Record cumulative usage]
B -->|Missing billing user FK| C{Protocol marker present?}
B -->|Recorded or duplicate| D[Reconcile threshold settlement]
D -->|Frozen period elapsed| C
D -->|Transient settlement failure| E[503 retryable]
D -->|Settlement succeeds| F{New cumulative cost?}
C -->|Yes| G[409 reconciliation required]
C -->|No, markerless legacy| H[Preserve legacy error behavior]
F -->|Yes| I[200 billed]
F -->|No| J[409 duplicate event]
Reviews (1): Last reviewed commit: "fix(billing): classify permanent callbac..." | Re-trigger Greptile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Type of Change
Testing
Checklist