Hello Erik,
You could output the current header after recovery unconditionally.
Yes, that would be a solution (and less code, right now I had put in an explicit check to _not_ write out a header upon recovery unless a new file is created). CarpetIOScalar should only output the new header if all_reductions_in_one_file==yes since (a) the old method never changes headers and (b) some users might rely on there being only a single block of comments in the files (eg. to open the file in MatLab which is evil that way and expects that one tells it how many header lines there are at the top).
I might be able to use Cactus CCTK_ParameterQueryTimesSet (the way that Carpet does for PUGH::periodic_x) to only output a header if either outScalar_vars or outScalar_reductions changed (and output a new header for all variables, not just the ones that changed). I'll give at one point (unless this is considered high priority, the bug certainly was).
Yours, Roland