# Ordinary-SQL baseline — retrieval cells measured

`sql-baseline/0.1.0` · declared 2026-09-08T01:00:00Z · **RETRIEVAL_MEASURED**

Every retrieval cell is COMPLETE, filled from campaign(s) `sqlbase-20260909-065734-c50d0411`; 4 campaign(s) are retained and listed below, earlier ones included. The consumer cells and the cost cells are not measured; the table says why.

Generated by `python3 -m okf_bq_graph.sql_baseline` from `fixtures/sql_baseline.json` and the retained campaign
records under `evidence/sql-baseline/`. It opens no client and spends nothing. Regenerate it rather than editing it.

## What is being measured, and against what

* **Engine.** `fallback` — 'fallback' is the relational two-hop join path (sql/fallback.sql) plus the GA VECTOR_SEARCH seed for natural questions. It is the ordinary-SQL comparator, not BigQuery Graph / GQL.
* **Corpus.** `acme_retail` at publication `pub_190192147fd7fd78`, compiled from source pin `31da799a9aef176df12e91abbd119ea9385b75ec`. Acme is invented. This corpus is 17 markdown files and 2 artifacts; it is not customer cohort data and not the Alder retention story.
* **Questions.** `fixtures/cases.json` at `as_of` 2026-09-05T00:00:00Z: 3 forced seeds, 6 natural questions. Same pinned question set the GQL cells used. Forced-seed and natural-question shapes are measured in separate cells and are never pooled: the natural shape includes a query embedding and a vector seed that the forced shape does not run.
* **Concurrency.** C=5 is a planning default chosen so a first concurrency point exists. It is not an accepted concurrency and no customer has asked for it. C=1 is the only concurrency the recorded prior integration observations cover; the C=5 cells below are measured only by a retained campaign, and a measured C=5 cell does not make C=5 an accepted concurrency.

## Fact data — **SELECTED**

