##prototype-to-drained-epic
The highest-value and most complex feature I have shipped so far, followed all the way through: the pipeline ingested a product designer's prototype, decomposed it into a versioned spec, and planned a Linear epic of 45 dependency-wired tickets, which parallel agent lanes drained in about 35 operator-paced hours. I presented the whole thing publicly as "Agentic Loops and Graphs" at Planet DDS AI Meetup #3.
The funnel started with parallel readers mapping the prototype against the shipped specs, and they surfaced something I had not seen, which is that the prototype quietly bundled three separate initiatives. The highest-leverage human decision of the entire project was the scope gate right there, where I deleted roughly two epics of accidental scope before any code existed. From there we reconciled 122 requirement candidates against the shipped catalogs, which turned up 19 conflicts that were all resolved and 6 product questions I had to rule on myself, and then we authored 114 requirements with permanent, immutable IDs, all before a single line of implementation.
Then the spec was minted into 45 thin, vertical, end-to-end slices wired together by blocked-by edges. Once that graph existed, readiness was something the loop could compute, so it derived the ready set directly from Linear and nobody hand-ordered the work. Laid out by build depth the columns of the graph are waves, and every slice in a column became buildable the moment the wave before it merged. The tall columns are exactly where two lanes ran in parallel, and the critical path set the floor on how fast any of this could go.
Every lane ran the same nine-step spine: pre-flight, sync real data, implement with a file-domain-isolated strike team, verify against the running app, multi-lens review, fix every finding, iterate until clean, capture learnings, and honor the autonomy dial. I tiered verification to risk rather than to whatever was convenient, so the drain lead re-ran every gate personally, read every diff, drove the live app through browser automation, and queried the database directly for ground truth on the write paths. We finished with 111 of 111 end-to-end scenarios green. The defects had already been caught upstream in each lane's own QA loop, so by the time we reached the final gate it was really acting as confirmation.
The human budget for all 45 tickets came to eight decisions: a scope gate, a reversal blessing, six product rulings, the ticket-mint authorization, the drain gate, pacing, and a set of mid-build product questions that I recorded for a PM rather than letting an agent decide them. Every one of the roughly 92 PRs was approved and merged by a human after the artifact-level gates. I am happy to give agents autonomy over execution, and I keep the judgment calls with people.
// the drain, replayed — sanitized interactive record
This is the real 45-ticket dependency graph from that Linear epic, laid out by build depth, so every column is a wave and each slice in it became buildable the moment the wave before it merged. The tall columns are exactly where the loop ran lanes in parallel, and the critical path of 22 hops is the floor. Click a slice to trace what it waited on and what it unblocked. I have scrubbed the identifiers and titles, but the topology, the risk tiers, the verification depth, and the merge timeline are all real.
44 of the 45 slices shipped and merged. The one exclusion, S-09, was ruled human-owned at the drain gate and was deliberately wired to gate nothing. The gaps in the timeline are me pacing the work, and because the loop is reconcile-first, resuming after a gap costs nothing.
// outcome
What I came away with is a repeatable pipeline rather than one lucky run: prototype to spec to ticket graph to drain, with human judgment concentrated into eight named gates and every merge backed by verification somebody actually observed. I spent far less of my time on the loop itself than on the graph, the gates, and the memory around it, and that surrounding machinery is what I would carry to the next team.