My AI Workflow Broke on Real Projects. Here's What I Fixed.
The first version of my Satellite system looked great in demos. On real multi-week projects it fell apart in three specific ways. This is the breakdown — and the rebuild.
The short version
I built a system for directing AI Satellites to ship software. It worked in short demos. On real projects spanning multiple days, it broke in three specific ways. I rebuilt it from scratch. Here's what changed and why.
The first version of my Stella & Satellite workflow worked in demos.
I’d trigger a Satellite — give it a specific job and a structured instruction set — and the output looked sharp. Then I used the system on real projects: multi-step builds spanning multiple days and work sessions.
It broke. Three specific ways.
The Three Failure Modes
I ran a teardown session. Fed the original system to Claude and asked it to find every structural flaw.
It found four. The AI couldn’t switch between tools automatically (the docs implied it could). Two-sentence handoff summaries lost 90% of the actual information. Nothing was being written to disk — close the window, lose the context. And Satellites could veto upstream work without providing a real alternative.
Each flaw got a concrete fix.
Fix 1 — A Written Record That Survives Between Sessions
This was the biggest change. Everything important now gets written to a /brain/ folder in the project repository. Plain Markdown files.
/brain/
current-state.md — what's live, in progress, and blocked right now
architecture.md — locked technical decisions
decisions.md — append-only log of every significant choice
prd-{project}.md — the product spec for each project
Before any work session: read current-state.md. After any milestone: update it.
The information that survives a closed window is the information that actually matters.
Fix 2 — A Hard Stop on Loops
Three failed attempts at the same fix triggers a mandatory halt.
The Satellite stops, outputs exactly what it tried and why each attempt failed, then suggests what a human should try next. No more 40-minute loops on broken approaches.
Fix 3 — Vetoes Require Alternatives
Any rejection of previous output must include a specific alternative — not just an objection.
“This won’t work” is not acceptable output.
“This won’t work because X — here’s what to do instead: Y” is the required format.
Fix 4 — Handoffs Point to Files
When one Satellite finishes and the next begins, the handoff points to a specific file in the /brain/ folder — not a summary generated on the spot.
The file is the source of truth. The next Satellite reads the file.
What Else Changed
The Satellite roster expanded from 7 to 10. Three additions that mattered:
Morgans — writing and communication. Satellite Logs, READMEs, changelogs. Explicit voice rules: first person, short sentences, one honest failure per post. This post was written by Morgans.
Atlas — deployment and infrastructure. CI/CD pipelines, environment variables, hosting configs. Outputs configuration files only — no prose. Flags downtime risks before executing.
York — monitoring. Uptime, error rates, analytics. Prioritizes by what will hurt actual users first.
The Honest Failure
The v1 system prompt was too readable.
I wrote it for a human audience — clear prose, organized sections, logical flow. The problem: AI Satellites don’t need the same kind of clarity humans do. They process dense, structured information better than conversational paragraphs.
When I rewrote the entire system using bullet points, tables, and conditional logic instead of prose, word count dropped by 40%. Performance improved noticeably.
I had optimized the v1 for me instead of for the Satellite.
Satellite: Morgans (this post) · Pipeline: AUDIT — Lilith Red → York → Morgans