**Selected version.**
* **kind:** loaded-fixture-digest (synthetic)
* **label:** okf_receipt_spike_20260905 = fixture.sql sha256:940aacdc… @ SDK 6719eb5 (synthetic Acme fixture, 14 rows)
* **synthetic:** true
* **customer_data:** none. Alder cohort data has never been selected; that is a customer dependency, not an agent's choice (see facts.customer_data)
* **scope:** engineering comparison only: 14 invented rows measure the chain's overhead, not fact-scan latency or cost at any customer scale; USD only, fx_daily_rates is created empty so the FX join is a no-op
* **dataset:** test-project-0728-467323.okf_receipt_spike_20260905
* **location:** US
* **tables:** `fulfillment_cost`, `fx_daily_rates`, `order_lines`, `orders`, `payment_fees`, `products`, `shipment_cost`
* **sdk_pin:** 6719eb535667963fa640dd4535e508b550eb6cb1
* **fixture_path:** examples/okf_attested_computation/fixtures/fixture.sql
* **fixture_sha256:** 940aacdc125a64c7ef88fdfb6eb16677b072b4b77d19443632b4308c4fe5f124
* **fixture_bytes:** 3375
* **expected_results_path:** examples/okf_attested_computation/fixtures/expected.json
* **expected_results_sha256:** 281981f07495d77172e0fd4dc081643454a8be5d1210c2d04df20919fb6dc25f
* **publication_manifest_sha256:** 305d6ecdb542ee095d657ec8408d519423edfcacffd5a457b8e7f745f84961ab
* **computation_sha256:** 5e96ae11835ad328ccc94d29ae4bc7cc40176758cbcbad63231d0461c1f8f0e7
* **content_manifest_format:** okf-fact-content/1
* **content_manifest_sha256:** 7264e7df6276463dc4ec7a6b179b87bff08aaa105660ea37611398fc197454f0
* **vendored_copies:** fixtures/facts/{fixture.sql,expected.json,publication.json,gross-margin-period.md,content.json,source.json,SOURCE.md}: the SDK files are byte-equal to the pinned Git objects named in source.json; content.json is derived from fixture.sql by okf_bq_graph.fact_content; validate_plan re-hashes all of them, binds every digest and path here to source.json and the publication manifest, and re-derives the manifest on every build
* **row_counts:** fulfillment_cost=2, fx_daily_rates=0, order_lines=3, orders=3, payment_fees=2, products=2, shipment_cost=2
* **row_count_total:** 14
* **expected_gross_margin_usd_2026_01:** 400
* **loaded_by_job:** test-project-0728-467323:US.bqjob_rb53f55e41faf967_000001a073eea67a_1 (13 child jobs, DONE)
* **loaded_utc:** 2026-09-05T23:36:55Z to 2026-09-05T23:37:11Z
* **load_evidence:** evidence/legacy-reconcile/episode_listing_index.json keeps that job's query text as a 600-byte prefix only: it proves a fixture load at that time, not byte identity with fixture_sha256
* **live_materialization:** UNVERIFIED: this selection made no live read of the dataset; whether its rows equal this digest today is unknown until the runner's live precheck reads them
* **historical_chain_equivalence:** UNPROVEN: the 2026-09-07 chain released $400.00 VERIFIED, equal to expected.json approved_january, which is consistent with this content but does not prove the live rows were byte-equal to it
* **conformance_observed:** evidence/chain/chain_live_restricted.json cases[approved-restricted].consume.display = '[LIVE] Gross margin: $400.00 USD · VERIFIED' at 2026-09-07T22:48Z
* **valid_for_runs_on_or_after:** 2026-03-12
* **validity_note:** the declaration's compiled SQL uses DATE_DIFF(CURRENT_DATE(), DATE(o.order_ts), DAY) >= 30 and the latest fixture order is 2026-02-10, so the expected results hold for any evaluation date on or after 2026-03-12; the SQL is left as authored because changing it would change computation_sha256 and unbind the retained chain
* **materialization_expires_utc:** about 2026-10-05 (30-day table expiration set at provisioning); after that the same digest must be re-loaded under the owner's gate and the new load job recorded here
* **live_precheck:** IMPLEMENTED OFFLINE, NOT RUN LIVE (okf_bq_graph.consumer_run.admit_live, FS-1 2026-09-09; exercised only against the vendored manifest and mutated copies): before any consumer campaign the runner reads every selected table back in full (schema and rows), canonicalises the readback as okf-fact-content/1 and requires its digest to equal content_manifest_sha256, then binds that verified immutable or protected table set to every attempt's evidence; otherwise the campaign stops FACTS_DRIFTED with no cell filled. Per-table row counts equal to row_counts and a January result of expected_gross_margin_usd_2026_01 are smoke checks only: changing one non-January amount leaves both unchanged while the content digest and the January–February result change
* **selected_utc:** 2026-09-09
* **selected_by:** project owner, after the 2026-09-09 two-lens consult (implementer and reviewer memos, both recommending SELECT now as the synthetic fixture digest)

The task releases a computed number, so a comparison needs the version of the fact rows that number was computed from. The corpus pin above fixes the authored definitions and the graph projection it compiles to; it identifies no fact data at all.

**What the retained chain identifies**:

* Publication `okf-receipt-spike/acme-retail-derived/gross-margin-period` — the SDK receipt example's own fixture publication — a separate identity from the graph publication pub_190192147fd7fd78, joined to it only by the declaration file's bytes. Synthetic fixture: true.
* SDK pin `6719eb535667963fa640dd4535e508b550eb6cb1`, dataset `test-project-0728-467323.okf_receipt_spike_20260905`, 7 fact tables: `fulfillment_cost`, `fx_daily_rates`, `order_lines`, `orders`, `payment_fees`, `products`, `shipment_cost`.
* Derived from knowledge-catalog okf/bundles/acme_retail @ 31da799a9aef176df12e91abbd119ea9385b75ec.
* Read from `evidence/chain/chain_live_restricted.json`.

