Spider 2.0-Snow: what makes an instance hard?

Interim findings from an all-pairs execution study of the vxef/spider2-snow-temperature-sweep rollouts — Qwen3 {1.7B, 4B, 8B} × {thinking, no-thinking}, 100 samples per instance per cell, 523 grounded instances. Every distinct generated SQL was quoting-normalized (identifiers quoted, case preserved), compiled with Snowflake EXPLAIN, and every compile survivor was executed and scored against gold (Spider 2's own comparison); the raw as-is SQL got its own EXPLAIN sweep. All records are in the dataset PR and browsable row-by-row in the explorer (quoted-verdict filter + expected-vs-got diffs). July 16, 2026.

1 · pass@k by model and reasoning arm

The topline: mean pass@1 across instances, per cell (each cell = one model size × one reasoning arm, 100 quoting-normalized samples per instance; error bars are 95% bootstrap CIs over instances). Thinking roughly doubles-to-triples accuracy at every size — 4B-think (4.3%) beats 8B-no-think (2.8%), so the reasoning arm is worth more than a size doubling here — and the best cell, 8B-think, still sits at 6.9%. The right chart shows what a sampling budget buys: the expected share of instances solved at k samples (mean unbiased pass@k); at k = 100 the best cell reaches ~22% of instances, and the curves are still rising — sampling is nowhere near exhausted on the solvable set.

2 · The funnel: two walls, not one

Reading each cell's samples left to right: finish → parse (sqlglot) → static grounding → compile (Snowflake EXPLAIN) → ranmatched gold (≡ pass@1). The compile stage is not another static check: EXPLAIN is a dry run through Snowflake's actual query compiler against the live account catalog — parsing in the real dialect, resolving every table/column name under the engine's quoting and case-folding rules, type-checking expressions and function signatures, checking privileges — everything short of dispatching the plan for execution (it runs in the cloud-services layer, no warehouse needed). That makes it strictly stronger than client-side static analysis, and weaker than execution only on runtime, data-dependent failures (division by zero, casts on bad values, timeouts), which the “ran” stage then catches. The “compiles (as-is)” group is the raw SQL's compile rate — formatting alone (unquoted case-sensitive identifiers) kills 97–99% of every cell's raw queries before anything else can matter; the adjacent “compiles (quoted)” group shows the same queries after quoting normalization. What remains of the compile wall is semantic. The bar chart below is a failure-mode census of the 142k distinct failing (instance, SQL) pairs — the union across cells, deduped because identical SQL compiles once; it characterizes the corpus of errors, not any one model: 43% reference a nonexistent column and 29% a nonexistent table — schema-linking failures, not dialect (5%) or syntax (3%). Browse compile failures →

3 · Per-instance pass rates — a consistent frontier

Each cell's instances ranked by pass@1 (that cell's 100 samples; only instances with ≥1 pass drawn — the counts at zero are in the hover). Each point is an instance; click to open it in the explorer. (We deliberately don't plot pass@1 against pass@k for the same pool — both are deterministic functions of the same pass count, so that “relationship” is a parametric curve with no information beyond this ranking.) The solvable sets are nested: 90–100% of every weaker cell's solvable instances are contained in 8B-think's 114 (per-instance pass@1 Spearman 0.83 between 4B-think and 8B-think) — capability growth widens one frontier, it does not unlock different problems. Per-instance whiskers are 95% bootstrap CIs from resampling that instance's own 100 samples with replacement (equivalently c* ~ Binomial(100, c/100)); lower bounds of 0 are truncated at the axis floor, and CIs this near c = 0 are rough by nature.

cellsolvable instances (pass@100 = 1)contained in 8B-think's set
Qwen3-1.7B · nothink99 (100%)
Qwen3-1.7B · think3534 (97%)
Qwen3-4B · nothink1918 (95%)
Qwen3-4B · think9686 (90%)
Qwen3-8B · nothink4140 (98%)
Qwen3-8B · think114114 (—)

4 · What predicts hardness (and what doesn't)

Mean pass@k across instances per covariate bin, per cell; error bars are 95% bootstrap CIs resampling instances within bin. The cell's own compile rate is the strongest predictor (schema-linking again; solvable-vs-not AUC 0.86 in the 8B-think cell). Self-inconsistency (distinct-SQL rate) is the best behavioral tell. Question length acts as a threshold, not a slope. Static column-grounding — the flag the dataset ships — is ~uninformative (AUC 0.51, 8B-think). Thinking-token volume predicts nothing for 4B/8B; explicit date/window phrasing drops match-given-compiled from 0.23 to 0.11 (8B-think; same sign in 4B-think). Beyond compiling, misses are far off, not near-misses — a census of the ~30k distinct ran-but-wrong executions (union across cells): 31% have exactly the gold's shape with wrong values, and unit/rounding confusions are absent (1 case of ×100 in 3,355 scalar comparisons).

5 · The tantalizing stratum: compiles often, never matches

177 instances (8B-think) have ≥10 compiled samples and zero matches — the analytic-composition wall. They read like multi-step aggregation with precise windows and exact output contracts. This is the stratum where execution-feedback methods have signal to amplify; the never-compiles stratum needs grounding (constrained decoding over schema identifiers) instead.

instancedbcompiled /100question
sf_bq350OPEN_TARGETS_PLATFORM_196For the detailed molecule data, Please display the drug id, drug type and withdrawal status for approved drugs with a black box warning and known drug type among 'Keytruda', 'Vioxx', 'Premarin', and 'Humira'explorer →
sf_local037BRAZILIAN_E_COMMERCE94Identify the top three product categories whose most commonly used payment type has the highest number of payments across all categories, and specify the number of payments made in each category using that payment type.explorer →
sf_local097DB_IMDB92Could you analyze our data and identify which ten-year period starting from any movie release year present in the data had the largest number of films, considering consecutive ten-year periods beginning at each unique year? Only output the start year and the texplorer →
sf_bq230USDA_NASS_AGRICULTURE91Using the crops dataset, find the total 2022 production figures, measured in bushels, for corn from the 'FIELD CROPS' category and mushrooms from the 'HORTICULTURE' group for each U.S. state. Only include data rows where 'statisticcat_desc' is 'PRODUCTION', 'aexplorer →
sf_bq130COVID19_NYT89Analyze daily new COVID-19 case counts from March to May 2020, identifying the top five states by daily increases. Please compile a ranking based on how often each state appears in these daily top fives. Then, examine the state that ranks fourth overall and idexplorer →
sf_bq307STACKOVERFLOW87Find the top 10 gold badges that users most commonly earn as their first gold badge on Stack Overflow. For each of these badges, display the badge name, the number of users who earned it as their first gold badge, and the average number of days from the user'sexplorer →
sf_local059EDUCATION_BUSINESS84For the calendar year 2021, what is the overall average quantity sold of the top three best-selling hardware products (by total quantity sold) in each division?explorer →
sf_local019WWE84For the NXT title that had the shortest match (excluding titles with "title change"), what were the names of the two wrestlers involved?explorer →
sf_local034BRAZILIAN_E_COMMERCE82Could you help me calculate the average of the total number of payments made using the most preferred payment method for each product category, where the most preferred payment method in a category is the one with the highest number of payments?explorer →
sf_bq028DEPS_DEV_V181Considering only the latest release versions of NPM package, which packages are the top 8 most popular based on the Github star number, as well as their versions?explorer →
sf_bq396NHTSA_TRAFFIC_FATALITIES81Which top 3 states had the largest differences in the number of traffic accidents between rainy and clear weather during weekends in 2016? Please also provide the respective differences for each state.explorer →
sf_local358LOG81How many users are there in each age category (20s, 30s, 40s, 50s, and others)?explorer →
Method notes: eval scope was 202,532 distinct raw SQLs EXPLAINed, 182,583 distinct quoted forms, 40,580 compile survivors executed & scored — unique (instance, SQL) pairs, deduped across the six cells because identical SQL executes once (corpus counts, not performance numbers). pass@k, precisely: an instance has n = 100 samples, of which c pass. pass@k is the probability that a batch of k samples, drawn uniformly without replacement from those n, contains at least one pass — equivalently, the long-run average over repeatedly drawn batches (batches with replacement, the k samples within a batch without). Writing C(a,b) for the binomial coefficient (“a choose b”, the number of ways to pick b items from a), there are C(n,k) possible batches of which C(n−c,k) contain only failures, so pass@k = 1 − C(n−c,k)/C(n,k). We compute this exactly rather than by Monte Carlo; it is the standard unbiased estimator of true pass@k under i.i.d. sampling (Chen et al. 2021). The quoting treatment itself, quantified across the 214,542 distinct raw (instance, SQL) pairs holding verdicts in both arms: quoting rescues 19.2% (raw compile-fail → quoted OK) and harms 0.3% (616 pairs where the raw SQL compiles via case-folding of a written-lowercase name onto an uppercase-stored object, and preserving the written case inside quotes breaks the match) — a 67:1 benefit ratio. “Compile” treats executed pairs as compiled unless execution hit a SQL compilation error. Executions used a 30s statement timeout, partly on an X-Small and partly on a MEDIUM warehouse (resized mid-run); results >25k rows were scored 0 without comparison (note field, auditable). Quoting normalization is a modified-SQL diagnostic — raw as-is results are the firstpass columns. Full method & caveats: dataset PR README.