Bill Pro plans on active time-series#918
Conversation
🤖 Claude Code ReviewPR: #918 I've reviewed the full diff. Here is my assessment. PR Review: Bill Pro plans on active time-seriesThis is a large, well-structured change that migrates Pro billing from per-metric metering (with monthly credit grants) to a value-based "monthly-active series" model, backed by a new Strengths
Issues & concerns1. Hot-path cost per Pro report (performance). 2. Doc/comment overstates "no join." The migration and 3. 4. Lost configurability. 5. Live test uses wall-clock. Compliance checks
VerdictSolid, carefully-reasoned, and well-tested. No blocking bugs found. My only substantive asks before merge: (a) confirm the per-report synchronous Model: claude-opus-4-8 |
|
| Branch | active-series-billing |
| Testbed | intel-v1 |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result microseconds (µs) (Result Δ%) | Upper Boundary microseconds (µs) (Limit %) |
|---|---|---|---|
| Adapter::Json | 📈 view plot 🚷 view threshold | 4.72 µs(+2.20%)Baseline: 4.62 µs | 4.86 µs (97.10%) |
| Adapter::Magic (JSON) | 📈 view plot 🚷 view threshold | 4.58 µs(+1.95%)Baseline: 4.49 µs | 4.70 µs (97.45%) |
| Adapter::Magic (Rust) | 📈 view plot 🚷 view threshold | 26.04 µs(+2.04%)Baseline: 25.52 µs | 26.55 µs (98.08%) |
| Adapter::Rust | 📈 view plot 🚷 view threshold | 3.58 µs(+2.64%)Baseline: 3.48 µs | 3.60 µs (99.43%) |
| Adapter::RustBench | 📈 view plot 🚷 view threshold | 3.57 µs(+2.53%)Baseline: 3.48 µs | 3.59 µs (99.51%) |
84c9153 to
c1977a7
Compare
c1977a7 to
98be1a1
Compare
98be1a1 to
d427941
Compare
d427941 to
33fd222
Compare
33fd222 to
d91be06
Compare
d91be06 to
9d3170c
Compare
9d3170c to
4d313d0
Compare
4d313d0 to
c7253e9
Compare
c7253e9 to
090ef76
Compare
090ef76 to
34f168c
Compare
34f168c to
eca5974
Compare
eca5974 to
7a3b125
Compare
7a3b125 to
d555f66
Compare
d555f66 to
4c86eb2
Compare
4c86eb2 to
0683e88
Compare
0683e88 to
0efb312
Compare
0efb312 to
776d5e6
Compare
776d5e6 to
3b074f9
Compare
3b074f9 to
18ef1d0
Compare
18ef1d0 to
2e6ed84
Compare
Use a single tiered Stripe price on the Bencher Pro product to bill both the monthly base fee (tier 1 flat fee) and the per-series step-ups on the active_series meter. This replaces the separate series product, the flat base price, and the monthly included-usage credit grants. Pro subscriptions now carry the tiered active-series price plus bare metal, are identified by that price, and no longer bill the per-metric metrics meter. The 30-day free trial uses a native subscription-level Stripe trial (Checkout compatible) instead of a coupon. Active-series usage is posted to Stripe after each report (counted on the request connection, posted in a detached task) rather than by a nightly sweep, which is removed along with the account-credit grants.
2e6ed84 to
93f7008
Compare
Add a value-based billing dimension for the Pro plan: monthly-active series,
where a series is a distinct testbed x benchmark x measure an organization
reports to.
greatest report.end_time seen for each series, written on ingest in the same
transaction as the metric inserts (so it cannot drift) and backfilled from
existing metrics. Reads are a single index range scan over
(organization_id, last_seen).
credit sweep posts each active Pro org's cumulative period-to-date private
active-series count. Gated behind an optional series product in config, so it
ships dark until configured.
metrics meter. The ingest upsert is plan-agnostic; the billing read decides
who is billed.
Includes unit and property tests asserting the cache equals a from-scratch
distinct-series oracle, ingest atomicity, and backfill correctness.