Explicit fiscal generation with calendar checks at commit
Context
Controllers determine calendar coverage. Period lookup reports whether a date is covered, while Close controls period standing.
Decision
Creation supplies the first two years. Staff explicitly extends coverage by one to five years within the five-year starting-date horizon; lookups and scheduled work do not generate years. Database checks protect monthly boundaries, sequence and twelve periods per year.
Alternatives Considered
Generate missing coverage during lookup or a scheduled roll. The cited milestone choice reserves calendar extension for explicit controller action.
Validate calendar shape only in the service. Shared-table writers also need the database’s deferred calendar checks.
Consequences
A recurring roll outside configured coverage fails with the uncovered date and unit.
The examined implementation offers no advance coverage warning.
Close writes period standing, and the database derives year standing from its periods.