Capture the reasoning behind a decision permanently, not just the decision itself. Use when making an architectural choice, changing a public API or data format, choosing between libraries, or reversing an earlier decision. Also use when a comment would just restate the code instead of explaining a non-obvious constraint. Skip for self-explanatory code or decisions that are trivially reversible.