Same delivery engine, walked through one stage at a time — and this time, the reasoning is attached. Every diagram has a row of drawers under it. Open one and it answers the question a reviewer would actually ask.
The bind this answers
Cut cost and risk. Don't cut the team. Do it with AI.
The board wants delivery cheaper and faster. Risk wants fewer surprises and less technical debt sitting on the books. Neither is asking you to let go of the people who understand this business — that understanding is the one thing AI can't replace. The brief isn't "replace the team," it's "make the team you already trust produce dramatically more, with shorter feedback loops and near-zero accumulated debt, without losing anyone who knows why things are built the way they are." Everything from here on is the mechanism for that.
Time-to-launch
Parallel review instead of a queue — most of what used to wait in line now happens at the same time, off one design.
Feedback loops
QA checks against real existing scope before anything is built, not three sprints in — a sprint-long loop becomes a design review.
Technical debt
Every decision, every exception, every "why we did it this way" is on record — nothing gets rebuilt twice because nobody remembered the first time.
These aren't hypothetical FAQs. Every question below is one that came up while this thing was actually being designed — why doesn't this go straight to the PO, what if the Architect and PO disagree, who's allowed to change this. If you're reviewing this as a PO, BA, Architect or QA lead, these are very likely your questions too. Click to open.
Before the walkthrough
Eight roles, one human
One Product Owner, seven agents. Teal is the human. Ink is an agent working alongside the team. A dashed border means it's isolated — it never sees the pitch, only the artifacts. A diamond is a real fork, not a formality. Every diagram from here on uses exactly this code.
Product Ownerhuman
Business Analystagent
UX Architectagent · conditional
Architectagent
QAagent · isolated
Risk Architectagent · isolated
Data Architectagent
Ask about the teamWhy does domain knowledge stay with some roles and not others?
Because it's genuinely two different jobs. PO and BA carry the business vocabulary — what a request means, who's eligible, what the exceptions are. UX needs enough of it to design a journey a real user recognizes. QA needs enough to write a test that matters, and Risk needs enough to know what an attacker in this industry actually goes after. The Architect and Data Architect work one layer down, in features and capabilities — the same shape whether the domain is fintech, e-commerce, or utilities. That split is what makes the team reusable across every product, not just one.
Is the Architect completely domain-blind, then?
Not quite — it doesn't need business vocabulary, but it still needs the domain's constraint profile: compliance regime, consistency guarantees, latency and scale envelope, safety criticality. A financial reversal needs strict idempotency and an immutable audit trail; a utility change tolerates eventual consistency but can't fail silently. The Architect doesn't need to know what a "claim" means — just that this domain demands a 7-year audit trail before it designs anything.
Why is Risk drawn as more domain-aware than the Architect?
Threat models genuinely differ by industry — fraud vectors, data-breach vectors, and safety-critical failure modes aren't interchangeable. Risk sits closer to QA than to Architect and Data on the domain-awareness spectrum, even though all three are technical roles.
Zone A
Who gets pulled in
A request lands with the Business Analyst first — never a paired loop by default. Whether UX gets involved is a real decision: no screen impact skips straight to the Architect; a contained UX impact goes BA → UX → back to BA → Architect; a genuinely complex or ambiguous case runs as a trio, BA, UX and Architect together.
Whether UX gets involved is a real decision — not every request touches a screen.
Ask about this zoneWhy isn't BA + UX just a standard paired loop?
Because that's not how it actually plays out. Not every change touches a screen, and forcing UX into every request wastes a specialist's time and slows the requests that didn't need it. The routing has to reflect reality: sometimes BA hands straight to the Architect, sometimes BA and UX hand off sequentially, and sometimes — genuinely complex or ambiguous cases — all three work it together as a trio.
What if UX impact isn't obvious at intake?
It can surface later. The routing decision here isn't a permanent lock — if a UX concern shows up downstream, that's exactly the kind of finding that routes back through the Architect in Zone D, the same as any other finding that changes what was asked.
Why "Architect" and not "Solution Architect"?
Deliberately generic. This role covers solution-level design, technical-level design, or both, depending on what the change actually needs — it isn't locked to one title or one person's remit.
Zone B
Nobody starts building on a hunch
Before real design work happens, Priya and the Architect both sign off on exactly what's being asked. The moment it's approved, the next stage starts on its own — no one has to remember to kick it off.
An "approved" flag is what actually starts the next stage — not a person remembering to say go.
Ask about this zoneWhy isn't this just a live pause while everyone waits?
Because there's no primitive for that — an automated pipeline can't sit idle mid-script waiting on chat input. So this isn't modeled as a pause, it's a state transition: the requirement sits at pending-approval until Priya and the Architect act, however long that takes, and a Hook watches for exactly that field flipping to approved or rejected. It works the same whether that happens in five minutes or two days with nobody watching.
What happens on rejection?
The status just doesn't flip to approved — it reopens the requirement, and the same Hook mechanism that would have fired the next stage instead reopens Zone A. No separate rejection pathway needed.
What if this gets reopened later, after design has started?
It can — this exact gate reopens if Zone D finds that a fix would change the requirement itself, not just the approach. Same field, same Hook, just a different trigger.
Zone C
Three reviewers, one design, all at once
The Architect designs how it gets built. The moment the design is ready, QA, Risk and Data all check it at the same time — not staged one after another.
Three independent checks running at once, not staged one after another — that's most of where the speed comes from.
Ask about this zoneWhy not run Data and Risk first, then QA, in a queue?
That was the earlier version, and it was wrong — QA doesn't need to wait for Data and Risk to finish, it's checking the design against existing scope, which is ready the moment the Architect is done. Staging them one after another was pure lost time with no dependency requiring it.
Why is Risk isolated but Data isn't?
Risk's value depends on not being softened by a convincing pitch — it needs to read the design cold, the same way QA does. Data Architect's job is closer to bookkeeping — where the records actually live — which doesn't carry the same risk of being talked out of an honest answer.
Does the technical work slow down if all three fire at once?
No — that's the point. This is most of where the speed advantage actually comes from. Three independent reviews running concurrently instead of queued is a straightforward multiple of wall-clock time saved, with no quality tradeoff, since none of the three depend on each other's output.
Zone D
Most problems never reach Priya
Every QA or Risk finding lands with the Architect first — never straight to Priya, never straight to the Business Analyst. Only a fix that would actually change what was promised climbs back up for a real decision.
The Architect is the filter — Priya only sees the fraction of findings that actually change what she asked for.
Ask about this zoneWhy route to the Architect and not straight to BA or the PO?
Because most findings are implementation-level, not requirement-level — routing everything to Priya would swamp her with technical hiccups that don't need her judgment. The Architect is the one accountable for the design, so it's the first and usually last stop.
What if the Architect and Priya disagree once it does escalate?
Priya has final authority — she's the one human in the loop, and that doesn't change here. But if the Architect disagrees with her call, that dissent gets logged alongside the decision, not silently overridden. The record shows both positions, even when only one wins.
Doesn't this let the Architect quietly change things without anyone noticing?
No — the "no" branch is explicitly scoped to fixes that don't change what was promised. Anything that does is required to escalate. The Architect isn't trusted on judgment alone here; it's a defined boundary, not discretion.
Zone E
Nothing gets lost
Whatever the outcome, it's written down with the reasoning attached — not summarized from memory. Two different kinds of "not forgetting": the specific decision, and the general lesson.
Two different kinds of "not forgetting" — the specific decision, and the general lesson.
Ask about this zoneIsn't a decision log just overhead if nothing ever goes wrong?
The payoff isn't for when things go right — it's for six months later, when someone asks "why does this block that" and the answer isn't buried in someone's memory of a meeting. The cost is one write; the alternative cost is re-litigating a decision nobody remembers making.
Is Memory just a copy of the artifact tree?
No — Memory holds durable cross-session facts, standing preferences, constraints that keep coming up. It never holds the actual work product. If Memory disappeared, you'd lose convenience, not history — the decision record is the permanent one.
Before this ships to a team
Who's allowed to change the machine itself
Everything above governs how a request moves through the team. This governs how the team itself gets edited, once it's real people — POs, Architects, QA leads — training these agents by using them.
This is also where the headcount question actually gets answered. Every skill here has a human owner — not a supervisor rubber-stamping its output, the person who used to do this work full-time, now training the agent that represents it. The job doesn't disappear. It moves from doing the work to continuously making the system that does the work better — which is also the only reason this keeps improving instead of quietly calcifying the day it's switched on.
Role
Can edit
Can suggest
Validated by
Business Analyst
its own skill only
anyone, about anyone
automated — does it cover the vision completely — plus PO
UX Architect
its own skill only
anyone, about anyone
PO review
Architect
its own skill only
anyone, about anyone
PO review
QA
its own skill only
anyone, about anyone
manual — QA reports how it handled a case, PO reads and judges
Risk Architect
its own skill only
anyone, about anyone
PO review
Data Architect
its own skill only
anyone, about anyone
PO review
This is a maturity model, not a permanent restriction
The ideal end state is fully decentralized — anyone can validate anyone's skill, peer-review style. That's not being built yet, because at low maturity it gets dangerously messy: a Risk agent's skill "validated" by someone with no risk judgment isn't validation, it's noise. Level 1 is human-gated — broad suggestion rights, narrow edit rights, the PO as backstop. Later levels loosen that as trust in the system builds.
Ask about governanceWhat stops a skill update from quietly making things worse?
The same regression risk that applies to any config drift: an edit that reads like an improvement but softens a real check. That's exactly why validation is required before an update goes live, and why it's manual for roles like QA — a report the PO actually reads, not a self-certifying agent.
How does versioning avoid the same bloat problem as an unmanaged CLAUDE.md?
Every update is a full rewrite of the live skill file — never an appended patch. The previous version is archived intact, referenced but out of the way, so the current skill never becomes a palimpsest of strikeouts where the real operative scope is buried under years of edits.
What happens when the PO starts a new request while agents are still finishing an old one?
That's fine — a human proposing new work will always outpace a multi-stage agent team finishing old work, and nothing here builds a locking or cancellation system to prevent it. If a newer request actually conflicts with one still in flight, that surfaces through the same Zone D escalation path as any other finding that changes the ask — not a new mechanism.
Does this actually work without a chat-only interface for non-engineers?
Technically, yes. Practically, it doesn't ship without one. Right now, using this means being comfortable inside a session — for a PO or Risk Architect to use it daily and confidently, the chat-driven front end is a need-to-have, just still sequenced for later in build order.
Has any of this been tested — a real Hook, a real isolated agent?
Not yet, deliberately. The mechanism is sound on paper and unverified in practice. The plan is step by step, foundation first — validating the base before adding floors, not rushing to build something that looks finished before the underlying trigger mechanics have actually been fired once.
Before this touches real cost
What stops this from running away
Everything so far explained the shape of the system — who does what, in what order. This is the layer underneath: the guarantees that make it safe to actually let Hooks fire agents against real files, unattended, at cost. In agentic-RAG terms, these are the parts that don't show up in a routing diagram but decide whether the diagram is trustworthy.
Tool contracts
Every artifact type has a schema, not just a folder — required fields, a fixed status enum. A write that doesn't conform never fires the next Hook. It sits invalid until fixed, never routed around.
The orchestrator
The Hook + status-field mechanism you've already seen through every zone is the orchestrator. "Why this agent, next" always has a one-line factual answer — a field changed value — never a guess about a model's reasoning.
Idempotency
Writes are keyed by ID and overwrite — never duplicate. Before doing anything, a skill checks whether its own output for this ID already exists. A retried Hook can't create a second, competing artifact.
Termination conditions
Every loop is bounded — 3 unresolved cycles on the same ID and it stops auto-looping, flags to the PO as stuck. That's the system recognizing it needs a human, not the system failing.
Pipeline evaluation
A clean final decision doesn't prove every stage was sound. Each write gets checked for groundedness, relevance, completeness, latency/cost, and schema accuracy — not just whether the PO approved it at the end.
Ask about reliabilityIsn't a folder convention basically the same thing as a schema?
No — a convention says where something goes. A schema says what's required to be in it, and what happens when that's missing. capabilities/<id>.md requires id, traces_to, status, owner, last_updated — a write missing any of those, or using a status value outside the fixed enum, is a failed write. It doesn't fire the next Hook, and it doesn't get silently accepted as close enough.
Why call a Hook mechanism an "orchestrator" instead of building a real LLM router?
Because a state-triggered orchestrator is auditable in a way an LLM router isn't. An LLM router's answer to "why did you call QA next" is a probabilistic explanation you have to trust. This system's answer is always the same shape: technical-design/CAP-04's status became ready-for-review, and three Hooks watch for exactly that. No judgment call to second-guess.
What actually happens if the same Hook fires twice for one write?
Nothing duplicates. Every write is keyed by its artifact ID and overwrites that ID's file rather than appending a new one — there's no CAP-01-2. Before a skill does its work, it checks whether its own output for that ID already exists at the target status; if it does, the second firing exits without redoing anything. Even decisions/, the one append-only log, carries a unique decision_id so a retry can't log the same decision twice.
Why 3 cycles as the termination bound, and not some other number?
Honestly — it's a starting default, not a measured value. Nothing has run for real yet to justify a different number. The plan is to revisit it once real cycle-count data exists: if capabilities that eventually succeed mostly resolve in 1–2 cycles, 3 is generous; if legitimate cases routinely need 4 or 5, the bound is cutting off work that would have converged. That data falls out of decisions/ and the per-stage latency tracking on its own — nothing extra needs building to capture it.
How do you actually measure something like "groundedness" for a QA finding?
The schema requires it directly — every qa-regression/ and risk-findings/ entry carries a citation field naming the exact artifact and section a finding is grounded in. A finding with no citation, or one whose citation doesn't actually say what the finding claims, fails groundedness — regardless of how plausible the finding reads on its own.