brain/decisions/000018-usage-counts-report-to-posthog-only.md
A daily job (billing-usage-report-service.ts, reportAllPlatforms) aggregates per-platform usage
counts — active flows, team projects, active users — for every licensed platform. Until this decision
the job had two sinks: a PostHog total_runs_per_day snapshot event (read by the console's usage
cards) and an Autumn push (reportUsageCounts on the billing provider → balances.update per
feature) meant to populate the usage column next to each limit in the Autumn dashboard.
The Autumn leg never worked and nothing consumed it:
check, track, customers.get, and entities.get (per Autumn's keys.mint docs).
balances.update is not callable with one — the same 403 already recorded in decision 000013 for the
abandoned seat-usage backstop. The client is constructed with failOpen: true, so the failing
writes were swallowed silently.mapAutumnFeaturesToPlatformPlan reads granted), and the checks run against the AP database
(decision 000013). Seat billing reads includedGrant/prepaidGrant, never usage.Report usage counts to PostHog only. The Autumn leg is removed end-to-end: reportUsageCounts
is dropped from the BillingProvider interface (and its CE no-op and Autumn implementation), and
setUsage/balances.update is dropped from the instance-side Autumn client wrapper
(autumnUtils.client).
activeFlowsLimit / teamProjectsLimit /
usersLimit for a customer. Support and sales read usage from the console's instance-reported
usage cards (PostHog-backed) instead.track
delta (both operations are on the scoped-token allowlist) or proxying balances.update through
the console's master key — rejected for now as pure cost with no consumer.