This seems to be too restrictive as it prevent to fix mistakes (or even prevent to adapt).
Indeed I think we should call Period.check_fiscalyear_dates for the periods if the dates of the fiscal year are modified.
And the _check on write of period should allow to modify the dates as long as it does not invalidate any account move linked to the period.