date_offset moves the put-back leg of a recode while the negative leg
stays put, so a shifted recode is a timing move (pull forward, push
out); with a shift, set may be empty. Period dimensions on the moved
rows are re-derived from pf.dim_period against the shifted date, except
where the date is null, where the existing label is kept. No shift, no
derivation: a plain recode is unchanged.
The Recode form gets the same "Shift dates" field as Clone, blank by
default and cleared after each post.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>