Repository navigation
Maple Review Bot / Maple / review
succeeded
Nov 13, 2026 in 1m 5s
Confidence 10/10 · No issues found
🟢 Confidence 10/10 · safe to merge. The four files changed since 3feecf7 are display helpers, a dev lab and their tests; each new branch is pinned by a marks or scene test.
no findings · tests covered · risk low
The last commit gives Cloudflare rows the right mark, account label and drill-down, and moves /lab/cost onto the generic credential messages, with tests. It leaves the open VcsWebhookEnqueueFailure alone: apps/api/src/runtime/http-graph.ts only gains the Cloudflare cost route.
keyMark/keyDetailread a Cloudflare product and account as Cloudflare'scost-lab.tstracks per-provider credential changes, not one OpenRouter flag- New lab states cover adding, replacing and removing a Cloudflare source
Before merge
- Migration · Check it is safe on production data and with the code still deployed ·
packages/db/drizzle/20261112221939_cost_connections/migration.sql
Production impact
Open errors in the changed files (1)
| Issue | Service | Occurrences | File |
|---|---|---|---|
| @maple/api/routes/VcsWebhookEnqueueFailure (2 issues) | maple-api | 9 | apps/api/src/runtime/http-graph.ts |
After this merges, Maple checks whether they stop.
Telemetry this change adds and removes (17)
- ➕ span name
HttpCloudflareCost.set·apps/api/src/routes/internal/cloudflare-cost.http.ts:36 - ➕ span name
HttpCloudflareCost.remove·apps/api/src/routes/internal/cloudflare-cost.http.ts:47 - ➕ span name
CloudflareCostConnectionService.validateWithCloudflare·packages/backend/src/services/cost/CloudflareCostConnectionService.ts:80 - ➕ span name
CloudflareCostConnectionService.set·packages/backend/src/services/cost/CloudflareCostConnectionService.ts:114 - ➕ span name
CloudflareCostConnectionService.remove·packages/backend/src/services/cost/CloudflareCostConnectionService.ts:153 - ➕ span name
CostConnectionStore.save·packages/backend/src/services/cost/CostConnectionStore.ts:88 - ➕ span name
CostConnectionStore.remove·packages/backend/src/services/cost/CostConnectionStore.ts:159 - ➕ span name
CostConnectionStore.load·packages/backend/src/services/cost/CostConnectionStore.ts:180 - ➕ span name
CostSyncService.reconcileConnections·packages/backend/src/services/cost/CostSyncService.ts:212 - ➕ span name
CloudflareCostProvider.pull·packages/backend/src/services/cost/providers/cloudflare/CloudflareCostProvider.ts:70 - ➕ attribute
maple.cost.cloudflare.fee_rows·packages/backend/src/services/cost/providers/cloudflare/CloudflareCostProvider.ts:110 - ➕ attribute
maple.cost.cloudflare.fees_skipped·packages/backend/src/services/cost/providers/cloudflare/CloudflareCostProvider.ts:112 - ➕ attribute
maple.cost.error_reason·packages/backend/src/services/cost/providers/cloudflare/CloudflareCostProvider.ts:118 - ➕ attribute
maple.cost.cloudflare.error·packages/backend/src/services/cost/providers/cloudflare/cloudflare-billing-api.ts:67 - ➕ attribute
maple.cost.cloudflare.listed·packages/backend/src/services/cost/providers/cloudflare/cloudflare-billing-api.ts:68 - ➕ attribute
maple.cost.cloudflare.read·packages/backend/src/services/cost/providers/cloudflare/cloudflare-billing-api.ts:69 - ➕ attribute
maple.cost.cloudflare.status·packages/backend/src/services/cost/providers/cloudflare/cloudflare-billing-api.ts:113
What was checked
serviceProvidernames only the familiesnormalize.ts:8-21emits, and falls back to the org's sources- Every new lab state has sources and opening messages that reach the screen it names (
cost-lab.ts:106-167) marks.test.tspins real icons: itssourcesfixture holds both an AWS and an OpenRouter source
25bbfad · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.
Loading