Jira holds the ask.The ADR holds the why.A blind critic holds the line.
I don’t prompt a chatbot and hope. I run a team of coding agents on the rails a good engineering org already trusts. A lead session dispatches, owner agents each hold one seam of the codebase, and nobody grades their own work. Every change is a Jira ticket, every creative brief a spec with a bar to beat, every decision future code must obey an ADR. I merge. Nothing reaches main any other way.
Fig. 4.0 — One change, ticket to main. Every hop leaves a record an agent can read.
01TicketJira. Out of scope still gets a ticket, or it’s lost
02SpecIntent, constraints, acceptance test, the bar to beat
03OwnerHired by name from the paths the change touches
04BuildOne worktree, one branch, gates reported as totals
↺ until it passes05CriticFresh context, labels stripped, graded against the bar
06Re-checkThe lead re-runs every “not found” itself
07MergeThe PR maps each change to its ADR. I merge
Leaddecides · briefs · re-checks · never builds
Builderone worktree, one branch
work + gate totals →
← the exact gaps
Criticfresh context · blind✕ gaps✓ pass
R1
R2
R3
→ merge
Fig. 4.1 One gauntlet. The critic never sees the builder’s own verdict, and the loop exits on evidence, not claims.
What that buys a client
Every change is traceableTicket, spec, decision, review, merge. Ask why any line exists and there is a written answer.
Nothing grades its own workA critic that never saw the builder’s reasoning checks it against a bar set before the work began.
A person mergesAgents propose, I review the diff and merge. Nothing reaches main any other way.
Yours to keepDecisions, rules and checks live in the repo, not in a chat log. Your team inherits them with the code.
RIG-01
A ticket for everything
A ticket is the unit of delegation. The lead session searches, then files it with the finding in the description, and anything a session calls “out of scope” or “pre-existing” must become one: a finding that lives only in a chat report is lost. Each ticket gets its own worktree and branch; its PR maps the change to the ADRs it obeys, rule by rule, and verdicts land as comments on the ticket. I merge and close. The lead never merges.
Stack → Jira · git worktrees · one PR per ticket
RIG-02
Decisions written as sentences
An ADR’s title is the decision, as a sentence. Each one records who decided: my calls kept apart from the lead’s, and the lead’s marked as dials I can overturn. Code that obeys a decision cites its ADR at that line, and a reversal is written down as a reversal, the same day. Anything creative or ambiguous gets a spec first: intent in my words, the constraints, the acceptance test and the real reference it has to beat.
Stack → ADRs · design specs in the repo and an Obsidian vault
RIG-03
Owners write, critics prove
Each owner charter names a seam by its paths and its invariants. The lead reads a ticket’s changed paths against them and hires an owner by name, to analyse or to build; the database owner reviews and never builds features. The builder reports its gates as totals, a critic with fresh context grades the work blind, and for UI a tester drives my browser in its own tab. Then the lead re-runs every “not found” itself. An agent’s grep scope is part of its claim.
Ruflo is the memory bus and hook layer, not the executor. Every non-trivial task starts with a memory search and ends by storing the lesson, written as the sentence a future session would type into the search box. Its router suggests the agent a prompt needs. impeccable fires on every write to a UI file (layout, tokens, accessibility basics) and a finish reviewer reads the build against its design contract. Intent’s UX agents frame, design, audit and hand off flows on demand.