A config that hangs, named
A config whose evaluation runs away fails after a deadline, naming the file.

A config is code, and code can loop or wait on the network. A run that hangs at “loading” with no hint is the worst kind of bug.
vx bounds each config evaluation, 30 seconds by default, and fails naming the config. VX_CONFIG_WORKER_TIMEOUT_MS changes the limit.
More in Config

One command per task
A task is a shell command with edges and a cache block; nothing boots in between.

Rules that catch slow configs
Checks for configs that would make runs slow or wrong, on by default, each one optional.

No runs inside runs
A vx run inside a task of the same workspace is refused, with the reason.

Config with autocomplete
defineProject gives you completion and errors while you type.

Presets are just functions
Share task setups across projects with a TypeScript function, no new concept.

Config errors that point
A bad config fails at load with the file, the line and the key, no stack trace.