Close a month
What It Does
A confirmed close becomes a recorded request followed by durable execution. The job protects the month, evaluates its current readiness, recognizes due revenue, captures closure evidence and requests aging. Calendar maintenance follows the successful close.
The Flow
When Something Fails
Before acceptance, a refusal rolls back the request. After commit, a start failure leaves a queued run for the delegated reconciler. Revalidation blockers release the month and require another request after correction. Committed recognition requires forward recovery: finish the close, then reopen to reverse it.
Finalization retries while an aging run is active, within a finite repeat limit. Exhaustion fails the job and releases the month only if recognition has not completed. Calendar generation may partly commit and fail after the run succeeds. Several history events are appended separately from domain commits, so an event failure can leave committed work without its expected history entry.
Open Design Questions
The approved direction requires a close that does not wait for aging and service-resolved closer names. Requester identity must join replay comparison. Product’s authority and notification questions remain open; calendar-sequence races and failure delivery need proof.