**Customer fact data (Alder cohort) — NOT SELECTED.** Alder is the board-pack story's illustrative customer. Its cohort data is a customer's to give, not ours to invent; no Finance or data owner outside this project has been asked. Selecting the synthetic fixture above changes nothing here; a customer selection would be its own record with its own owner and acceptance.

**Cells this blocks.** None. Selecting a version clears `FACTS_UNSELECTED` only; the request-to-consumer cells stay INCOMPLETE because the runner has no live mode (RUNNER_HERMETIC_ONLY, which the cell table gives: its hermetic attempts prove orchestration and refusals, never a latency), and the live rows have not been verified against the selected digest (a full readback, not a count check; `admit_live` implements that check offline and no live run has called it).

**How it was selected.** Selected on 2026-09-09 as the digest of the loaded fixture: the receipt example's synthetic fixture script at the SDK pin the retained chain already names, with its expected results, load job, validity window and expiry recorded beside it, and the script, expected results and a canonical content manifest vendored so the digests recompute offline. Rejected: a snapshot decorator (BigQuery time travel lasts days, and the tables expire about 2026-10-05) and a table-copy revision as the version (a paid gated write that would still need the digest to say what it holds; optional as a later durable copy). Cohort data for the Alder story stays unselected — a customer dependency, not an agent's choice.

## Two latencies, never substituted

* **`retrieval_ms`** — Wall time of one governed retrieval call: seed, walk, context, nodes, assembly. This is what okf_bq_graph.benchmark already measures and what every recorded prior observation covers.
* **`request_to_consumer_ms`** — Wall time from the requester's question to the consumer's release-or-refuse decision: retrieval plus binding, the caller-delegated BigQuery job, independent verification and the consumer check. The repeated-sample runner (okf_bq_graph.consumer_run, FS-1 2026-09-09) has dry-run and hermetic modes only: no live repeated-sample measurement of this exists today, and a hermetic attempt is not one.
* The two are reported separately and never substituted for one another. The 2026-09-06 chain pass of about 23 seconds covered three cases end to end and is neither metric: it is not a per-request retrieval time and not a sampled request-to-consumer distribution.

## Cells

p50 / p95 are nearest-rank over all measured attempts, failures and timeouts included; `ok` is the success rate
over the same attempts. A cell shows the latest campaign that carried it and nothing older.

| Cell | Metric | Shape | C | Measured | State | p50 ms | p95 ms | ok | Bytes | Edition | Campaign | Reason |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| `sqlbase_forced_c1` | retrieval_ms | forced | 1 | 100 / 100 | **COMPLETE** | 2,564 | 3,171 | 100% | 6,000 MiB | on-demand | `sqlbase-20260909-065734-c50d0411` | — |
| `sqlbase_forced_c5` | retrieval_ms | forced | 5 | 100 / 100 | **COMPLETE** | 8,700 | 10,770 | 100% | 6,000 MiB | on-demand | `sqlbase-20260909-065734-c50d0411` | — |
| `sqlbase_natural_c1` | retrieval_ms | natural | 1 | 100 / 100 | **COMPLETE** | 3,724 | 4,459 | 100% | 8,400 MiB | on-demand | `sqlbase-20260909-065734-c50d0411` | — |
| `sqlbase_natural_c5` | retrieval_ms | natural | 5 | 100 / 100 | **COMPLETE** | 13,799 | 15,892 | 99% | 8,370 MiB | on-demand | `sqlbase-20260909-065734-c50d0411` | — |
| `sqlchain_forced_c1` | request_to_consumer_ms | forced | 1 | 0 / 20 | **INCOMPLETE** | — | — | — | — | — | — | RUNNER_HERMETIC_ONLY |
| `sqlchain_forced_c5` | request_to_consumer_ms | forced | 5 | 0 / 20 | **INCOMPLETE** | — | — | — | — | — | — | RUNNER_HERMETIC_ONLY |

