Install it, or describe it

after an original for the environments lesson

Install it step by step, or describe what you want one clean machine

one clean machineone repositorygoal: pnpm dev serving

they part company here — who executes

By hand

you execute, the README guides

youopen README.md, find “Getting started”
younvm install 20
younpm i -g pnpm
ERR_PNPM_BAD_PM_VERSION expected 10.4.1
yousearch the error, read two threads
younpm i -g pnpm@10.4.1
Error: DATABASE_URL is not defined
youask a colleague on Slack, wait
youpaste three values into .env
youpnpm install && pnpm dev
ready on http://localhost:3000
youwalk them through it over a call, twice

The next person repeats every trap you already paid for.

decisions taken by you9
when it breaksyou search
what you are left holdinga working machine

Described

you decide, the agent executes

youclaude “get this project running”
agentread package.json → packageManager: pnpm@10.4.1
agentnpm i -g pnpm@10.4.1
agentfound .env.example — 3 values unset
agentDATABASE_URL / S3_BUCKET / AUTH_SECRET — I will not invent these
youpaste three values
agentpnpm install && pnpm dev
ready on http://localhost:3000
agentwrite scripts/setup.md from what just happened
youreview it, commit it

The next person runs one command — and improves the record.

decisions taken by you3
when it breaksit searches, you approve
what you are left holdinga machine + a replayable record

the next personA week later somebody else joins. The left column is performed again, trap for trap, because a machine cannot be handed over — only a procedure can. On the right the procedure already exists, because it was written down by the thing that carried it out.

The left column ends with a working machine. The right column ends with a working machine AND a recording of how it got that way — and only one of those two things can be handed to the next person. That is the whole claim: describing a setup produces an artefact, performing one produces only a mood.

step 5 / 5