Readiness, verification and sources
Build order
- Close pilot-card, terms, retention and residual-billing decisions. Run bounded compatibility and forwarding spikes with synthetic or explicitly redacted inputs.
- Ravi drafts the proto and versioned engine input/output shapes. Kai and Mira review the contract. Do not start with screen-specific response calculators.
- Generate contract mocks and fixtures. Mira builds UI against those mocks while Ravi builds intake, ledger and evaluation modules.
- Integrate real backend in testing. Reconcile chart/list/sheet totals, verify authorization, run failure and duplicate cases, and test all applicable product operators.
- Tester signs off acceptance evidence. Kai reviews contract, migrations, infra, caching, budgets and security, then approves a tagged production release.
No engineer work is assigned by this document alone. The Owner's request authorizes preparing the technical design, not provisioning new paid services.
Requirement traceability
| PRD | Design responsibility | Required behaviour check |
|---|---|---|
| F-01 | Session and tenant boundary | Signed-out deep link; two-account ID/cursor attacks; immediate sign-out |
| F-02 | Product catalogue and dated settings | Ambiguous products; missing artwork; exact product and last four |
| F-03 | Intake, parser and outbox | Six-bank/provider matrix; changed-MIME duplicates; setup failures |
| F-04 | Ledger and period resolver | Singapore boundaries; short months; refunds; unknown FX |
| F-05 | Versioned evaluator | Every applicable Appendix A operator, including ordering and conditional gates |
| F-06 | Snapshot and allowance contract | Minimum versus cap; independent allowances; unknown capacity |
| F-07 | Transaction facts/results | Reach all rows; code provenance; mixed portions and explanations |
| F-08 | Correction command and sheet | Cancel; error preserves entries; optimistic conflict; focus trap/restore |
| F-09 | Period projection and revisions | Actual previous/next periods; filters; late alert; persistent uncertainty |
| F-10 | Disjoint portions and purchase denominator | Zero purchases; credits; cap crossing; no double-covered amount |
| F-11 | Priority and evidence comparator | Tie-breaking; no incomparable-unit best-card claim |
| F-12 | Frontend design and accessibility | 360px fit; 44px actions; DM Sans; text states beyond colour |
The current mockup PASS proves reviewed static visual states only. It does not prove keyboard focus, persistence, banking rules, reliable alert delivery or this architecture.
Open gates and decision owners
| Gate | Owner | Evidence needed |
|---|---|---|
| Q1 exact pilot cards | Owner + Pia | Participant products and required settings |
| Q2/Q3 alert evidence | Backend, reviewed by Kai | Redacted real alerts via Gmail and Outlook for planned issuers; MCC and authentication provenance |
| Q4/Q11 exact rewards | Product terms research + Kai | Complete dated terms, posting/rounding/refund/cap-order fixtures |
| Q5 effort/cost | Kai + Owner | This estimate reviewed; deployed resource measurements; account budget headroom |
| Q6 retention/deletion | Owner + Kai + privacy reviewer | Policy approval, location/processor review, deletion and restore drill |
| Q7 artwork | Pia | Usage rights or plain-card fallback |
| Q8 proactive alerts | Pia + Owner | Separate product decision; no push implementation now |
| Q9 understanding | Pia + Tester | Pilot tasks distinguish minimum, cap and unknown portions |
| Q10/Q12 UI completeness | Pia + Tester | Reconcile v0.17 coverage with error, empty, refund, correction and account-condition states |
| Runtime portability | Backend + Frontend | Connect/auth/MIME/D1 spike and pinned dependency versions |
| Residual Cloudflare exposure | Owner | Explicit risk decision before paid live intake |
| Documentation hosting | Existing publication task | Verified upload/deployment route; publishing a document does not close app readiness |
Spike acceptance plans
- Runtime spike: make a same-origin Connect GET, protected command and OIDC callback run in deployed Workers; record versions, CPU, failures and D1 batch conflict handling.
- Forwarding spike: cover expected and malformed provider confirmations, original/forwarded authentication headers, duplicate formats, recurring/instalment/refund/FX examples and ambiguous last-four matches. No supported-bank claim without fixtures.
- Reward spike: compare hand-calculated official-term fixtures to evaluator results, including period-boundary cases and S$5/S$1 rounding order. Keep unsupported operators unavailable.
- Capacity spike: run the proposed cohort's reads and write bursts; report p95, errors, row scans, bytes and CPU. Demonstrate quotas fail closed, retries terminate and no partial revision publishes.
- Privacy drill: delete an account during queued intake, prove no resurrection, restore isolated recovery data and replay deletion markers before traffic.
Source register
Product baseline: PRD v1.1, dated 2 November 2026. The local source is preserved in the bundle. No issuer facts have been independently re-certified by this technical design; enabling a card requires the PRD's exact-product gates.
Channel decisions: Google-first (D4), tagged forwarding (D2), honest reward estimates (D5/D6), month/cycle history (D1/D8/D10), corrections in sheets (D11) and covered-share refinements (D12/D14). Mockup v0.17 revision 3 PASS is channel sequence 281. Open pilot/retention recommendations are sequence 258. CI ownership and merge rules come from Kai's standing AGENTS.md dated 2 November 2026.
Platform sources checked 2 November 2026:
- TanStack Start on Workers
- Workers pricing and limits
- D1 pricing, limits and recovery window, batch and Sessions API
- Queues pricing and delivery guarantee
- R2 pricing
- KV consistency
- Email limits and email handler
- Google OpenID Connect
- Connect protocol and Buf breaking checks
No private customer data, access tokens or real email samples belong in these public documentation pages.