What providers invoice us is not reconciled against what we think we spent β the comparison needs two data inputs (provider actuals, tenant pricing) that are empty or stale, and the alerts that would flag a mismatch have no delivery channel.
cost_alert_status() is read-on-view β nothing polls, emails, or pages it, so an alert is indistinguishable from no alert until a human opens the platform cost console. Two are firing (measured 2026-08-07 11:10 UTC): a daily_spend_spike of $27.44 against a trailing-7d average of $11.07 (a 2.48Γ multiplier), and an unpriced_model alert for openrouter openai/gpt-5.4 (35 events in 7d).
The unpriced model has no rate_card row, so its spend prices to nothing β 763,976 prompt + 11,501 completion tokens, first seen 2026-08-02, last 2026-08-03. The two layers disagree about how they hide it: the SQL layer prices to NULL and excludes the row, while the console's priceUsageRow returns a literal 0 and discloses it via a badge β the dollars are absent either way, but only one says so in the number. rate_card has 12 rows against 8 distinct (provider, model) pairs seen in the last 7 days, so this is a specific gap, not a starved card.
Two separable steps: (1) price the model β add the rate_card row, cheap and fixes the immediate under-count; (2) decide whether alerts need a channel at all β the enrichment_health_sweep pattern (pg_cron β internal-key endpoint β Sentry) already exists and runs 144/144 clean daily. A 2.48Γ day is exactly the thing you'd want to hear about without opening a tab.
The cost console compares our token-derived estimate against what providers actually invoice us β the only honest answer to "are these numbers right". Measured 2026-08-07 11:09 UTC: provider_billing_daily holds 5 rows, all hand-entered (source='manual'), 0 importer rows, last entered 2026-07-13, latest billing date covered 2026-07-12. So the panel compares live estimates against actuals ~4 weeks stale, and nothing in the UI says so.
The ElevenLabs importer exists and is deployed with ELEVENLABS_API_KEY set on the running mawja-api process, but its only caller is a dev_tools CLI subcommand β no schedule, endpoint, or cron β so it has produced zero rows. Precise framing: "reconciliation has stopped" overstates it β five manual entries is a process that was never started, not a cadence that lapsed.
What it costs: without actuals the estimate is unfalsifiable. The June reconciliation is the proof it matters β it validated the rate card as exact per-SKU against the Google invoice and attributed the gap to token under-capture in media extraction (~β of billed tokens recorded), a finding only reachable with an invoice to compare. Options: automate the importers (the pg_cron pattern is proven β enrichment_health_sweep runs 144/144); keep it manual but make staleness visible ("actuals last cover 2026-07-12"); or decide it's not worth it pre-launch β but then the console shouldn't render a silently-degrading capture percentage.
The platform cost console renders revenue and gross margin per tenant, both computed from tenant_pricing β which holds 0 rows (measured 2026-08-07 11:09 UTC). The margin half of the unit-economics view has never had an input since it shipped; whatever it displays is derived from nothing.
This is a data gap, not a code gap β the code paths are deployed and correct, the table was simply never seeded, which is why it's filed as a decision rather than a bug. And it is not urgent for the reason it looks urgent: Mizo is not live and has no customers (every tenant is friends/family), so there is no revenue to represent β the question is "what should this surface do while there is no revenue".
Options: seed it when pricing is real and render the tiles as explicitly unavailable until then; hide the revenue/margin half and leave the cost side (real and well-populated) standing on its own; or leave it β but then "margin is zero" is indistinguishable from "margin is unknown". Options 1 or 2 both beat a number with no provenance sitting next to numbers that have plenty. Related to #3132: together they are the two data inputs the cost console's derived figures depend on, both empty or stale.
The criterion, top to bottom: a live money-affecting defect firing right now (#3131) outranks the reconciliation input (actuals, #3132), which outranks the gap with nothing yet to represent (#3133).
What it deliberately ignores: priority labels (#3131 and #3132 are both p2, but labels don't capture live firing evidence vs a process that was never started); filing order and age (all three filed within 44 seconds on 2026-08-07); how cheap the fix looks (the cheapest fix β the rate_card row β sits inside the most urgent issue); and code-gap vs data-gap (#3133 ranks last because there is no revenue to represent, not because there is no bug).
Evidence below is generated from the read-only audit of 2026-08-29 and reconciled against the open issues at build time. Every claim cites the issue it came from. Nothing here is a decision β rulings stay in the prose above, which is written by hand.
PROD 2026-08-29: `select * from public.cost_alert_status()` returns THREE firing alerts β tenant_over_user_threshold for tenant e9d96b09β¦ (Regina: 3 active users, $579.48 MTD, $193.16/active user against a $50 threshold), and two unpriced_model alerts (openrouter/openai/gpt-5.4, 33 events in 7d; openai/gpt-4o-mini-transcribe, 5 events in 7d). public.rate_card has 12 rows and ZERO matching '%gpt-5.4%', so the gap the issue named is still unpriced 22 days later, and a second unpriced model has since appeared. Delivery channel absence: the 33-row pg_cron census (all of cron.job, prod) contains no cost-alert job; git grep 'cost_alert_status' over origin/main hits only supabase/migrations/20260610152605_cost_alert_status_rpc.sql, platform/src/services/cost-pricing.ts + its test, platform/src/components/cost/CostAlertStrip.tsx, docs/reference/feature-catalog.md and docs/status/llm-cost.html β no backend endpoint, no sweep, no notifier. Population for the absence: every file on origin/main plus every row of cron.job.
PROD 2026-08-29: select count(*) from public.provider_billing_daily β 5; max(billing_date) β 2026-07-12. Identical to the issue's 2026-08-07 measurement β no row added in the 22 days since filing, and actuals now trail live estimates by ~7 weeks. Scheduling absence, population enumerated: the ElevenLabs importer lives at backend/app/services/billing/elevenlabs_usage.py and its only caller is a backend/scripts/dev_tools.py subcommand; the cron census establishes that `git grep -n 'dev_tools.py' origin/main -- .github/` yields exactly two hits, both the `invariants` subcommand, and that none of the 33 pg_cron job bodies shell out (all are net.http_post or SELECT public.<fn>()), and neither of the two Fly scheduled machines runs dev_tools. So no scheduled caller exists anywhere.
PROD 2026-08-29: select count(*) from public.tenant_pricing β 0, unchanged from the issue's 2026-08-07 measurement. The table exists (supabase/migrations/20260610152604_tenant_pricing_table.sql on origin/main) and is read by platform/src/services/cost-pricing.ts; git grep 'tenant_pricing' over origin/main finds no writer in backend/ or scripts/ β only the migration, the platform service + its test, and docs. The issue's own framing is confirmed by the premise it rests on: Mizo has no paying customers, so there is no revenue to seed.
1 assessed issue closed since the audit and are not shown β a closed issue's evidence is history, and printing it as current is how a page starts lying.
None recorded. track-order.json carries no decided rulings for this track. All three open issues are themselves owner decisions rather than code bugs β none is a defect with a determined fix β so picking one up is deciding something undecided, not relitigating a ruling.
All three issues were filed 2026-08-07, found while cataloguing LLM cost of goods sold for #2937 (the consolidation of overlapping roadmap/inventory docs into two sources of truth), now closed. No PRs or post-mortems yet β every issue is still open. This status page has never been published.