Execution Rechecks Readiness While Holding the Period Lock
Context
The month’s work can change after a controller reviews the screen. Execution needs its own recorded basis for proceeding.
Decision
Use the job’s calculation as the binding review and preserve it on the run and successful snapshot. A required blocker returns the protected month to open in the same transaction.
Alternatives Considered
Also reject unusable readiness at submission. An early check cannot replace execution revalidation; whether to add that interaction remains an existing product question.
Accept the displayed evaluation as authorization. The approved execution direction requires another evaluation when the job acts.
Retain closing state after a readiness blocker. Staff need to correct the outstanding books and submit afresh; the current implementation releases the month instead.
Consequences
Revalidation persists its calculation and can release the month, so it is a writable validation path. A blocking refusal requires a new request after correction rather than retry of the released run. Posting waits while the binding evaluation holds the target month. The shared transaction does not freeze every record that readiness reads.