Use for consequential handoffs, blockers, completion reports, requirements, procedures, interface content, or formal documentation that must be easy to act on.
Use when designing a public API, schema, module boundary, or frontend-backend contract.
Use when a failure's cause is unknown, evidence conflicts, or an initial fix did not solve the problem.
Use when tested code must be released with versioning, rollout, smoke checks, and a rollback path.
Use when a nontrivial change has unsettled interfaces, contracts, file structure, trade-offs, or verification boundaries.
Use to remove unnecessary generated patterns from the current diff without changing behavior.
Use when a consequential decision, public contract, or durable rationale must be recorded for future maintainers.
Use after behavior ships or an interface changes when documentation must be created, corrected, or verified against the source.