I Don't Write Code. I Direct It.
I don't write code.
Open my editor on any given day and you won't catch me typing a function body. You won't find me arguing with a type error or hand-rolling a loop. I haven't memorized the call graph of this system, and I couldn't recite the signature of UnifiedChatBackend.chat() from memory if you paid me.
And yet: in front of you is AitherOS — 244 microservices across a layered stack, ~8.9M lines of code in Python, TypeScript, and PowerShell, 466 automation scripts, 1026 test files, a roster of agents that boot in dependency order, feel pain when they're degraded, restart themselves, and argue with each other about your code before they ship it.
One person directs all of it. That person doesn't write code.
So let me get ahead of the obvious reaction.
"That's just AI slop."
I've heard it. You're thinking it. It's the reflexive dismissal whenever someone shows a large system built with AI and admits they didn't type it line by line. If a human didn't author it, it must be a mountain of plausible-looking garbage held together with hope.
Here's the thing. I agree that slop exists. I've seen it. I've generated it. So let me define it precisely, because the definition is the whole argument:
Slop is generated output that is unverified, undirected, duplicated, and untested. It looks like the thing. It is not the thing. Nobody decided its shape, nobody checked it against reality, and nobody can tell you why it's correct — because it isn't, reliably.
Read that again and notice what's not in the definition. It says nothing about who typed it. Slop isn't an authorship property. It's a process property. A human can hand-write slop — most legacy disasters are exactly that. And an AI, pointed correctly and held to account, can produce the opposite of slop.
The question was never "did a human's fingers produce these characters?" The question is: was this directed, verified, and is it the single, knowable source of truth for what it claims to be?
That's the bar. The rest of this post is me clearing it, in public, with receipts.
Why it actually works: five things I build instead of code
I don't write functions. I build the conditions under which generated code can't rot. Here are the five that do the heavy lifting.
1. A single source of truth, and everything else is derived
There is exactly one file that defines what services exist in this system: config/services.yaml. Ports, dependencies, boot order, which layer something lives in — all of it, one file.
Nothing else is allowed to assert that information. Documentation doesn't restate it. The dashboard doesn't hardcode it. The port resolver reads it. The architecture stats are generated from it:
# scripts/generate_architecture_stats.py
data = load_yaml(SERVICES_YAML) # services.yaml — the only source
services = data.get("services", {})
total_services = len(services) # never typed by hand, anywhere
This is the thing most people skip, and it's the thing that makes everything else possible. The reason most codebases drift into slop isn't that AI touched them — it's that the same fact lives in fourteen places that quietly disagree. When truth has one home, contradictions can't accumulate. There's nowhere for them to hide.
2. Generated, not hand-maintained — a true story
Let me tell you exactly how this paid off, the same week I wrote this post.
The homepage of this very site has a stats strip. One of the numbers — automation scripts — was reading zero. Not a small number. Zero. On the public marketing page.
A slop project never notices. A slop project has that number hardcoded in nine places, three of them wrong, and nobody can tell which.
Here's what actually happened. We'd moved the AitherZero runtime to a new directory. The stats generator still pointed at the old path, found nothing, and honestly reported zero. The fix was one line — teach the generator to find the relocated directory:
def _resolve_aitherzero_root() -> Path:
for c in [PROJECT_ROOT / "AitherZero",
PROJECT_ROOT / ".PRODUCTS" / ".AITHERZERO"]:
if (c / "library" / "automation-scripts").exists():
return c
return PROJECT_ROOT / "AitherZero" # legacy fallback
Regenerate, and the number corrected itself everywhere it appears — homepage, product page, docs — because none of those places store the number. They display a generated one. Every generated file in this repo opens with the same line:
// AUTO-GENERATED by generate_architecture_stats.py — DO NOT EDIT
That header is a promise: the AI is never the source of a number. It's the messenger. The source is the filesystem and one YAML file. When the messenger is wrong, you fix the messenger, once, and reality reasserts itself. That's the opposite of slop — slop is when the number is decided by whoever typed last.
3. Externalized memory
I don't hold 244 services in my head. Neither does the AI. Nobody could, and pretending otherwise is how you get confident, wrong answers.
So the system remembers for us. There's a memory graph that records why decisions were made. There are rules files — .claude/rules/ — that encode the non-obvious operational truths: which code is baked into a container image versus bind-mounted, why a particular standby service exiting cleanly is normal and not a failure, the order to try things when something breaks. There's a dispatch ladder that says exactly which tool to reach for first and what to fall back to.
This is the difference between an operator who's been here for years and a tourist. The veteran doesn't re-read the whole repo every morning — they navigate by a map they've written down. I made the AI a veteran by writing the map down where it can always find it. Context that lives in someone's head is a single point of failure. Context that's written down is infrastructure.
4. I'm the planner and the watchdog — not the oracle
The single most important sentence in my whole setup is this one, and it's written into the project's own instructions:
Claude Code is the planner and watchdog. The agents are the hands.
I do not ask the AI to be the system or to hold the system. I ask it to navigate by structure, search, and delegation — exactly the way a senior engineer works in a codebase too large for any one skull. Find the relevant file. Trace the one caller that matters. Hand the mechanical work to a specialist. Check the result.
This is why "9 million lines" is a category error as an objection. Nobody reads 9 million lines — not me, not the AI, not the twenty-person team the skeptic imagines instead. You don't manage scale by comprehension. You manage it by organization plus search plus verification. A well-indexed 9M-line system is dramatically more workable than a 50,000-line ball of mud, because the mud has no map and rewards no discipline.
5. Verification is built in, so wrong answers get caught instead of shipped
Generation is cheap. Generation is not the bottleneck and never was. Checking is the bottleneck — and the entire system is built to make checking cheap and automatic.
There's a quality gate that runs before anything is called done: lint, the relevant tests, type checks. There's a testing policy I'm genuinely proud of, because it's the anti-slop rule in its purest form:
NO-FALLBACK. A test may not silently skip itself. No
except: pass. No quietly returning a fake success. A skip inside a test body is converted to a hard failure.
Slop survives by looking like it passed. This rule makes looking-like-it-passed impossible: a test either genuinely verifies the thing or it fails loudly. On top of that, the heavier reviews are adversarial — a reviewer whose explicit job is to refute a claim, defaulting to "rejected" when it's unsure. Findings have to survive a skeptic before they count.
When checking is cheap, a wrong answer is a caught answer. That single property — not the model, not the line count — is what makes high-velocity AI development safe instead of reckless.
What I actually do all day
If I'm not typing functions, what's the job?
The job is judgment. I write the specs and set the constraints. I decide architecture — what's one service versus three, what's a single source of truth versus a derived view, where a boundary goes. I review and I gate. I decide what "done" means and refuse to move until it's met. I notice when a number reads zero and ask why, instead of editing it to look right.
That's not a smaller job than coding. It's the part of engineering that was always the actual work — the typing was just the interface. AI didn't remove the engineering. It removed the transcription. What's left is the part that needs taste, and taste is the one thing the model doesn't supply.
The honest part — because honesty is the whole point
Let me be transparent about that "~8.9M lines" figure, because being straight about your own numbers is itself the anti-slop signal.
That count is raw lines — Python, TypeScript, PowerShell — and it includes blank lines, comments, and generated files (some of which this very post described generating). The hand-authored, load-bearing core is meaningfully smaller. I'm not going to pretend a single person hand-crafted 9 million artisanal lines, because that would be exactly the kind of undirected, unverified claim I'm arguing against.
Want a sharper example of the same honesty? Ask how many agents this thing has. A slop project picks the most impressive number and stops. The true answer is three numbers, and the site publishes all three:
- 20 run as their own always-on service.
- 54 have a distinct identity — including the ones dispatched on shared infrastructure, not just standalone services.
- 75 personas in the full roster.
One of those is the flattering headline. I show you the breakdown instead, because the breakdown is true and a single number would be a small lie. That instinct — publish the decomposition, not the marketing figure — is the same instinct that makes the codebase trustworthy.
The real conclusion
Slop is a process failure, not an authorship fact. It comes from generating without direction, shipping without verification, and letting the same truth rot in a dozen contradictory copies. You can produce it by hand. You can avoid it with a machine.
What makes a codebase AI-tractable — one source of truth, generated artifacts, externalized memory, planner-and-watchdog delegation, verification you can't skip — is exactly what makes it tractable for a serious twenty-person team. I didn't build an "AI-friendly" repo. I built a well-organized one. AI just happens to reward organization more brutally than humans do: it exposes every shortcut instantly, and it amplifies every bit of discipline just as fast.
So no, I don't write code. I direct it, I verify it, and I refuse to let it lie to me.
That's not the absence of engineering.
That's the whole job.