What a model writes, before it costs anything
One model was asked for architectures in plain English, 4 tasks,
no human in the loop. Every graph they returned went through the same pre-flight gate
/api/v1/check applies, offline, about ten milliseconds each.
The author changed
Every distinct structure a model proposed was one our own deterministic generator cannot produce for the same sentence, at any scale. That share is not noisy and does not depend on which model: it is 100% in every run recorded here. Whatever else is true, the thing writing the architecture is no longer the thing we can enumerate.
How often a machine-written architecture will not run
This one is noisy, and it is quoted with its width for that reason. It ranges from 2.8% to 26.4% across the models below, and a single model moves by more than ten points between runs on the same four sentences. Anyone quoting one row of this table as "the refusal rate" is quoting a different claim than the data supports.
| who wrote the architecture | returned | refused before dispatch | across runs | novel / distinct |
|---|---|---|---|---|
| xai 2026-09-07 | 72 | 26.4% | 16.7% to 33.3% over 3 runs | 69 / 69 |
| openrouter 2026-09-06 | 72 | 13.9% | 8.3% to 20.8% over 3 runs | 64 / 64 |
| anthropic 2026-09-04 | 66 | 18.2% | 8.3% to 29.2% over 3 runs | 66 / 66 |
| xai 2026-09-04 | 72 | 2.8% | 0.0% to 4.2% over 3 runs | 70 / 70 |
| neurarch-seeded our own generator, the baseline | 40 | 0.0% | one run | 0 / 23 |
Refused means pre-flight blockers only: the graph does not forward-pass. It is not a judgement about whether a legal design is any good. We publish how bad we are at that separately, at /calibration.html.
Every refusal, and the run it would have started
13 of the 29 refusals below are the same check,
structure-missing-params. A model that writes a residual or a dense block and does not
make the branches agree is one specific, nameable habit, not a random defect rate, which is
why it can be checked in ten milliseconds and why the same check keeps earning its place.
| the design, and what it was for | why it was refused | the run that did not happen |
|---|---|---|
gru-attention-linearsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "selfAttention" is missing numHeads |
$2.57 2.3h, A10G (24GB) |
emb_cnn_poolsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "emb" is missing numEmbeddings, embeddingDim |
$1.69 1.5h, A10G (24GB) |
emb_lstmsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params 2 layers are missing required parameters |
$1.61 1.5h, A10G (24GB) |
deep_cnn_bnsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "emb" is missing numEmbeddings, embeddingDim |
$1.65 1.5h, A10G (24GB) |
wide_mlpsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "emb" is missing numEmbeddings, embeddingDim |
$2.24 2.0h, A10G (24GB) |
emb_gru_downsamplesort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params 2 layers are missing required parameters |
$1.51 1.4h, A10G (24GB) |
shallow_cnn_dropoutsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "emb" is missing numEmbeddings, embeddingDim |
$1.96 1.8h, A10G (24GB) |
cnn_shallowsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "embedding" is missing numEmbeddings |
$1.64 1.5h, A10G (24GB) |
cnn_deep_normsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "embedding" is missing numEmbeddings |
$1.73 1.6h, A10G (24GB) |
lstm_bidirectionalsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "embedding" is missing numEmbeddings |
$2.54 2.3h, A10G (24GB) |
transformer_encodersort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
unknown-layer-type Shape problem: transformerencoderstructure-missing-params 2 layers are missing required parameters |
not priceable |
hybrid_cnn_lstmsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "embedding" is missing numEmbeddings |
$1.54 1.4h, A10G (24GB) |
wide_mlp_poolsort a support conversation into one of 60 queues from its first 512 tokens, 3M documents |
structure-missing-params "embedding" is missing numEmbeddings |
$1.46 1.3h, A10G (24GB) |
shallow_pool_cnnfind surface defects in 512x512 colour line-scan photos, 800k images |
invalid-output-shape Shape problem: avgpool2d |
$1.93 1.8h, A10G (24GB) |
deep_bn_cnnfind surface defects in 512x512 colour line-scan photos, 800k images |
invalid-output-shape Shape problem: avgpool2d |
$4.08 3.7h, A10G (24GB) |
high_channel_dropoutfind surface defects in 512x512 colour line-scan photos, 800k images |
invalid-output-shape Shape problem: avgpool2d |
$3.73 3.4h, A10G (24GB) |
narrow_deep_gapfind surface defects in 512x512 colour line-scan photos, 800k images |
unknown-layer-type Shape problem: gap |
$1.99 1.8h, A10G (24GB) |
wide_shallow_gapfind surface defects in 512x512 colour line-scan photos, 800k images |
unknown-layer-type Shape problem: gap |
$15.49 14.1h, A10G (24GB) |
mid_residualfind surface defects in 512x512 colour line-scan photos, 800k images |
merge-shape-mismatch Shape problem: addmerge-shape-mismatch Shape problem: add |
$4.14 3.8h, A10G (24GB) |
ResidualBlockNetclassify 32x32 colour images into 10 classes |
merge-shape-mismatch Shape problem: add |
$0.04 3m, A10G (24GB) |
DenseBlockNetclassify 32x32 colour images into 10 classes |
merge-shape-mismatch Shape problem: concatenate |
$0.04 3m, A10G (24GB) |
Parallel CNNclassify 32x32 colour images into 10 classes |
merge-shape-mismatch Shape problem: concatenate |
$0.04 3m, A10G (24GB) |
ResidualBlockclassify 32x32 colour images into 10 classes |
merge-shape-mismatch Shape problem: add |
$0.04 3m, A10G (24GB) |
ResidualConvrecognise handwritten digits |
merge-shape-mismatch Shape problem: add |
$0.04 3m, A10G (24GB) |
Wide CNN with Skip Connectionsort 16x16 RGB product thumbnails into 5 categories |
merge-shape-mismatch Shape problem: concatenate |
$0.04 3m, A10G (24GB) |
Residual-like CNNsort 16x16 RGB product thumbnails into 5 categories |
merge-shape-mismatch Shape problem: add |
$0.04 3m, A10G (24GB) |
LSTMClassifiertell spam apart from real email from a 300-dim feature vector |
unknown-layer-type Shape problem: select |
$0.04 3m, A10G (24GB) |
TransformerTinytell spam apart from real email from a 300-dim feature vector |
unknown-layer-type Shape problem: transformerEncoderLayer |
$0.04 3m, A10G (24GB) |
ResidualClassifiertell spam apart from real email from a 300-dim feature vector |
merge-shape-mismatch Shape problem: add |
$0.04 3m, A10G (24GB) |
Quoted, this run (2026-09-07): $53.48 (1 refusals too broken to price, counted as zero)
| run | quoted | refusals | on these sentences |
|---|---|---|---|
| 2026-09-07 | $53.48 | 19 | rank the next products to show a user from a 256-feature vector, over 2 billion impressions sort a support conversation into one of 60 queues from its first 512 tokens, 3M documents score card transactions for fraud from a 200-feature vector, 40M transactions find surface defects in 512x512 colour line-scan photos, 800k images |
| 2026-09-06 | $0.47 | 10 | classify 32x32 colour images into 10 classes recognise handwritten digits sort 16x16 RGB product thumbnails into 5 categories tell spam apart from real email from a 300-dim feature vector |
| 2026-09-04 | <$0.01 | 0 | classify 32x32 colour images into 10 classes recognise handwritten digits sort 16x16 RGB product thumbnails into 5 categories tell spam apart from real email from a 300-dim feature vector |
Never add two rows of that table together. The sentences changed between runs, and a total across both is a figure about a task set that never existed.
The quote is pre-flight's own figure for each refused run at list GPU prices, the same figure the product shows for the same graph. It is what would have been dispatched, not a saving we assert, and a refusal that cannot be priced counts as zero rather than as a guess.
What this is not
- Not out-of-sample. 4 sentences, three models, three repeats each. The range in the table is the honest width of it.
- Not a measured bill. Every dollar here is pre-flight's quote for a run that did not happen, at list GPU prices, on the workload the sentence states. The refusal is measured; the price is arithmetic, and it scales with the run being refused rather than with the refusal, which is why the same check is worth 47 cents on a tutorial and four figures on a production workload.
- Not prevented spend in the product's sense. These graphs were refused when a model proposed them, not when a person pressed Train, and the counting rule we sell on deliberately excludes proposal-time refusals: six proposed and one trained means refusing five prevented nothing. What this page measures is what a machine author would have dispatched if nothing had checked it.
- Not a claim about accuracy. Nothing here says a design that passes will train well.
- Not a claim that a human could not have caught these. A dummy forward pass catches most of them too. The point is that no one runs a dummy forward pass when the author is a machine and the next step is a dispatch.
Machine-readable: /loop.json.
Run npm run bench:proposer to reproduce. Newest run 2026-09-07.