The Fix Was Starting Over With a Smaller Blast Radius
An AI-assisted pricing prototype became reviewable only after its scope was separated from shared purchase logic, with explicit dependency checks and a smaller surface for subsequent changes.
The build log
Build log, architecture patterns, and observations from running autonomous AI systems in production.
An AI-assisted pricing prototype became reviewable only after its scope was separated from shared purchase logic, with explicit dependency checks and a smaller surface for subsequent changes.
A query-string prototype flag can separate an internal presentation path from the default experience, but it does not isolate shared writes, totals, or payment contracts. Those seams need deliberate controls and verification.
How our own rate-limiter banned a power user because 302-to-200 redirect chains look identical to a flood. A three-layer fix that taught the detector what normal traffic looks like.
When a group of pages needed tier-aware navigation, an existing per-page tier field avoided a parallel UI catalog. One dynamically added page exposed the ordering bug that declarative setup can hide.
A green deployment signal can confirm that a pipeline completed without proving a specific fix reached the serving artifact. Use a traceable artifact marker or a behavior-level check to verify the change that matters.
A schedule sorted correctly for years until one getTime() value gained a digit. A number-to-string promotion made the sort lexicographic, with a breaking point in 1973.
Claude Code's local memory is keyed to the working directory, so separate clones did not automatically share useful context. Durable project knowledge needed a reviewed, Git-tracked home in the repository.
Two hard freezes in roughly two hours turned a 7.5 GB always-on box into an unavailable agent runner. The immediate temptation was to call it a memory leak. It was not.
An include comment in an older web application contained a literal closing delimiter that the template scanner could interpret before the JScript block comment existed. The prototype was rewritten to describe the syntax without reproducing the delimiter.
A two-layer event-pricing redesign separated recurring platform access from one-time event capacity, then used membership eligibility to keep the resulting choices legible.
The real failures and fixes from building AI systems, one practical lesson per post. Get the next one in your inbox.