Lantern Incident ReportINC-0001 · SEVERITY: WALLET
Trial credits $400 Spent at list $517 Budget $100.00 Spent $532 at list, about $132 cash Things left running 0
Opened 2026-11-02 20:09, the "credits exhausted" email/ Mitigated 22:09, Postgres smoke 18/20/ Closed 2026-11-03 08:20, account emptied

Can Ryan pick up Databricks fast? Fast enough to spend $517 of it in one afternoon, then move off it before midnight.

Three days from signup to a governed semantic layer, Genie, and a managed MCP endpoint the agent called 4,800 times. Then the bill for the calls. The card took about $100 past the $400 of trial credits. Everything the agent learned survived the move.

What the climb bought
Spent at list, Oct 31 to Nov 2$517$7.66, then $12.46, then $497.30.
Over the credits$117At list. The card saw about $100.
Function calls over managed MCP~4,800About $0.09 each. The estimate for the whole build was $60 to $90.
What the cost tracker said$2.68It counted model tokens only.

Timeline

WhenWhatNote
Oct 30Databricks on AWS chosen. Express trial, $400 of credits, two budget alerts. Estimate: $60 to $90.Spec 01 step 10: confirm which SKU the managed MCP server bills to. Never closed.
Oct 31 amSignup. Terraform over the workspace. SQL warehouse cut to 2X-Small, five-minute auto-stop. Unity Catalog, service principal, managed MCP preview on.Serverless egress to OPM blocked at DNS. A card went on to lift it. It did not. The trial's spend cap left with it.
Oct 31 midday761 MB to a volume in 68 s. One notebook job built ten Delta tables in 2 min 17 s.Every check matched.
Oct 31 pmEight semantic views, eight Unity Catalog functions, a Genie space from a JSON file.Every number matched on the first build.
Nov 1Eval set, prototype agent, one user test.Field notes.
Nov 2, 13:00 to 19:00Smoke, two baselines, six hill-climb iterations. 1,720 graded runs.The last three hours ran at about $105 an hour. The cost tracker said $2.68.
Nov 2, 20:09"Your trial credits are exhausted. We will charge your account using the payment information we have on file."No amount in the email.
Nov 2, 20:32Spend analysis committed. Decision: tear it down tonight.The evening estimate read a lagged table and said $197.
Nov 2, 21:53 to 22:09Everything destroyed. Same views and functions re-expressed on a $14-a-month Postgres. Thirteen-minute ship. Smoke 18 of 20, zero errors, median 10 s against Genie's 44.Two hours from the email to a passing smoke.
Nov 3, 08:20Billing export pulled: $517. Service principal, budget, and workspace shell deleted over the account CLI.Closed. A guard grep in the repo fails any commit that could reach the workspace again.

challenge/specs/01 to 03-results.md, 06-postgres-and-teardown.md · wiki/analyses/databricks-spend-during-the-climb.md

The bill

LineDBUUSDWhat
All-purpose serverless557$418Every function call through managed MCP ran on serverless general compute, $0.75 a DBU.
Real-time inference1,082$76Genie, billed because the caller was a service principal.
SQL warehouse32$23Genie's queries.
Jobs3$1Loading the data and building the semantic layer.

C11 asks how far behind plan each component is for three quarters. The variance function took one component and one quarter, so the agent made about thirty calls a run. Over the climb: 4,445 calls of that function, two thirds from C11, roughly $280. On Postgres the same fan-out costs nothing per call.

system.billing.usage joined to list_prices

Root cause

FindingStatus
The SKU check was never closed. Spec 01 said to confirm on day one what the managed MCP server bills to. The estimate assumed 75 runs. The climb ran 1,720.Root cause
The cost tracker measured model tokens. $2.68. Compute was 150 times that, on another line.Contributing
Adding a card removed the cap. It went on to fix an egress block. It did not fix the block. It turned "stops at $400" into "emails at $400."Contributing
Budget alerts lag a day. $25 and $45 thresholds, email only, up to 24 hours late.Contributing
Genie as a service principal bills per request. Fine at demo volume. Not at eval volume.Contributing

Platform torn down that evening, account emptied the next morning. The repo's instructions carry a grep that fails any commit naming a workspace host or key. The data layer is now the cheapest RDS instance class with nothing metered per call, so the harness's token-only cost field is the whole bill.

DECISIONS.md, Platform: RDS Postgres replaces Databricks · AGENTS.md

Eleven platform surfaces in three days, in order

#SurfaceLearned the hard way
1Express trial, account budgetsThe region is assigned. Alerts lag a day.
2Serverless SQL warehouse, Terraform providerImport what the trial made. The provider cannot create a catalog on default storage.
3Unity Catalog grantsSchema-level EXECUTE is the boundary the agent lives inside.
4Service principal, OAuth M2M, Managed MCP previewTool names are catalog__schema__function. A disabled preview returns HTTP 200 with the error inside.
5Serverless egress allowlistClosed egress is a governance story. It is also why the loader runs on a laptop.
6Volumes, files CLI, notebook jobs to Delta761 MB in 68 s. Ten tables in 2 min 17 s.
7SQL Statement Execution APIHow truth values were computed independently of the agent.
8Views and table functions as the semantic layerRe-expressed on Postgres in an evening, same signatures.
9Genie space from a file, permissions APIGenie refuses DATE parameters, so the functions take strings.
10Genie over MCP, query history, Genie benchmarksGenie alone scored 8 of 22 against truth, and the agent with functions beat it, so the functions stayed and Genie became a side tool.
11system.billing.usage, list_prices, audit log, account billable-usage exportWhere the $517 figure came from, the morning after.

challenge/specs/01-results.md to 03-results.md · DECISIONS.md