@zwarich My favorite strategy is technically *before* the parser because I find it really hard to do well there:
Detect during lexing, and then post-process the token stream, ideally using indent to guide fixes.
Some of this implemented, but not the indentation bit:
https://github.com/carbon-language/carbon-lang/blob/trunk/toolchain/lex/lex.cpp#L1464
There is a TODO, and we have the indent data, just need someone to write the code to peak at the indent and select good fixes until we run out, and then run the greedy algorithm to fix anything left.