◉ANTIGRAVITY LABJP
Articles/App Development
▣ App Development/2026-08-25Advanced

How Silently Ignored Config Keys Slip Through CI, and Where to Block Them

A key you added to a config file can be discarded without a single warning. Measured behavior across tsc, ESLint, wrangler, npm and vitest, plus a probe that verifies a setting is actually in effect and a wrapper that turns warnings into build failures.

antigravity461ci5configvitest3cloudflare-workers9

✦ Premium Article

A Cloudflare Workers deploy stopped one afternoon with "Missing entry-point to Worker script." Opening wrangler.toml showed main sitting right there. Correct spelling. Valid path. Still no deploy.

The problem was not how the key was written, but where. A [build] section had been added earlier in the file, and main came after it, which means TOML reads main as a member of the build table. Correct to a human eye, something else entirely to the parser.

The error message, meanwhile, politely suggested adding main to the file. Being told to add something that is already there is a special kind of detour.

As an indie developer, an afternoon spent that way stings. What stayed with me afterwards was not the fix, though. It was the realization that the same mismatch usually happens far more quietly.

Reproducing the failure where placement changes meaning

Here is the minimal version, confirmed against wrangler 4.125.0.

name = "probe-order"
compatibility_date = "2025-05-05"
 
[build]
command = "node scripts/stamp.mjs"
 
main = "index.js"
compatibility_flags = ["nodejs_compat"]

A dry run emits both of these at once:

▲ [WARNING] Processing wrangler.order.toml configuration:
    - Unexpected fields found in build field: "main","compatibility_flags"
✘ [ERROR] Missing entry-point to Worker script or to assets directory

The warning names the actual culprit. The red ERROR pulls your attention away from it, and the investigation starts at the entry point path instead. That is exactly where I started.

The fix is trivial: move top-level fields above [build]. What lingered was the broader observation that a config file can be read differently from how it was written, and nothing is obliged to tell you.

Bad config keys fall into three tiers

To check that observation, I introduced the same class of mistake into the tools I use most and recorded what each one did. Everything below ran on Linux with Node 22.23.2 on 2026-08-25.

ToolMistake introducedReactionExit code
TypeScript 5.9.3strictNullCheck (should be strictNullChecks)Stops with TS5025 and suggests the correct key2
TypeScript 5.9.3include placed inside compilerOptionsStops with TS50232
ESLint 9.39.5 (flat config)Two unknown keys addedAborts immediately with ConfigError2
Wrangler 4.125.0compatability_flags (misspelled)Prints a WARNING and continues0
npm 10.9.8depedencies (misspelled)Silent. Reports "up to date" and installs nothing0
Vitest 3.2.7Three invalid keys at onceSilent. Every test passes0

One transposed character, and the tools split cleanly into ones that stop you and ones that wave you through.

The npm case is the one that bothers me most. With dependencies misspelled as depedencies, npm install finished in 327ms, printed "up to date", returned exit code 0, and created no node_modules at all. A project with zero dependencies installed is recorded as a successful install.

Misspell scripts as scripst in the same file and the story changes: npm run build fails instantly with "Missing script: build". Keys that something later calls will speak up. Keys that merely declare things stay quiet.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦You will be able to verify that a config change an agent made is actually in effect, by observing behavior instead of re-reading the diff
✦You will be able to drop a few lines of gating into your own repository that stop a silently discarded config change before it reaches production
✦You will be able to tell which of your tools fail loudly, warn quietly, or say nothing at all, and narrow your probes down to the few places that need them
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Antigravity Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $15 for lifetime access
View Membership →

Related Articles

▣ App Dev2026-10-08
Three Safety Nets to Test with a Fake agy Before Running the Antigravity CLI in a Container
Before you call the Antigravity CLI (agy) from Docker or a Cloud Run job, reproduce three failure modes with a fake agy: an installer that returns gzip, a hang on tool approval, and an exit code of 0 with nothing produced. Everything here rests on official docs and on code I ran myself.
▣ App Dev2026-09-10
When the iOS 27 Date Landed, the First File I Grepped Was AGENTS.md
iOS 27 and iPadOS 27 ship on September 14. Old version numbers linger in your source, but also in the files only your agent reads. Here is a script that counts both zones, plus the one line keyword search will never find.
▣ App Dev2026-09-08
Answering the age-rating questionnaire from a file in the repo, not from memory
The App Store age-rating questionnaire became mandatory in September 2026. Here is how I moved the answers into a declaration file in the repo and had a stdlib-only script argue back, with the real output.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links