Back

PRACTICE

Every piece of agent work here runs through the same five steps: a spec, a structured ticket, an agent with a defined role, a validation gate, and a human review. Nothing skips the gate. Nothing ships on a green build alone — CI passing is necessary, it's never sufficient. The gate is where a human or a second agent checks the work against reality, not against the agent's own report of what it did.

Spec, structured ticket, agent role, validation gate, human review, done. A failed gate sends the work back to the agent; so does a review that asks for changes. Those two return paths are the only way out of the loop.

Evaluation systems

Five real systems, real numbers, sourced from this company's own operating history. Each one lists where it came from.

BRO-966

Model-swap evaluation matrix

Before swapping the model behind Argus's vision auto-tagging, I ran a live 5-model matrix against a golden set: tag recall, LLM-judge score, red-team pass rate, cost per run, latency. Total spend: $0.56.

ModelTag recallJudge scoreRed-teamCost/runLatency
Production model at the time 71.4%85.7%8/8$0.0451,267ms
Challenger 82.1%92.9%8/8$0.027310ms
Quality ceiling 85.7%97.1%8/8$0.103449ms

The challenger beat production on every axis at once: +10.7 points tag recall — above the run-to-run noise floor of roughly 7–8 points — 40% cheaper, four times faster. The quality-ceiling model scored highest but truncated its output at the production max_tokens cap of 1024 tokens, so it needed a contract change before it could ship. That's the kind of failure a spot-check misses and a fixed-threshold eval catches automatically.

BRO-1009

Four-gate build with an independent QC catch

A four-gate build ported a web app's surfaces to native macOS, one gate per surface, chained so no gate started until the one before it was approved. Test coverage grew 26 → 29 → 58 → 60 → 66 across the four gates. Every gate passed CI. One didn't pass review.

On gate three, an independent QC pass — run from a clean checkout against the live production data, not against the ship comment — caught a data-parity defect invisible to both the tests and the visual render: the native app was grouping issues from a row-capped list and showing 132 issues where the source system showed 270. The fix was a scoped server-side fetch; the corrected count matched exactly at 269. The gate stayed blocked until an independent re-verification confirmed the fix, then a named human approved it.

BRO-1010

Weekly literature scan with a re-verify step

A weekly research routine scans for new evaluation papers and tooling — arXiv, plus tools like Inspect, promptfoo, Braintrust — and posts a digest. Two rules keep it honest: a strict quiet-week ceiling (5–8 bullets is a maximum, not a quota — a thin week gets a one-line "nothing significant" instead of padding), and every claimed source gets independently re-verified before it's published, because a first pass through an external API silently returned empty results and would have shipped a false "not found" if I'd trusted it.

CONTRIBUTING.md

The merge gate rubric

Every pull request clears the same four-part test before an agent can merge it: CI is green, the work traces to a Founder-approved ticket within its approved scope, no unresolved review comments remain, and the change doesn't fall into a Founder-gated category. Auth and secrets, spend, public content, and data or schema changes are hard stops — no agent clears those, ever, regardless of how clean the diff looks. Everything else routes to the agent that owns the relevant judgment — a design call to the person who owns taste, an architecture call to the person who owns architecture — and that approval only counts once it's recorded as a decision on the ticket, not asserted in a comment.

AGENTS.md

One thing in flight, one model per task

Two standing constraints on how the work itself gets done, not just reviewed. First: one active build at a time per agent — a second task that comes in gets a one-line "queued behind [ticket]" and waits, because four concurrent sessions on one codebase contend for the same working tree and stall each other out rather than shipping faster. Second: a model-dispatch rule — the senior model is reserved for judgment calls (architecture, security, debugging), and mechanical work (file sweeps, formatting, running scripts) gets dispatched to a cheaper model explicitly. Ten or more consecutive mechanical tool calls on the senior model is a tripwire to stop and delegate.

Control surfaces

The mechanisms that keep a long agent run from running away.

Termination conditions
Done means the code is merged and CI is green — never just green, and never just merged. A pull request that's fully green and conflict-free but still open is not done; it's in review. That distinction is enforced, not assumed.
Budget caps
The orchestration platform enforces a hard token ceiling per agent: work auto-pauses at 100% of budget, and above 80% the agent is expected to work only on what's critical.
Retry and escalation
The one-task-at-a-time rule is the retry surface — a stalled or blocked task doesn't get more agents thrown at it, it gets queued and named. A critical issue can jump the queue, but everything else waits its turn.
Human handback
Work that needs a decision only a person can make goes to review with a named reviewer, not a vague "someone should look at this." The review path is explicit or the work doesn't count as handed off.

What went wrong

BRO-815 / BRO-820

Two builds were marked done because CI was green, while their pull requests were still open. One of them sat open long enough to drift into a merge conflict with the main branch before anyone noticed. Green CI had quietly become a stand-in for "done," and it isn't the same thing — a PR can be fully green and still not be on the branch that ships.

The fix wasn't a warning, it was a rule: done now means CI green and merged, checked explicitly, every time, before an agent can close a ticket. "Pushed," "CI green," and "merged" are three different states and none of them implies the next one. That rule now gates every piece of work described on this page.