The README claimed thirteen gates for a while before the code actually ran thirteen. Gate 13 existed, was written, had tests, and simply wasn't wired into the command that runs the other twelve, so verify silently ran twelve and called it done. Nothing in the code was wrong, it was just never called. I only caught it by running verify live and noticing a row missing from the printed table, which is exactly the kind of thing that doesn't show up from reading the code.
Running the local no-account demo end to end, not just typechecking it, found three more. Node's execFileSync on npm or npx needs shell: true on Windows, or it fails immediately, either silently or with the wrong error depending on how you got it wrong. A required environment variable was being blanked to an empty string for the demo, and Next.js's own startup validation, not the CLI's, rejected it. And disabling the voice and phone vendors for the demo by deleting those variables instead of setting them empty let Node's own env loader quietly refill them from a real .env.local file, which meant a local "demo mode" run could turn real voice calls back on without saying so.
Still open
Chat replies in local demo mode take fifteen to twenty seconds against a mock provider that has no network calls to wait on and should answer near-instantly. It isn't a cold-start effect, the second request is exactly as slow as the first. Not yet root-caused. My working guess is it's specific to the sandboxed environment I was developing in rather than a real bug, but I haven't confirmed that on a normal machine yet, so I'm saying so rather than guessing.