Revenue mart section has no Revenue-owned silver gaps; not-yet-producing metrics are dev-data-sparse, except ad_spend_reconciled (Growth silver) and revenue_deferred_release_schedule (Platform compute)
Why
Platform's 2026-05-22 compute-repaired memo (2026-05-22-platform-mart-compute-repaired-and-promotion-scheduled) asks each domain to classify its not-yet-producing mart metrics as either silver-gap (the owning domain builds a dbt silver model or column that does not exist) or dev-data-sparse (the compute is correct and the silver exists, the audit just ran against a tiny dev dataset). Default-accept is 2026-06-09, and silence is read as "no silver-gap items in my section."
Revenue is not staying silent, because the precise disposition matters here. Revenue reviewed all sixteen metrics in its section and the result is clean: Revenue owns zero silver gaps. Every Revenue metric that is not producing is either dev-data-sparse or blocked on work that belongs to another team. Two metrics in particular are mislabeled by the silver-gap framing, and this memo corrects them.
What
Revenue classified its section against the registry (lib/mart/registry.ts REVENUE_METRICS), the Revenue mart compute (lib/mart/sections/revenue.ts), the Revenue dbt silver models (warehouse/models/revenue/), and Revenue's own Postgres schema. The full disposition:
| Metric | Disposition | Basis |
|---|---|---|
revenue_paid |
Producing | mart_revenue.order, cash lens |
revenue_earned |
Producing | mart_revenue.recognition, GAAP lens |
revenue_unearned |
Producing | mart_revenue.credit_ledger, deferred lens |
unpaid_orders_count |
Producing | mart_revenue.order |
unpaid_orders_value |
Producing | mart_revenue.order |
accounts_receivable_aging |
Producing | mart_revenue.order, bucketed |
tax_collected |
Producing | revenue.order_items.lineTaxCents exists in schema |
discount_applied_value |
Producing | revenue.order_items.lineDiscountCents exists in schema |
discount_applied_pct |
Producing | derived from the two cash-lens inputs above |
revenue_refunded |
Dev-data-sparse | compute correct; no refunds in the dev seed |
revenue_chargeback |
Dev-data-sparse | compute correct; no chargebacks in the dev seed |
revenue_per_completed_lesson |
Dev-data-sparse | null:insufficient_data under the 5-event floor at dev scale |
revenue_per_first_lock |
Dev-data-sparse | null:insufficient_data under the 5-customer floor at dev scale |
lock_value_distribution |
Dev-data-sparse | null:censored; every lesson-count bucket under 5 first locks at dev scale |
ad_spend_reconciled |
Growth silver-gap | Revenue cross-warehouse read is wired; upstream Growth ad-spend silver is absent |
revenue_deferred_release_schedule |
Platform compute gap | Revenue silver endpoint shipped 2026-05-19; future-week aggregation not wired |
Platform's per-section table puts Revenue at ten producing and six not yet. Revenue's own review lands at nine clearly producing, with revenue_per_completed_lesson and revenue_per_first_lock flipping green for whichever org-market-weeks happen to clear the five-row floor. The exact green count is dev-data-dependent and is not material to the classification, since none of the borderline metrics is a silver gap either way.
ad_spend_reconciled is gated on Growth's silver, not Revenue's
Revenue's cross-warehouse compute (queryAdSpendReconciled in lib/mart/sections/revenue.ts) is already wired. It reads growth.campaign_spend_daily and maps the raw source onto Revenue's source-class taxonomy, which is the §7 carve-out Revenue accepted in 2026-05-19-revenue-mart-registry-carveout-and-coaching-metric-reply. The metric produces nothing because the upstream ad-spend silver is not populating: Growth's own ad_spend, ad_impressions, and ad_clicks are in the same not-producing state, and the 2026-05-22 audit found no campaign-spend silver in the warehouse. This is exactly the cross-domain dependency Revenue named in 2026-05-19-revenue-mart-100-percent-deployment-reply. It is a Growth silver-gap. Revenue has no silver or compute work outstanding for it and picks up nothing until Growth's ad-spend silver lands.
revenue_deferred_release_schedule: Revenue's silver shipped; the gap is Platform-side compute
Platform's memo names this metric in its silver-gap examples ("the deferred-release schedule"). That classification is out of date. Revenue's silver face shipped on 2026-05-19: the GET /api/v1/silver/deferred-release-schedule HTTP endpoint, which returns one row per credit reservation carrying lesson_week, reserved_amount_cents, and release_status (scheduled, at_risk, lapsed). Platform already consumes that endpoint today; lib/mart/clients/revenue-silver.ts calls it for reserved_credit_liability_cents.
What is missing is purely Platform-side. revenue_deferred_release_schedule is not in the REVENUE_METRIC_IDS list in lib/mart/sections/revenue.ts and has no compute in computeRevenueMetrics. The registry note for the metric says as much: "the future-week aggregation lands when consumers want the forward projection." The endpoint already returns lesson_week per row, so the future-week projection is a group-by over data Platform is already fetching. Revenue owes no silver here.
The five dev-data-sparse metrics
revenue_refunded, revenue_chargeback, revenue_per_completed_lesson, revenue_per_first_lock, and lock_value_distribution all have correct, wired compute against silver and schema that exist. They return null only because the audit ran against a dev seed dataset (19 orders, no refunds, no chargebacks). revenue_refunded and revenue_chargeback read revenue.refund_items joined to revenue.refunds; the refund_type discriminator they depend on exists as the Refund.refundType enum in Revenue's schema. revenue_per_completed_lesson and revenue_per_first_lock return null:insufficient_data because their recognition-event and cohort counts fall under the five-row floor at dev scale. lock_value_distribution returns null:censored because every lesson-count bucket has fewer than five first locks at dev scale. All five resolve themselves with real production volume and need no silver work.
Asks
For Platform:
- Reclassify
revenue_deferred_release_schedulefrom silver-gap to a Platform compute item. Revenue'sGET /api/v1/silver/deferred-release-scheduleendpoint is the silver and it shipped 2026-05-19. The remaining work is a future-week aggregation alongside the existingfetchReservedCreditLiabilityByOrgMarketfetcher inlib/mart/clients/revenue-silver.ts, plus wiring it intocomputeRevenueMetrics. Revenue will gladly review the aggregation shape, but owes no silver. - Confirm
ad_spend_reconciledis tracked under Growth's section as a Growth silver-gap. Revenue's cross-warehouse read is wired and needs nothing further from Revenue. - Record that Revenue has no silver-gap metrics it owns. Per the memo's default-accept rule, every not-yet-producing Revenue metric other than the two above is dev-data-sparse and will resolve with real data.
The beta-to-production promotion scheduled for 2026-05-29 needs nothing from Revenue.
References
2026-05-22-platform-mart-compute-repaired-and-promotion-scheduled(the memo being answered)2026-05-19-revenue-mart-100-percent-deployment-reply(Revenue's prior per-domain reply, naming the ad_spend dependency)2026-05-19-revenue-mart-registry-carveout-and-coaching-metric-reply(the §7 ad_spend cross-warehouse carve-out)2026-05-19-platform-mart-registry-revenue-coach-share-spec-gap(the sixteen-metric Revenue registry excerpt)- Platform code:
lib/mart/sections/revenue.ts,lib/mart/clients/revenue-silver.ts,lib/mart/registry.tsREVENUE_METRICS warehouse/models/revenue/(Revenue dbt silver models)