The autonomy fantasy has an intent problem
Cole Medin’s “dark factory” experiment promised the ultimate software autonomy: a high-level brief in, a validated application shipped to production, no human steering. Medin, like many, envisioned a system capable of taking an epic, building it, validating it, and deploying it without intervention. This dream, however, has hit a wall.
Better models alone do not solve the core problem. Even with AGI, Medin contends, a dark factory fails because humans cannot fully specify their intent. Agents cannot reliably infer unstated customer needs or critical maintenance priorities, creating a fundamental bottleneck that advanced LLMs cannot overcome by simply being "smarter."
Agent-generated code often suffers from sprawl, and self-review mechanisms frequently reinforce existing mistakes. This isn't a limitation of model capability, but a deeper issue of intent and maintainability. Without human oversight, architectural misalignments compound, leading to brittle, difficult-to-manage codebases.
The core flaw, as Medin discovered building his own production RAG-based AI tutor, is that an autonomous agent cannot read minds. It can execute, but it struggles to truly understand the nuanced, often unarticulated, requirements that define a successful and sustainable software product. The dark factory, by design, removes the crucial human element that provides this context.
Keep the factory; shrink the blast radius
Instead of the dark factory’s one-shot, lights-out mandate, Medin’s AI Software Factory embraces a different scope. A human plans a release, then agents autonomously work through its tickets, but within a tightly constrained, human-governed loop. This is not a complete abdication of control; it’s a strategic re-scoping.
The critical insight: the issue-to-pull-request loop can remain agent-driven, but the human role before and after that loop is paramount. Humans define the intent, set the guardrails, and validate the output, turning an unconstrained aspiration into a production-ready workflow. This shrinks the “blast radius” of any agentic error.
Medin emphasizes this is not vibe coding. It requires substantial upfront harness engineering, guardrails, and defined processes to make runtime autonomy safer and more reliable. Agents operate with high autonomy, but only because human engineers have meticulously set them up for success, ensuring they stay on track and maintain codebase integrity.
Give agents a release, not a blank check
Medin’s solution moves the human from reactive debugging to proactive planning. Instead of a blank check, a person provides a Product Requirements Document (PRD) or architecture document, defining an epic that translates to 10 to 20 tickets. This upfront planning specifies not just what is in scope, but also what is explicitly out of scope, preventing agents from wandering.
The factory then takes this constrained brief, splitting the work into individual tickets and mapping dependencies. This ensures tasks run in a sensible, sequential order, rather than agents guessing the next step. It's a structured approach, allowing agents high autonomy within well-defined guardrails.
Crucially, Medin incorporates holdout scenarios. These end-of-implementation tests remain hidden from the builder, preventing the agent from tailoring its solution to a known test set. This independent reliability check ensures the factory isn't just passing its own internal validation, but truly delivering robust code. For more on the spectrum of autonomy, see Dan Shapiro's The Five Levels: From Spicy Autocomplete to the Software Factory.
This blend of human-defined scope and autonomous execution, coupled with independent validation, creates a dark software factory that ships reliable code. It’s a pragmatic evolution, grounding the dream of autonomous software development in the reality of what actually works today.
Enjoying this? Get one like it in your inbox each morning.
one email a day · unsubscribe in two clicks · no third-party tracking
The winning loop ends at a human checkpoint
This pragmatic pattern—agents implementing discrete tickets, automated checks and independent validation assessing the result, and humans steering release scope and reviewing consequential outcomes—aligns with a more sustainable path for agentic engineering. Instead of a single, monolithic "dark factory" attempting a high-level brief end-to-end, Medin's approach distributes autonomy with critical human oversight.
Dan Shapiro’s autonomy levels provide a useful framework here. Rather than measuring progress solely by achieving level-five, zero-human deployment, Medin’s strategy targets high delegation with meaningful gates. This means agents operate with substantial autonomy on individual tasks, but human review remains the ultimate checkpoint for integrating work and validating intent.
This trade-off requires upfront effort in designing robust harnesses and validation loops, but it prevents the intent drift and codebase decay that plague fully autonomous systems. While the "dark factory" dream of pure, lights-out development has hit a wall, the future of agentic engineering lies in these carefully constructed human-AI feedback loops.
Readers interested in the practicalities of this model can explore Medin’s open-source Archon repository or delve deeper into Shapiro’s autonomy framework.
Frequently Asked Questions
What is an AI dark factory?
It is a proposed software workflow where an agent turns a high-level product brief into code and ships it with little or no human involvement.
Why does Cole Medin say dark factories fail?
Agents can build software without understanding unstated intent, and their code can drift or become difficult to maintain.
What is an AI software factory?
It is a more controlled workflow that gives agents scoped work while humans guide planning and retain important validation checkpoints.
What are holdout scenarios?
They are evaluation tests kept from the implementation agent until validation, reducing the risk that it overfits its code to known tests.

