From a5173d1601224e7ab121ae61e105d8f751c0c94b Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Thu, 20 Aug 2026 19:00:11 +0330 Subject: [PATCH] docs(plan): close dashboard contract gates --- tasks/plan.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tasks/plan.md b/tasks/plan.md index 137b0bc..fdf3b4c 100644 --- a/tasks/plan.md +++ b/tasks/plan.md @@ -46,10 +46,11 @@ Implementation cannot start until all items in Gate A are approved. Foundation w ### Gate A — contract approval -- [ ] Approve or revise the backend draft API/OpenAPI contract and assign a stable version/checksum. -- [ ] Resolve the five API product questions: CSV limits, BOM/headers, audit retention, terminal-id presentation, and production Problem Details base URI. -- [ ] Reconcile the UX export states with synchronous CSV delivery and error handling. -- [ ] Confirm Nginx fallback behavior for deep links and the same-origin `/api/v1` proxy. +- [x] Backend OpenAPI `1.0.0` is approved; implementation Task 1 records its source commit/checksum before generation. +- [x] CSV limits/encoding, audit retention, terminal-reference presentation, and the production Problem Details URI namespace are approved. +- [x] UX export states are reconciled with synchronous CSV delivery and error handling. +- [x] Nginx serves history fallback only for frontend routes; `/api/v1` and reserved operational paths never fall through to `index.html`. +- [ ] Obtain a separate explicit instruction to begin implementation. - [ ] Confirm `merchant.displayName` from `AuthSession` is the shell/export display authority. - [ ] Confirm whether visible chart-data tables are sufficient or chart-data downloads are also required. @@ -147,7 +148,7 @@ Route groups share authentication/layout requirements without changing public UR | Form/dialog/drawer state | Owning component | Local Svelte rune state | | Generated transport types | Build output/source | Regenerated from approved OpenAPI; never hand-edited | -Ready section content remains immutable for a run revision. Event reconciliation is idempotent by event and section identity. A sibling event cannot erase a valid ready section. +Ready section content remains immutable for a run dataset snapshot. Event reconciliation is idempotent by event and section identity. A sibling event cannot erase a valid ready section. ### 5.4 API and error handling