The standard

Every check, named.

A number with no names behind it is a claim. So here are all eleven, what each one actually does, and, further down, what of that comes with your project.

The eleven

Nothing ships unless all eleven pass.

All eleven run on every single change, not once before a release. Any one failing stops the change getting in, and there is no flag that skips them quietly.

Gate runner runner-self-tests
The thing that runs the checks is itself checked first. If the referee is broken, nothing it says afterwards means anything.
Push wall push-gate-self-tests
Nothing can be built on top of a change whose own checks are still running or came back red. The wall that enforces this is itself tested, including that it refuses rather than fails, because those two verdicts mean different things and must never be confused.
Build & types workspace
Everything installs, compiles and type-checks under strict settings, and the linter is clean. No warnings tolerated as "known".
Database db
Migrations apply cleanly, permission rules are proven at the database layer rather than assumed, and the audit chain is verified unbroken.
Doors api
Every way into the system is tested: the error format, the protection against a request being accidentally processed twice, and the record each action leaves.
Deliberate sabotage mutation
Eighty-eight faults are planted in the code one at a time, and a named test has to catch each one. If a test wouldn't notice a real bug, it isn't proof of anything. All eighty-eight are caught.
Real journeys e2e
A real browser drives the actual product through the paths a person would take. No retries: a test that only passes on the second attempt has told you something.
Sudden death sigkill
The application is killed outright, without warning, in the middle of live work, and has to come back with its records intact. Three of these run: one during a storm of sign-ups, one while a team member is being added, one with the support assistant killed mid-answer. Nothing may be left half-written.
Contract conformance contract-conformance
Anything built to plug into the platform is driven against the published contract before it can be listed. Fifteen cases, run against a real system and a real database, not stand-ins.
Operator command checkpoint-smoke
The command we use to stand the whole system up is itself booted end to end and asked a real question, because a step no check ever runs is a step that quietly rots.
Tax position vat-verification
The billing system's tax assumptions, checked against researched and cited South African law. It runs with the other ten, on every change.
The split

What of this comes with your project.

Those eleven run on Dachshund, our own platform and the strictest thing we've built. It would be dishonest to tell you a three-week website gets all of them. Here's the real split.

Every project

Whatever the size

Automated tests on the paths that would cost you money if they broke, running on every change. Nothing ships that hasn't passed them. Your data's integrity tested rather than assumed, including what happens when something fails halfway through. Documentation written for the next engineer, not for us. Code you own, in your repository, from day one.

Money, accounts or customer data

Projects that carry real risk

Permission rules enforced at the database, not in the interface, so a bug in a screen cannot show one customer another customer's data. A permanent record of who did what. Failure testing: the system killed mid-operation to prove nothing is left half-written. And deliberate fault injection, where we break it on purpose to prove the tests would catch it.

If your project doesn't need the heavy end of that, we'll tell you, and we won't charge you for it.

Check it yourself

This website is the smallest example.

No analytics. No cookies. No tracking. Not a single request to a server that isn't ours. The fonts, the styles and the images all come from this domain, and a strict content-security policy blocks anything else from loading.

You don't have to take our word for it. Open your browser's developer tools, look at the network tab, and reload. It takes thirty seconds.