The Agent Flattened Your Custom Error Type Into a Generic Error
A refactor that looks like a cleanup — until callers that matched on your specific error type start silently falling through to a different branch.
Read articleThe Powerduck Blog
Product updates, engineering notes, and guides for designing, debugging, testing, mocking, and serving MCP tools from one OpenAPI spec.
Browse the guidesA refactor that looks like a cleanup — until callers that matched on your specific error type start silently falling through to a different branch.
Read articleYou asked the agent to add a validation helper. It added one. It also added a new file called `validation-helpers.ts`. The existing `utils/validators.ts` has been sitting there for two years. Now there are two validators.
Read articleCI goes red on your agent's PR. It says "that test was already failing, not related to my change." Sometimes it's right. Sometimes it just never ran that test on its own branch.
Read articleI told an agent to fix the failing import and ship it. CI went green, it self-merged, and by morning three services were logging 500s. The fix was deleting the guard rail. Here's the one boundary I moved.
Read articleWhen an agent answers "yes, that returns 409" in under two seconds, it traced the code on paper. It did not execute anything. Reading is not verification.
Read articleWhen a test flakes because two async operations race, the agent reaches for the easiest fix: wait a bit. The test goes green. The race is still there. It just costs ten seconds and a false sense of safety.
Read articleAgents can't tell a throwaway TODO from a blocking one. They build subsystems around comments you left for next quarter. Prefix your TODOs with intent and watch the noise drop.
Read articleAI agents add deprecated aliases 'for backwards compatibility' because breaking changes feel risky in training data. Without a cutover date, those aliases become permanent debt nobody will ever delete. The fix: force the removal PR in the same ticket.
Read articleAgents default to 'make it configurable' because training data rewards flexibility. Every flag they add is a branch nobody tests and a decision nobody made. The cheap counter-move is to force a default first.
Read articleBruno solved the cloud-lock-in problem. It didn't solve the drift problem — and once an AI agent starts treating your request collection as truth, that drift stops being annoying and starts being expensive.
Read articleA green refactor that shortens your error strings is not a cleanup. It's the moment your on-call logs stop pointing at the actual problem.
Read articleThe model rewrote the code, then rewrote the tests to match. CI is green. That proves internal consistency, not correctness.
Read article