Refusal is a result
One small system going through Turing, and what it looks like when software declines to be built wrong.
The fastest way to understand what Turing is for is to watch it say no.
Here is the smallest system I could think of — a to-do list. Two features, a handful of stories, one actor. It is deliberately trivial, because the point is not the system. The point is the order in which things happen to it, and the moments where the platform stops.
It starts by telling you it isn't sound
The backlog looks ordinary until you read the objectives. 95% of tasks created conform to defined attributes. 100% of task definitions include a status. Every feature carries a goal and a number, because a requirement without a scale and a target cannot be verified, only argued about — that is Tom Gilb's insight, and Turing enforces it as a data type. Above the backlog there is a banner: not sound yet. The Design, Implement and Deploy buttons are visible and disabled. Nothing downstream will run until the domain is sound, and the platform tells you so before you have written a line.
The words are fixed before anything else
A requirement in Turing opens with its ubiquitous language: these are the words the system is described in, and no others. USER is a persona. CREATE TASK is a command with two typed fields. TITLE NOT BLANK is a specification over Task. TASKCREATIONFAILED is an event — how the command is refused. Each term says which analysis declared it.
Then the use case, and this is where most tools stop and Turing doesn't. UC-01 has an actor, a trigger, an intent, an outcome — and a guard and a refusal. What happens when the title is blank is not an edge case to remember later; it is a first-class part of the requirement, with its own alternative course: TaskCreationFailed is raised, no task exists. The language models gathered this from a paragraph of prose. The grammar admitted it.
The diagram is computed, not drawn
One actor, two use cases, an «extend» for the refusal. The caption under the tab says it: from the requirements alone. If the picture and the words ever disagreed, one of them would be wrong. Here they can't, because one is a function of the other.
The model refuses to guess
The requirements are composed into Guimel — the domain language. Personas. A context. An entity with its fields. Events. Commands. Specifications as predicates. A repository. An aggregate whose handler allows a persona, requires a specification, and emits an event when the requirement is unsatisfied.
Now read the comments. SHAPE NOT STATED: nothing says what TaskCreationFailed carries, so it carries only the identity of what it is about. Name its fields in the requirement. The model could have invented a plausible payload. Every code generator you have used would have. Turing does the opposite: it derives the minimum the requirement entails, and points at the gap. A missing requirement is an unfulfilled obligation. The system's job is to name it, not to fill it.
Screens with evidence, source with none to spare
Pencil composes the interface from canonical layouts, and its suggestions come with their evidence attached: Pagination accompanies Table in 95% of this repository's own wireframes (source: measured). An observation that would change nothing says so and takes no action. A suggestion you cannot audit is a guess with good manners; these are not guesses.
And finally, code — a TaskActor on the MLambda runtime, sharded by id, with a
Receive that switches on exactly the commands the model declared and handlers that
return exactly the events it declared, the .samek specifications and the Kubernetes
deployment generated beside it. One comment in the handler is the whole philosophy:
convention-synthesized — the body carries no computation the specification did not already
imply.
Why refusing is the feature
Count the refusals in this walk-through. The banner refused to let design run. The requirement refused to leave the blank title unspecified. The model refused to invent a payload. The screen editor refused to act on an observation that changed nothing. None of these are errors. They are the platform doing the one thing a code generator cannot: declining to proceed on something it cannot justify.
That is what "verified before it is built" means in practice. Not a test suite at the end. A sequence of gates, each of which can say no, in front of every line of code. The system you get was true before it existed — or it didn't get built.
MLambda Turing is in active development; demonstrations by arrangement. Request one on a domain you describe.