Rewrite every user-facing error
Inventory user-visible errors, replace internal or confusing text, and prove each reachable error state reads clearly.
Use this when
Use this when a product exposes raw, internal, inconsistent, or unhelpful error messages and the complete user-facing error surface needs a controlled rewrite.
How it runs
- Inventory source strings, surfaced API or client failures, and reachable browser error states in one CSV.
- Rank errors by user harm and rewrite one coherent group with plain language and a useful recovery step.
- Run relevant tests, exercise the affected states, and search again for internal or raw error text.
- Repeat until every row is verified or explicitly blocked, then return the inventory and evidence.
Done when
✓ Every in-scope user-facing error is clear and accounted for. The inventory contains no silently skipped row: each error is verified in its reachable state or marked blocked with the missing evidence.
Why it works
Error copy is often scattered across source code and runtime paths, so isolated rewrites leave inconsistent states behind. A durable inventory makes the sweep complete and reviewable.
Implementation note
Do not claim a clean sweep for states that could not be reached. Preserve technical detail in logs while keeping provider names, stack traces, identifiers, and implementation details out of user-facing copy.
Source: Forward Future ↗graded B · 75/100 — how grades work →
More debugging loops
Memory leak hunt
Drive a suspected memory leak to ground: reproduce growth under a repeated workload, capture heap snapshots, and fix the retention until memory stays flat.