Cosmin Pop
The fixture that stopped meaning what it said: a finder trait is not the capability
Sep 8, 2026A finder predicate is a proxy for a capability, not the capability itself, and a redesign elsewhere can sever that link without falsifying a word of it. Four Create Invoice cases turned red on a locator that never attached because the finder kept vouching for data the dialog no longer read.
A row-count non-vacuity check passes on a grid whose only row is the empty-state placeholder. Ordering, filtering and deduplication claims each need a floor sized to what they actually assert, not to how many rows came back, and every oracle deserves an inversion test before it is trusted.
The skip that isn’t there: auditing the claims your suite makes when it declines to run
Sep 6, 2026A skipped test is a claim about the world, not a shrug, and it lies in three ways that survive code review and the type checker: a gate that never fires, a reason that blames the wrong cause, and a park that records no reason at all. Replacing boolean misses with typed ones makes the honest shape structural.
Four AST convention guards grew to twenty-eight, and that changed the design problem, not just the count. A policy layer other people's code must pass through needs a ratchet baseline, a mandatory escape hatch, and corpus calibration before a new rule can block anything.
A green test that executed zero assertions is a real failure mode, an early return or a swallowed catch skipping every oracle on the path it took. A runtime counter at the one seam every assertion passes through finds it on every ordinary run, cheaper than inverting every assertion to prove the same thing.
Static quality gates check that a test looks right, not whether it can actually turn red. Running a folder twice, once clean and once with every assertion inverted through the runner's own negation, answers that directly, and finds oracle gaps a code review would never catch.
5,000 lines of armour I never needed: retiring the infrastructure you built for a storm
Sep 2, 2026A discovery hot path got a deadline, a circuit breaker and a run broker after a 502 storm. Once a cheaper query made the load profile disappear, the armour was proven unused with a live-storm gate run, not a hunch, then deleted along with the seams a fifth domain would have copied.
A generator asks what should exist and regenerates everything, silently overwriting human edits and breaking downstream links. A reconciler asks what already exists, what changed, and what is the minimum mutation to stay current, using a stable ID hashed from meaning, not a counter or a content hash.
Prompt A/B testing for an agent task: engineering the minimal instruction set
Aug 31, 2026How treating an agent's driving prompt as an experiment (held-out cases, measured turn count, version-controlled losers) took a browser-validation task from 34 turns per case down to 9, on the strength of three explicit anti-pattern bans.
“Not deployed” is a first-class verdict: giving your test suite a richer vocabulary than green and red
Aug 29, 2026Why a binary pass/fail suite has no honest way to describe a spec that correctly documents a feature that has not shipped yet, and how a deployment-guarded skip (NOT-DEPLOYED) becomes queued work instead of red noise.