Period locking against posting and late effects
Verification Boundary
This suite exercises the named persistence or service behavior on the local integration database. Its bindings can cover parts of a combined capability scenario.
What This Suite Proves
Separate connections hold a shared month lock while finalization waits for an exclusive lock. Other cases refuse protected-date batch creation and post reconciliation into the next open month with a late marker.
What It Does Not Prove
The protected-date assertion calls batch creation. It is not ordinary posting or unposting proof.
Real Dependencies and Test Doubles
The suite uses local PostgreSQL with the application persistence and its declared constraints. Fixture contexts supply callers and time. Durable job suites run the task handlers in process and selected fault cases replace financial ports.
Must Not Be Doubled
The persistence and database constraints under assertion must remain real. A financial port stand-in cannot qualify actual recognition or reversal; those outcomes require the real posting suite.