How each cell is filled, and what its latest campaign did:

* **`sqlbase_forced_c1`** — Predeclared: 20 warmups + 100 measured at C=1, timeout 60s, result cache off, engine `fallback`. `okf_bq_graph.benchmark.measure` does the sampling, retains every attempt in evidence/requests.jsonl before aggregating, and keeps a stopped cell INCOMPLETE. The driver that reaches it is `okf_bq_graph.sql_baseline_run` (Slice B, Pass 1): it reads this plan rather than fixtures/scale.json, passes only this cell's shape as the query list, runs on-demand by job-level override (`reservation = none`, verified from every job's statistics; a reservation or edition on any job stops the campaign unlabelled), with a submission gate per cell so the cell/total deadline stops in-flight jobs, a running billed-byte / USD ledger with per-job `maximum_bytes_billed`, and a fresh `sqlbase-*` run_id that is checked against the retained GQL summary before any client exists. `python3 -m okf_bq_graph.sql_baseline_run --dry-run --cells sqlbase_forced_c1`; fill: `python3 -m okf_bq_graph.sql_baseline_run --live --cells sqlbase_forced_c1` (Pass 2, foreground, Haiyuan's paid authorization). **Latest campaign `sqlbase-20260909-065734-c50d0411` (COMPLETE):** COMPLETE, n=100/100, 120 attempts retained (20 warmups), 0 errors, 0 timeouts, 360 jobs, 6,000 MiB billed, edition on-demand.
* **`sqlbase_forced_c5`** — Predeclared: 20 warmups + 100 measured at C=5, timeout 60s, result cache off, engine `fallback`. `okf_bq_graph.benchmark.measure` does the sampling, retains every attempt in evidence/requests.jsonl before aggregating, and keeps a stopped cell INCOMPLETE. The driver that reaches it is `okf_bq_graph.sql_baseline_run` (Slice B, Pass 1): it reads this plan rather than fixtures/scale.json, passes only this cell's shape as the query list, runs on-demand by job-level override (`reservation = none`, verified from every job's statistics; a reservation or edition on any job stops the campaign unlabelled), with a submission gate per cell so the cell/total deadline stops in-flight jobs, a running billed-byte / USD ledger with per-job `maximum_bytes_billed`, and a fresh `sqlbase-*` run_id that is checked against the retained GQL summary before any client exists. `python3 -m okf_bq_graph.sql_baseline_run --dry-run --cells sqlbase_forced_c5`; fill: `python3 -m okf_bq_graph.sql_baseline_run --live --cells sqlbase_forced_c5` (Pass 2, foreground, Haiyuan's paid authorization). **Latest campaign `sqlbase-20260909-065734-c50d0411` (COMPLETE):** COMPLETE, n=100/100, 120 attempts retained (20 warmups), 0 errors, 0 timeouts, 360 jobs, 6,000 MiB billed, edition on-demand.
* **`sqlbase_natural_c1`** — Predeclared: 20 warmups + 100 measured at C=1, timeout 60s, result cache off, engine `fallback`. `okf_bq_graph.benchmark.measure` does the sampling, retains every attempt in evidence/requests.jsonl before aggregating, and keeps a stopped cell INCOMPLETE. The driver that reaches it is `okf_bq_graph.sql_baseline_run` (Slice B, Pass 1): it reads this plan rather than fixtures/scale.json, passes only this cell's shape as the query list, runs on-demand by job-level override (`reservation = none`, verified from every job's statistics; a reservation or edition on any job stops the campaign unlabelled), with a submission gate per cell so the cell/total deadline stops in-flight jobs, a running billed-byte / USD ledger with per-job `maximum_bytes_billed`, and a fresh `sqlbase-*` run_id that is checked against the retained GQL summary before any client exists. `python3 -m okf_bq_graph.sql_baseline_run --dry-run --cells sqlbase_natural_c1`; fill: `python3 -m okf_bq_graph.sql_baseline_run --live --cells sqlbase_natural_c1` (Pass 2, foreground, Haiyuan's paid authorization). **Latest campaign `sqlbase-20260909-065734-c50d0411` (COMPLETE):** COMPLETE, n=100/100, 120 attempts retained (20 warmups), 0 errors, 0 timeouts, 480 jobs, 8,400 MiB billed, edition on-demand.
* **`sqlbase_natural_c5`** — Predeclared: 20 warmups + 100 measured at C=5, timeout 60s, result cache off, engine `fallback`. `okf_bq_graph.benchmark.measure` does the sampling, retains every attempt in evidence/requests.jsonl before aggregating, and keeps a stopped cell INCOMPLETE. The driver that reaches it is `okf_bq_graph.sql_baseline_run` (Slice B, Pass 1): it reads this plan rather than fixtures/scale.json, passes only this cell's shape as the query list, runs on-demand by job-level override (`reservation = none`, verified from every job's statistics; a reservation or edition on any job stops the campaign unlabelled), with a submission gate per cell so the cell/total deadline stops in-flight jobs, a running billed-byte / USD ledger with per-job `maximum_bytes_billed`, and a fresh `sqlbase-*` run_id that is checked against the retained GQL summary before any client exists. `python3 -m okf_bq_graph.sql_baseline_run --dry-run --cells sqlbase_natural_c5`; fill: `python3 -m okf_bq_graph.sql_baseline_run --live --cells sqlbase_natural_c5` (Pass 2, foreground, Haiyuan's paid authorization). **Latest campaign `sqlbase-20260909-065734-c50d0411` (COMPLETE):** COMPLETE, n=100/100, 120 attempts retained (20 warmups), 1 errors, 0 timeouts, 478 jobs, 8,370 MiB billed, edition on-demand; first error `ServiceUnavailable: 503 GET https://bigquery.googleapis.com/bigquery/v2/projects/test-project-0728-467323/queries/okf_graph_sqlbase-20260909-065734-c50d0411_sqlbase_natural_c5_654dd579efcc4fadbc54003a599dda17?fields=jobReference%2CtotalRows%2CpageToken%2Crows&location=US&formatOptions.useInt64Timest`.
* **`sqlchain_forced_c1`** — Fact version: SELECTED, loaded-fixture-digest (synthetic) (see `facts` above): synthetic fixture-scale rows, live materialization unverified against the digest. Before it samples, the runner must read the live tables back in full and match them to the content digest, then bind that verified set to every attempt; row counts and the January result are smoke checks, not identity. None of that exists yet, and its numbers must be labelled fixture-scale. The runner is `okf_bq_graph.consumer_run` (FS-1, 2026-09-09) and it has no live mode: `--dry-run` prints the campaign and launches nothing; `--hermetic` repeats the predeclared question (`f_current`) through the in-process oracle graph, bind, the SDK example's hermetic receipt runner, verification and the consumer decision, plus one `f_revenue` probe declared in advance to refuse at bind, retaining every attempt under evidence/consumer/. A hermetic attempt establishes orchestration and refusals, not a latency, a job or data equivalence, so it never fills this cell. Filling it is FS-2: the same loop live, C=1 first, after `admit_live` (full readback matched to the content digest, expiry) passes, on-demand by job-level override, inside budget.consumer_sampling, under the owner's paid gate. `python3 -m okf_bq_graph.consumer_run --dry-run --cells sqlchain_forced_c1`; `python3 -m okf_bq_graph.consumer_run --hermetic --cells sqlchain_forced_c1`. **Retained hermetic runs (orchestration and refusals only, no latency, nothing filled):** `consumer-hermetic-20260909T230446Z-f2d581af` RUNNER_HERMETIC_OK, 23 attempts retained, 22 released, 1 refused, probe REFUSED.
* **`sqlchain_forced_c5`** — Fact version: SELECTED, loaded-fixture-digest (synthetic) (see `facts` above): synthetic fixture-scale rows, live materialization unverified against the digest. Before it samples, the runner must read the live tables back in full and match them to the content digest, then bind that verified set to every attempt; row counts and the January result are smoke checks, not identity. None of that exists yet, and its numbers must be labelled fixture-scale. The runner is `okf_bq_graph.consumer_run` (FS-1, 2026-09-09) and it has no live mode: `--dry-run` prints the campaign and launches nothing; `--hermetic` repeats the predeclared question (`f_current`) through the in-process oracle graph, bind, the SDK example's hermetic receipt runner, verification and the consumer decision, plus one `f_revenue` probe declared in advance to refuse at bind, retaining every attempt under evidence/consumer/. A hermetic attempt establishes orchestration and refusals, not a latency, a job or data equivalence, so it never fills this cell. Filling it is FS-2: the same loop live, C=1 first, after `admit_live` (full readback matched to the content digest, expiry) passes, on-demand by job-level override, inside budget.consumer_sampling, under the owner's paid gate. `python3 -m okf_bq_graph.consumer_run --dry-run --cells sqlchain_forced_c5`; `python3 -m okf_bq_graph.consumer_run --hermetic --cells sqlchain_forced_c5`. **Retained hermetic runs (orchestration and refusals only, no latency, nothing filled):** `consumer-hermetic-20260909T230446Z-f2d581af` RUNNER_HERMETIC_OK, 23 attempts retained, 22 released, 1 refused, probe REFUSED.

## Cost cells

Listed rather than omitted: an absent row reads as zero.

| Cost | Unit | Formula | Value | State | How it would be filled |
|---|---|---|---|---|---|
| How long after a publish can a new request see the new publication? | seconds | — | — | **UNMEASURED** | Publish repeatedly and time first visibility to a new request. One observation exists (21.3 s for the single Acme publish, n=1, evidence/publish_log.jsonl) and it is not a distribution. |
| What does keeping a publication current cost per day, including recompiles and republishes? | usd_per_day | — | — | **UNMEASURED** | Not modelled. Needs a republish cadence nobody has agreed yet. |
| What do section embeddings and per-request query embeddings cost? | usd | — | — | **UNMEASURED** | Not quantified. The corpus embedded 22 + 6 + 2x7 sections once; natural-question cells add one query embedding per request. Both need the model's own price, which this spike never recorded. |
| What do the projection, section vectors and retained evidence cost to store? | usd_per_month | — | — | **UNMEASURED** | Not quantified: projection, section vectors and retained evidence, at the dataset's storage rate. |
| What does one released, receipt-verified answer cost, once the cost of every failed and refused attempt is counted too? | usd_per_success | total cost of all attempts / released, receipt-verified answers | — | **UNMEASURED** | Not computable until the cells above have a numerator. Total cost of all attempts divided by released, receipt-verified answers: a failed or refused attempt costs money, so it belongs in the numerator, and it answered nothing, so it must not appear in the denominator. |

## Budget, and the projection against it

* Ceilings: 900 s per cell, 3600 s total, 64 GiB billed, $0.50 on-demand at list.
* Reservation: none: baseline cells run on-demand. Opening an Enterprise window for the SQL baseline would make it a different measurement and needs its own budget line.
* Stop rule: A cell that reaches max_wall_seconds_per_cell, or a run that reaches any total ceiling, stops and is recorded INCOMPLETE / NOT_RUN_BUDGET with its attempts retained. Percentiles are nearest-rank over all attempts; failures and timeouts count and are never dropped.
* Projection for the four retrieval cells from observed bytes per request: **37.5 GiB → $0.23** at list — within the declared ceiling.
* List rate on projected bytes. The 1 TiB/month on-demand free tier is not applied, so the invoiced line may be lower. Embeddings, storage and publication upkeep are NOT in this projection.
* Not projected: the request-to-consumer runner has no live mode (hermetic only), so its per-request bytes are unknown; its own ceilings are declared in budget.consumer_sampling and not spent.
* Consumer sampling block: DECLARED_NOT_SPENT — 8 GiB, $0.05 at list, 900 s per cell, 3600 s total; inside the ceilings above and separate from them. Declared by the FS-1 slice (2026-09-09) for the live consumer campaign (FS-2) and not spent: the hermetic runner submits no job. It sits inside the campaign ceilings above and is separate from them, so a consumer campaign cannot draw silently on the retrieval allowance. C=5 gets no separate line until C=1 completes; the restricted-identity mode (FS-3) needs its own.

## Campaigns

Every retained campaign, oldest first, read from evidence/sql-baseline/run_<run_id>.json and its attempts in evidence/requests.jsonl. Bytes and USD are what the campaign's ledger charged from terminal job statistics; liability is room held for jobs whose billing was never established (Astra PR55 RR).

| Campaign | Started (UTC) | Wall s | State | Preflight | Cells (state / n / reason) | Attempts ok/retained | Jobs in attempts | Bytes charged | USD list | Liability | Routing verified | Edition |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| `sqlbase-20260909T062840Z-a3fc21f5` | 2026-09-09T06:28:40.895240+00:00 | 18.2 | **INCOMPLETE** | — | `sqlbase_forced_c1` INCOMPLETE n=44 BYTES_BUDGET_UNRESOLVED; `sqlbase_forced_c5` NOT_RUN_BUDGET n=0 BYTES_BUDGET_UNRESOLVED; `sqlbase_natural_c1` NOT_RUN_BUDGET n=0 BYTES_BUDGET_UNRESOLVED; `sqlbase_natural_c5` NOT_RUN_BUDGET n=0 BYTES_BUDGET_UNRESOLVED | 0/64 | 64 | 0 MiB | $0.0000 | 64 GiB / 64 jobs | 0/64 | — |
| `sqlbase-20260909-063150-d30baa0e` | 2026-09-09T06:31:50.091592+00:00 | 19.0 | **INCOMPLETE** | — | `sqlbase_forced_c1` INCOMPLETE n=44 BYTES_BUDGET_UNRESOLVED; `sqlbase_forced_c5` NOT_RUN_BUDGET n=0 BYTES_BUDGET_UNRESOLVED; `sqlbase_natural_c1` NOT_RUN_BUDGET n=0 BYTES_BUDGET_UNRESOLVED; `sqlbase_natural_c5` NOT_RUN_BUDGET n=0 BYTES_BUDGET_UNRESOLVED | 0/64 | 64 | 0 MiB | $0.0000 | 64 GiB / 64 jobs | 0/64 | — |
| `sqlbase-20260909-064104-4266675c` | 2026-09-09T06:41:04.570700+00:00 | 0.9 | **INCOMPLETE** | DENIED (ON_DEMAND_OVERRIDE_DENIED) | `sqlbase_forced_c1` NOT_RUN_PREFLIGHT n=0 ON_DEMAND_OVERRIDE_DENIED; `sqlbase_forced_c5` NOT_RUN_PREFLIGHT n=0 ON_DEMAND_OVERRIDE_DENIED; `sqlbase_natural_c1` NOT_RUN_PREFLIGHT n=0 ON_DEMAND_OVERRIDE_DENIED; `sqlbase_natural_c5` NOT_RUN_PREFLIGHT n=0 ON_DEMAND_OVERRIDE_DENIED | 0/0 | 0 | 0 MiB | $0.0000 | 0 GiB / 0 jobs | 0/0 | — |
| `sqlbase-20260909-065734-c50d0411` | 2026-09-09T06:57:34.200121+00:00 | 1325.7 | **COMPLETE** | OK | `sqlbase_forced_c1` COMPLETE n=100; `sqlbase_forced_c5` COMPLETE n=100; `sqlbase_natural_c1` COMPLETE n=100; `sqlbase_natural_c5` COMPLETE n=100 | 479/480 | 1678 | 28,770 MiB | $0.1715 | 0 GiB / 0 jobs | 1678/1678 | on-demand |

* `sqlbase-20260909T062840Z-a3fc21f5` first retained error: `BadRequest: 400 POST https://bigquery.googleapis.com/bigquery/v2/projects/test-project-0728-467323/jobs?prettyPrint=false: Label value "sqlbase-20260909T062840Z-a3fc21f5_sqlbase_forced_c1" has invalid characters. Location: US Job ID: okf_graph_sqlbase-20260909T062840Z-a3fc21f5_sqlbase_forced_c1_1af6`
* `sqlbase-20260909-063150-d30baa0e` first retained error: `BadRequest: 400 POST https://bigquery.googleapis.com/bigquery/v2/projects/test-project-0728-467323/jobs?prettyPrint=false: Override to 'none' is not enabled. The option 'reservation_override_mode' is set to 'RESERVATION_OVERRIDE_MODE_UNSPECIFIED'. See https://cloud.google.com/bigquery/docs/default-c`
* `sqlbase-20260909-064104-4266675c` preflight: `400 POST https://bigquery.googleapis.com/bigquery/v2/projects/test-project-0728-467323/jobs?prettyPrint=false: Override to 'none' is not enabled. The option 'reservation_override_mode' is set to 'RESERVATION_OVERRIDE_MODE_UNSPECIFIED'. See https://cloud.google.com/bigquery/docs/default-configuration for configuration details. Location: US Job ID: 53820a40-a9e3-436b-954d-056dd8fffe16`
* `sqlbase-20260909-065734-c50d0411` first retained error: `ServiceUnavailable: 503 GET https://bigquery.googleapis.com/bigquery/v2/projects/test-project-0728-467323/queries/okf_graph_sqlbase-20260909-065734-c50d0411_sqlbase_natural_c5_654dd579efcc4fadbc54003a599dda17?fields=jobReference%2CtotalRows%2CpageToken%2Crows&location=US&formatOptions.useInt64Timest`

## Recorded prior observations

Recorded before this plan existed, on the same corpus and engine. They are retained here so the cells start from evidence rather than from nothing. None of them fills a cell.

| Source | Shape | C | n | retrieval ms | Jobs | Bytes billed | Edition | Fills a cell? |
|---|---|---|---|---|---|---|---|---|
| `evidence/landmine_forced_fallback.json` | forced | 1 | 1 | 2,615 | 3 | 50 MiB | on-demand | **no** |
| `evidence/all_all-0017.json#fallback_forced` | forced | 1 | 1 | 2,129 | 3 | 50 MiB | ENTERPRISE | **no** |
| `evidence/natural_question_fallback.json` | natural | 1 | 1 | 5,665 | 6 | 110 MiB | on-demand | **no** |

Why none of them fills a cell: n=1 at C=1 from an integration run, not a sample from this cell: no warmups, no declared sample size, no failure denominator, and not comparable with the other shape.

One correction the card carries rather than repeats: `evidence/report.md` and `evidence/comparison.md` describe
both forced observations as on-demand. Every job in `all_all-0017.json#fallback_forced` carries the spike's
Enterprise reservation, so that observation ran on Enterprise capacity. The edition column above is read from
the jobs in each record. The retained records are left as they are; this is the correction beside them.

## Optional GQL comparison

**OPTIONAL_LATER.** Any GQL comparison must match this seed shape, corpus, authorization and workload, and account for its Enterprise reservation cost separately. The recorded GQL C=1 cell is 28 of 100 attempts and is not a completed cell; it is not a comparator.
