01 · Agree
It asks before it builds.Spec first: requirements, decisions, rationale.
You describe your idea in one sentence. The Architect asks three quick questions about you, so it talks at your level. Then it asks about the decisions that matter, one at a time, each with its recommendation. Everything is written down.
Three-question interview (level, depth, involvement), then decisions one at a time via the native question box, each with a recommendation and recorded rationale. Requirements land in .vbw/spec.md tagged [auto] or [human].
StockStarts building straight away, guessing what you meant.Requirements implicit in a chat thread; acceptance criteria rarely written.
VBWAsks first and writes down what “done” means.Explicit spec, typed requirements, decision log.
It asks what you want before it builds. Senior engineers also ask. Then they build what they wanted, and bill you for the question.
Vibe coders skip the requirements and call whatever comes out “the MVP”. The M stands for minimum. The other letters are aspirational.
02 · Plan · Red
First, it proves the tests can catch a mistake.Red: every acceptance check fails before implementation.
Before any of the app exists, the Lead writes a test for each thing you asked for, then runs it. It has to fail, because there's nothing built yet. That proves the test is real and not a rubber stamp.
The Lead decomposes the phase into file-disjoint plans and writes one acceptance check per [auto] requirement. Each is executed and must fail today, for the right reason, before the contract can be offered.
StockWrites tests after the code, if at all. They tend to agree with the code.Post-hoc tests written against the implementation; can pass vacuously.
VBWWrites tests first and proves they fail.Checks derived from the spec, verified red before any change.
A test that passes before the code exists proves nothing. It's a senior engineer's code review: instant, confident, based on nothing.
A test that passes before the code exists proves nothing. Vibe coders call that “green on the first try” and screenshot it.
03 · Approve
You approve it. Then it's locked.Approval binds to a SHA-256 contract.
The plan and every test are locked together with a digital fingerprint. You approve that. If anyone changes a single letter afterwards, your approval is cancelled and VBW asks you again. Only you can approve. The AI is blocked from doing it, however hard it tries.
Spec, plans, checks and check-file bytes hash to one contract (SHA-256); the 12-hex prefix is what you approve. Consent lives in the clone's .git, reachable only via your answer hook. Check files are write-denied by hooks during build and fix.
StockCan change a test so it passes. Nothing stops it.The agent under test can edit its own tests; no change control.
VBWTests are locked. Trying to change them is refused.Hash-bound approval; hook-enforced write protection.
Only you can approve, and the approval is bound to the hash. Senior engineers approve with “LGTM”. It stands for “looks good to me”. It means “I didn't look”.
A vibe coder's change control used to be typing “please don't touch the tests”. Claude said “Of course!” and touched the tests. Politely.
04 · Build · Green
The team builds, all at once.Green: file-disjoint parallel waves.
Several AI developers work at the same time, each on its own part and only in its own files, so nobody trips over anybody. You watch them in a strip above your typing box: who's working, on what, and for how long.
One Dev per plan, waves as wide as file boundaries allow; guards deny writes outside a plan. One commit per task with a VBW-Plan: provenance trailer. The band renders each agent's live intent, elapsed time and context.
StockOne worker, one thing at a time. Long jobs lose the thread.Single agent or ad-hoc subagents with overlapping writes.
VBWA team in parallel, each in its own lane.Scheduled waves, scope-checked commits.
Several engineers working at once, with no meetings. A senior engineer just read that and booked a 45-minute meeting to push back. Recurring.
File-disjoint waves mean no merge conflicts. Vibe coders resolve merge conflicts the traditional way: a new repo, a new name, and no mention of the old one.
05 · Prove
A program checks it. Not an AI.Proof: approved argv on a clean HEAD copy.
The kernel copies your project into a fresh, empty folder and runs every test there, so leftovers on your computer can't fake a pass. A test fails? The code gets fixed, never the test. After three failed fixes it stops and comes to you, with the evidence.
Proof runs every approved check plus the project test command in a detached clean copy of HEAD, verifies each VBW-Plan commit stayed in its plan's files, and records evidence atomically. Fix rounds can't touch checks; three failed attempts escalate to you.
Stock“All done!” based on its own opinion.Completion is model-asserted, in the working tree it modified.
VBWDone when a program with no AI says every test passed.Completion = exit 0 on a clean HEAD + scope check.
The kernel has no ego, no opinion on tabs versus spaces, and has never said “well, actually”. We'd call it a senior engineer, but it's useful.
“Works on my machine” is not a proof. For a vibe coder it's the deployment strategy, the test plan, and the only machine.
06 · Review
A strict reviewer checks it against your plan.Goal-backward QA. Deviations fail.
Passing tests isn't enough. A separate QA agent compares the finished work with the plan you approved. Anything added, missed or changed counts as a failure, even if it “seemed helpful”. Then you judge what only a human can: the look, the feel, the words.
Independent QA per phase, reviewing goal-backward against plans and recorded decisions; any undeclared or declared deviation fails. QA changes nothing, never runs on Haiku, and risky phases (auth, payments, deletion) get deep rigor with an adversarial pass.
StockReviews its own work, generously.Self-review in the same context that wrote the code.
VBWA separate reviewer that isn't allowed to touch the code.Independent, read-only, plan-anchored review.
QA rejects anything you didn't ask for. Senior engineers reject anything they didn't write, rewrite it, then reject that too. They call it mentoring.
QA fails any feature nobody asked for. In a vibe-coded app, that's called “the architecture”.