Responding to a production incident with the missing architecture decision, not just a patch
Root-caused a customer-blocking production incident to an undocumented architecture assumption, rebuilt the affected consumer with a post-mortem, an ADR, and business-rules documentation, then, after rollout exposed a database deadlock, diagnosed it to a Kafka partitioning mismatch and replaced silent message loss with retry, a dead-letter queue, and per-user serialization.
Context
This is my clearest evidence of incident response that fixes the class of bug rather than the instance, and of staying with a problem across two acts: the initial incident, and the subtler failure mode that only appeared once the fix was in production. Both times, I resisted the fastest available patch in favor of understanding why the system had been wrong in the first place, and left the answer documented so the next person wouldn't have to rediscover it.
It also shows an operational maturity that goes beyond "fixed the bug": diagnosing a production deadlock from logs, tracing it to a specific mismatch between a messaging system's partitioning and the data's actual contention pattern, is systems-level reasoning under pressure, the kind of debugging that separates "restarted the pod" from actually understanding the failure.
Problem
A customer was stuck on a permanent "sync error" screen and could not complete their work, a hard block rather than a cosmetic bug. The proximate cause traced to how a permissions-management consumer handled an edit: a decision about whether that consumer's logic should be scoped to a workspace had never been made explicit anywhere, so a change that assumed the wrong scope went out uncaught. The underlying consumer for this domain also only existed in the team's legacy service; the newer service had no equivalent, which was part of why the gap had never surfaced before.
Months after the rebuild shipped, a second, unrelated-looking problem appeared: the new consumer started throwing database deadlocks in production.
03Constraints
Decision
I treated the incident as two separate diagnosis problems, months apart, and refused to close either with a surface-level fix.
05Trade-offs
Impact
07Lessons Learned
Reusable engineering knowledge I carry forward from this: