← Roadmap
🔍

e2e Static Check

⏳ Upcoming

An ordering mistake in an end-to-end test shouldn’t cost you a Docker boot. Today a wrong import order, a deploy without its prerequisite, or a missing required config bites at runtime — thirty seconds or more into a heavy container run, when the failing celilo call finally executes. The static check catches those same mistakes in milliseconds, before a single container starts.

Why check before Docker boots

Most sequencing errors are decidable from manifest data and the call sequence alone — no network, no live state. If knot-unbound-internal requires a dns_registrar provider, and nothing earlier in the sequence imports one, that’s knowable the instant you write the test. Waiting for the topology to spin up, modules to publish, and machines to register just to be told what a manifest already implies is wasted time and a broken feedback loop.

The classes of mistake worth catching are all statically detectable:

How it works

You hand the check a sequence of celilo invocations. It walks them in order, maintaining a model of celilo’s state — what’s imported, what’s deployed, which config and secrets are staged, which aspects are approved — and applies the rule for each step against that model. Violations are collected, not thrown one at a time, so you see every problem at once, each with the offending step and a concrete fix (“insert module deploy namecheap before this line”).

If the sequence is clean, the steps run exactly as they do today. If it isn’t, the check aborts before docker compose up — no containers started, the full list of problems in hand, at edit-time speed.