Skip to content

Gate portal accountant snapshots and cached archives on payment readiness - #319

Merged
alexeygrigorev merged 4 commits into
mainfrom
fix/portal-package-readiness
Nov 4, 2026
Merged

alexeygrigorev merged 4 commits into
mainfrom
fix/portal-package-readiness

Conversation

@alexeygrigorev

@alexeygrigorev alexeygrigorev commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

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.

@alexeygrigorev
alexeygrigorev merged commit 736767a into main Nov 4, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant