Phase 42 has been the longest phase of this project. Not because the architecture kept breaking — it held — but because the last mile turned out to live somewhere we weren't testing.
Where the release line actually sits
The current release candidate is 42.0.0-rc.9. Between rc.1 and rc.9 the work was mostly the same category of thing: closing contracts.
The largest was Ask / Plan / Agent — three modes that had grown up separately and were quietly disagreeing about who owned session identity. A plan request could serialize a session into the request body while the client injected the real kernel session into a header. The backend correctly rejected the mismatch. The failure surfaced to a user as HTTP 400: Bad Request.
The fix was to make the header authoritative and never serialize identity into a body. Ask, Plan, and Agent now share one interaction contract, and each mode is qualified through a real browser against both the dev stack and the true packaged build.
Nineteen out of nineteen passed.
What nineteen tests could not see
Then a human sat down and clicked.
New Project → Code → Create a new folder. Three steps. It failed immediately:
- The location field was prefilled with
/tmp/nikki_ws_editor_demo, a path that does not exist - The embedded browser returned
HTTP 400: Bad Request - Create Project still appeared enabled
Every one of those is invisible to a qualification harness that constructs requests directly. The harness never types into a prefilled field. It never sees a button that lies. It never has to reconcile "the UI says ready" against "the backend says no."
That third item is the one worth sitting with. A disabled button is a promise. A looks-enabled button that fails on click is a broken contract wearing a promise's clothes — and no unit test measures whether a promise is honest.
What changed
The interaction contract now covers the moment before execution: project and workspace creation is one reconciled transaction, project-scoped execution gets an immutable run workspace, and frontend state stays bound to what the kernel actually accepted.
The candidate that came out of this was human-accepted — the first time in the project's history that a milestone was signed off by a person rather than a harness.
The lesson
We spent months on the model and the kernel, correctly. The bottleneck was never there. It was the control plane a human touches with a finite amount of patience — which is a different kind of correctness, and one that only a human can grade.
If it wasn't logged, it didn't happen. But if a person couldn't get in, it didn't happen either.
Keep reading
More from the lab