A Talk · For Builders

The smarter the sandbox,
the dumber the AI.

Everyone is racing for smarter models. I went the other way. I made the environment so smart that a commodity model ships production code — and I shipped a full operating system, alone, in months. Here are the five techniques.

The industry bet

Smarter models.

Bigger context windows. Bigger parameter counts. Bigger benchmarks. The assumption: if the model is smart enough, it figures out the project. The result: huge bills, drift, hallucination, and a junior engineer's worth of work for a senior engineer's worth of cost.

The other bet

Smarter environments.

Make the project so well-structured that the model has almost nothing to decide. Specs are truth. The filesystem is the workflow engine. Templates make drift impossible. The model's job shrinks to "fill in the next blank." Smaller models. Less context. More throughput.

▸ Technique 01 · Where truth lives

Specs are the source. Code is downstream.

Most teams treat code as truth and docs as commentary. We invert it. Every component in amiaOS has a living JSON spec — the namesake — that describes what it is, what it does, where it lives, and how it integrates. Humans write intent in the spec. The AI reads the spec and writes code to match.

When the spec changes, the code follows. When the code changes, a daemon updates the spec back. They never disagree, because one is generated from the other.

"If a binary, config, or man page is not listed in the spec, it does not exist in the system. No exceptions."
▸ Technique 02 · Where work lives

The filesystem is the workflow engine.

No Jira. No Linear. No project management tool. Every component has four files. A daemon watches them with inotify. When one changes, the next one updates automatically. The AI reads one file — the master changelog — and knows everything that's live in the entire system.

audit.json open problems only — what's broken right now
update.json scoped fix — phased plan with version bump
current.json derived state — auto-generated, never touched
changelog.json master view — what every AI reads first
▸ a daemon watches every file · cascades state · zero servers · zero APIs

When a new AI session opens, it reads the changelog. The changelog points to the active update. The update points to the spec. Within three file reads, the AI knows what to do, where the code lives, and how to verify the result. There is nothing for it to figure out.

▸ Technique 03 · Why drift can't happen

Templates that make improvisation impossible.

Every spec has the same eight sections. Every ticket has the same shape. Every update has the same phased structure. There is no "creative way" to write a spec because there is nothing creative about it — the template enforces itself, and a daemon flags violations the moment they appear.

This is the move: remove the model's degrees of freedom. A small model can't go off-pattern when there's no pattern to invent. It just fills in the next field.

"If unclear, ASK. Do not assume. Do not guess. Do not improvise." — the prime directive
▸ Technique 04 · How roles stay clean

Separate roles by what they're allowed to read.

There are two AIs in this system. A project manager and an engineer. They never step on each other — not because they're polite, but because they're physically not allowed to read each other's files. The PM cannot read source code. The engineer cannot rewrite the plan. Each one's context window stays clean. Each one's decisions stay separated from the other's implementation.

▸ Project manager

Sees the whole. Touches almost nothing.

  • reads specs, tickets, plans
  • writes the ticket file only
  • researches outward — web, docs
  • cannot read source code
  • cannot run shell commands
  • cannot edit anything else
▸ Engineer

Touches everything. Decides nothing.

  • writes code, builds, tests
  • marks phases complete
  • opens tickets to ask questions
  • cannot rewrite the plan
  • cannot improvise scope
  • cannot bypass the spec

The only channel between them is the ticket file. The engineer raises a question. The PM answers in the ticket. The PM never opens a code file. The engineer never invents a direction. The boundary holds because the tools enforce it.

▸ Technique 05 · Why nothing rots

Git is the archive. Working files are ephemeral.

The ticket file holds open tickets only. When a ticket is resolved, it gets deleted from the file — not archived, not preserved, not commented out. The same with the plan: when phases complete, the plan is overwritten by the next plan. There is no history section. There is no "deprecated" pile. There is no rot.

Git already solves the archive problem. Duplicating archival in working files is how stale references mislead future readers. The working file always shows current truth. Past truth lives in commits.

"audit.json entries that linger after resolution mislead future readers — the AI reads 'RESOLVED' as relevant context and mixes it with live work."
"The model on the other end of my pipe is small. It is commodity. It does not matter — because by the time it's invoked, the environment has already done ninety percent of the thinking. That is the leverage. That is how one person ships an operating system."
▸ The thesis, in practice