Project verification harness
Why verification infrastructure becomes disproportionately expensive as projects grow, and how Testkit amortises that machinery across projects.
The cost of verification grows faster than software
The cost of constructing trustworthy verification infrastructure grows faster than the cost of constructing the software being verified.
For a tiny task, an agent can often build both the thing and a stronger harness around it:
task complexity: 1
verification harness: 3
That is fine. You spend more effort proving the thing than building it.
But then the software grows:
task complexity: 10
verification harness: 30
Still feasible.
Then:
project complexity: 1,000
bespoke verification: 10,000+
At that point people stop building the verifier. Not because verification has become less important, but because every project would need to reinvent a second, even more complicated software system whose job is to create environments, provision dependencies, generate states, orchestrate services, run browsers, inspect databases, inject failures, collect evidence, understand regressions, manage isolation, and report what actually happened.
So development keeps scaling while verification investment collapses relative to development complexity.
The resulting failure mode
That gives you the failure mode you’re pointing at:
small task
↓
build implementation
+
build thorough verifier
↓
high confidence
large project
↓
build implementation
+
"we should really build..."
↓
unit tests + mocks + a few E2Es
↓
unknown behavioural surface
↓
bugs
Amortise the verifier across every project
And yes: Testkit can be understood as amortising the cost of the verifier across every project.
Instead of this:
Project A → bespoke verification system A
Project B → bespoke verification system B
Project C → bespoke verification system C
Project D → bespoke verification system D
you want:
┌─ Project A
├─ Project B
Testkit verifier ───┼─ Project C
├─ Project D
└─ ...
The application-specific part then becomes comparatively small: describe what must be true and provide whatever domain-specific actions/oracles Testkit cannot infer.
Testkit owns the expensive generic machinery.
One principle through a project’s lifetime
That means the same principle can hold continuously through a project’s lifetime.
At the beginning
“Implement this parser.”
Testkit can construct a small isolated test world and exhaust/generate inputs.
A few weeks later
“Add a database-backed account system.”
Same framework now provisions Postgres, migrations, seed state, services and integration scenarios.
Later
“Users sometimes lose edits when two browser tabs are open.”
Now the verifier needs multiple real browser contexts, actual backend processes, an actual database and controlled concurrency.
Later still
“Deploy this major architectural migration without changing externally observable behaviour.”
Now the verification problem may be substantially more sophisticated than the implementation change itself: old/new differential execution, production-like topology, regression cases, performance thresholds, persisted state comparison, failure injection, etc.
The developer shouldn’t have to build a miniature distributed-systems testing platform to verify that migration. That platform should already exist.
A sufficiently powerful experimental apparatus
This also explains something important about Testkit’s scope. A conventional testing library attacks:
“How do I write this test?”
Testkit is attacking something closer to:
“How do I cheaply obtain a sufficiently powerful experimental apparatus for whatever software I’m currently building?”
That is a much bigger idea.
Agents make the asymmetry worse
And there is a particularly important agentic angle. Agents make the asymmetry worse.
An agent can produce 5,000 lines of implementation surprisingly cheaply. It cannot thereby make the verification problem 5,000 lines cheaper. If anything, cheap implementation means software complexity can accumulate faster than humans traditionally allowed it to.
So without something like Testkit:
cost of producing software ↓↓↓
cost of proving software ~same
⇒ verification debt explodes
Whereas Testkit’s intended effect is:
cost of producing software ↓↓↓
cost of constructing serious verification ↓↓↓
⇒ confidence can scale with production
The central thesis
AI dramatically lowers the marginal cost of creating software, but not the marginal cost of creating bespoke infrastructure capable of thoroughly verifying that software. Testkit turns that verification infrastructure into shared reusable machinery, so rigorous behavioural verification can remain economically viable from a one-function task through to a large production system.
An empirical development loop
And there is a second-order consequence which I think is critical: if Testkit succeeds, an agent doesn’t just become better at testing after implementation. It can start choosing implementations based on whether they are experimentally verifiable.
That changes the development loop from:
agent writes code
↓
hope tests are adequate
into:
agent receives goal
↓
construct/verbalise observable success criteria
↓
Testkit provides experimental environment
↓
agent implements
↓
real system is exercised
↓
evidence contradicts or supports claim
↓
agent iterates
At that point Testkit starts looking less like a test runner and more like the empirical substrate for agentic software engineering.