Repository navigation
Gate portal accountant snapshots and cached archives on payment readiness - #319
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Portal monthly snapshot creation and archive download could bypass accountant payment readiness, including existing ready reports and cached ZIPs. Both routes now validate the explicit selected month and run the shared cash-month gate before returning artifacts, signing URLs, or writing report/archive data. Blocked responses retain HTTP409 with reportPeriod and structured blocking rows; invalid months remain HTTP400.
Native accountant CSV and Copy actions now display the gate error and documented blocking rows safely through textContent. Failure produces no download or clipboard output and preserves the selected month. Fresh snapshot rows use the same cash-date lens and explicit disposition exclusions as readiness.
Statement upload/import-document help now describes the existing preview and explicit replacement flags consistently.
Synthetic consumers now provide verified payment evidence. The browser journey books both payments parsed from the Finom/Revolut statement fixtures through existing reconciliation APIs and attaches invoice evidence.
Validation: 34 targeted backend cases, 6 frontend navigation/reporting cases, backend source/test TypeScript, JavaScript syntax, and git diff checks passed. New backend tests prove unconfirmed payments block fresh snapshots, duplicate snapshots, fresh archives, and cached archives before any write or S3 operation. Browser and native DynamoDB transaction suites run in CI.