Fast Agent Quality Gates: Deterministic Rules Over LLM Judges A developer proposes replacing LLM judges with deterministic quality gates for agent testing, defining a reusable rule engine that evaluates normalized trace metadata. The approach emphasizes stable, fast, and specific checks for structural regressions, while acknowledging LLM judges still have a role in semantic evaluation. Deterministic agent tests become much more valuable when they are expressed as reusable quality gates rather than one-off assertions scattered across test files. A gate answers a narrow engineering question: Did the run validate before writing data? Did retries stay within policy? Was token usage recorded and within budget? Did every started span finish? The result should be stable, fast, and specific enough that a developer knows what to fix. LLM judges still have a role in semantic evaluation. They should not be the only thing standing between a structural agent regression and production. A practical quality gate has five properties: “Answer quality was 6/10” is a signal, but it is not a narrow engineering contract. “The write tool ran before authorization completed” is. The gate engine should consume normalized metadata rather than framework-specific callback objects. type StepKind = 'run' | 'model' | 'tool' | 'retrieval' | 'policy' | 'fallback'; type TraceStep = { id: string; parentId: string | null; sequence: number; name: string; kind: StepKind; status: 'ok' | 'error' | 'blocked' | 'cancelled'; attempt?: number; inputTokens?: number; outputTokens?: number; durationMs?: number; metadata?: Record