AI
The guardrail is the feature
An agent that finds every reference to a feature flag and plans its removal is the easy half. The rule about which flags it is never allowed to propose removing is what makes it safe to leave running, and what let the job move to the person who actually wants it done.
Bad acceptance criteria ship as bugs
Ambiguity in acceptance criteria doesn't disappear when implementation starts. It becomes a decision made without full context. The lineage problem, staleness semantics, product positioning: caught before a sprint begins, they're conversations. Caught after, they're migrations.
The demo is the test
A feature that passes every test can still be broken in ways the test suite is structurally unable to see. Four kinds of blindness that only surfaced once real stakeholders started using an AI booking assistant in a room.
Designing a logging system for an AI service
Building a standardised logging system for an AI assistant service: making consistent structured logging the path of least resistance, and thinking carefully about what an AI service should and shouldn't persist.
From merged pull requests to a performance review
Merged pull requests already record what you did. Turning them into a work log with an LLM is easy; the hard part is the defensive rules that stop it corrupting the vault.
Three quiet bugs hiding in a cross-service feature
Shipping a feature across four services meant coordinating an AI backend, a fare search service, and two frontend components. Along the way: a silent configuration bug, a duplicate event contract, and an HTML injection path.