The Test Passed With the Code Deleted
Coverage tells you a test ran. It does not tell you the test would fail if the code were wrong. Before an AI refactors your core, you need the second thing.
Writing about AI-assisted development, Claude Code workflows, and building software with AI.
Coverage tells you a test ran. It does not tell you the test would fail if the code were wrong. Before an AI refactors your core, you need the second thing.
Confidence is what the model thinks of itself. Bounds are what your system thinks of the model. They are independent signals; use both.
Append-only history and GDPR-style erasure look incompatible. They are not, if you put the secret in two places.
My agent pipeline runs for hours, survives Ctrl+C, and resumes from where it stopped. There's no Temporal, no queue, no database. The state lives in YAML files and commits.
Every system I built had a tenant_id column and a discipline problem. This is the first one where the database itself refuses to return the wrong rows.
Two agents with identical latency can feel completely different. The gap is fixable at the orchestration layer, without touching the model.
A maintenance agent filed 559 bugs and fixed 412 on its own. The interesting number is the 14 it refused to touch.
Feature branches and merge queues were how we coped with slow humans. When an agent finishes a task in ten minutes, the overhead is the bottleneck.
I stopped feeding hospital PDFs to a vision model. When the layout changes, the AI fixes the parser instead — and production never sees a token.
Most builders assume end-of-turn detection is a silence threshold. That model breaks in production. The fix is architectural: four probabilistic events, speculative reasoning, and everything downstream cancellable.
An 8th specialist that touches the browser — navigating, clicking, and typing to find bugs that scripted journeys miss. How exploratory testing with Playwright catches what verification alone cannot.
Seven specialists, each with their own checklist — QA, UX, UI, Security, Performance, Data Leakage, Language. How splitting evaluation into focused agents catches more.
The leap from AI-assisted coding to autonomous batch processing. Fresh context per task, filesystem locks, model routing, and orchestration that runs while you sleep.
Exponential backoff, dual timeouts, SSE heartbeats, idempotency caches — the unglamorous patterns that keep LLM-powered systems running at 3am.
Real browser, predefined journeys, specialist agents checking every step. How QA findings feed back into the issue tracker to close the development loop.
The AI picks up a planned issue, implements it, tests it, commits, and marks it done. How headless batch mode lets me plan in the afternoon and wake up with code in the morning.
Users ask similar questions in different words. Semantic caching with pgvector turns repeated intent into instant answers — no LLM call, no embedding, no retrieval pipeline.
Context windows fill up fast in long AI conversations. Sliding windows, progressive compression, and token budgeting — the patterns I built before I knew their names.
Vague instructions produce vague implementations. How I sit with the AI to refine rough ideas into concrete, implementable specs — before any code gets written.
The bottleneck isn't the AI — it's me. Three slash commands that form a loop: Plan, Work, QA. How structured phases replaced ad-hoc chatting and made AI development manageable.