Design for review · 09 / 11

Proposed architecture. Pilot products, privacy policy and cost-risk acceptance remain open.

Cost envelope and delivery effort

All workload, storage and effort figures on this page are Estimated, not Measured. Prices are published USD rates checked on 2 November 2026, before tax, domain registration or account-wide usage from other projects. Nothing here provisions a paid service.

Pilot workload and application ceilings

Baseline assumption: 100 accounts × 150 alerts per month = 15,000 alerts. Stress envelope: 50,000 accepted alerts per billing month across both environments, maximum raw size 64 KiB. This is a proposed admission envelope; Owner approves pilot size separately.

Resource Estimated controlled maximum Guard
Accepted alerts 50,000 per billing month; 100 per account/day Atomic global and account reservations before persistence
Private API requests 100,000 per billing month, 60/account/minute Authenticated admission counters; pagination; UI backoff
Recalculation jobs 10,000 per billing month Coalesce account/period versions; at most 500 facts per job; fail unavailable if affected scope exceeds verified operator bounds
Worker invocations 330,000 from admitted work 50k intake + 150k parse attempts + 100k API + 30k recalc attempts
CPU 15.25 million ms for the above work Intake max 25 ms, other workers max 50 ms per invocation; parser compatibility/load spike must pass
Queue operations Reserve at most 600,000/month including DLQ and retry overhead At most three attempts; IDs under 1 KB; all dispatch and housekeeping counted
D1 rows Reserve at most 25 million read and 5 million written/month Indexed bounded queries, index-write allowance, metadata audit and 20% early stop
D1 storage 4 GB combined testing/production Pause intake before 5 GB included limit; no silent history pruning
R2 live bytes About 3.28 GB if all 50k maximum-size emails coexist Byte reservation, raw expiry, no attachment copies
R2 operations At most 200k Class A, 500k Class B/month Count writes, lists, replay reads and cleanup overhead
AI / Containers / Postgres Zero in the baseline Disabled, unprovisioned; no fallback paid vendor

Budget reservations live in primary D1 and use conditional atomic writes. Failed work does not refund a reservation until reconciliation proves the operation did not occur. Per-worker CPU limits bound an invocation; they are not account spending caps. Reserve a separate housekeeping margin of 1 million CPU ms and job capacity inside the monthly envelope. Query bounds and real metadata must validate the D1 estimates before pilot enablement.

When a cap is reached, new intake or recomputation pauses with an honest pending/unavailable state. Existing history remains accessible within the reserved read budget. Deletion remains operational through reserved capacity. Do not repeatedly enqueue overflow work for tomorrow.

Published price comparison

Item Included or published price Estimated pilot incremental charge
Workers Paid US$5/month; 10 million requests, 30 million CPU ms included US$0 within envelope
Workers overage US$0.30/million requests; US$0.02/million CPU ms Not authorized as normal operation
D1 Paid 25 billion rows read, 50 million written, 5 GB included US$0 within envelope
D1 overage US$0.001/million reads; US$1/million writes; US$0.75/GB-month Pause before planned overage
Queues 1 million operations included; US$0.40/million after US$0 within envelope
R2 Standard 10 GB-month, 1 million Class A and 10 million Class B included US$0 within envelope
R2 overage US$0.015/GB-month, US$4.50/million A, US$0.36/million B Pause before planned overage; provider rounds billing units

Estimated base total: US$5/month, assuming these allowances are available in the account and configured resources stay within the envelope. Included allowances are shared with other workloads. Before enabling the pilot, reconcile the whole account's usage, not only Optima's counters.

Sources: Workers pricing, D1 pricing, Queues pricing, R2 pricing.

Residual billing risk and stop procedure

Cloudflare provides no general account hard spending cap. Rejected API calls and mail still invoke Workers before application admission, and cleanup/monitoring also consume resources. Therefore these application limits do not guarantee a US$5 maximum during a flood or a bug. Uncontrolled ingress has no finite worst-case bill in this design.

Use provider-side rate controls where available, disable public signup during the pilot and reject unapproved tags early. Set a US$5 account budget alert and early usage alerts at 50% and 80% of each included allowance. Proposed monitor runs hourly; alert delivery and operator response can lag. A primary-D1 kill switch stops expensive writes and jobs. If ingress continues, the runbook removes the email route and disables the affected public Worker route. A kill switch inside a Worker alone cannot stop invocation charges.

The hard unresolved decision is whether the Owner accepts this residual Cloudflare exposure. If an absolute US$5 ceiling is mandatory, do not enable paid production intake until a separately approved provider-level containment approach exists. No extra paid service is silently added to solve it.

Effort by requirement

Ranges are Estimated engineer-days of focused implementation and checks, not elapsed dates or a commitment. They exclude waiting for issuer terms and pilot participants. Shared plumbing is charged once in the most relevant row.

Scope Estimated effort Main uncertainty
F-01 private access 3–5 Workers auth adapter, cross-account tests
F-02 card identity 2–3 Exact pilot list, artwork rights
F-03 intake/setup 5–8 Provider confirmations, MIME variants, dedupe
F-04 periods/credits 4–7 Posting, FX and late refunds
F-05 rule engine 8–15 Product-specific operators and verified fixtures
F-06 compact Home 2–3 Snapshot and conditional allowance presentation
F-07 transactions/MCC 2–4 Provenance, pagination and mixed portions
F-08 review sheets 3–5 Conflicts, failure preservation, focus behaviour
F-09 history 3–5 Revisions and actual-period navigation
F-10 covered share 1–2 Credit/unknown/partial-cap reconciliation
F-11 priorities/flags 2–4 Evidence and comparable reward units
F-12 phone UI 2–4 Accessibility and empty/error variants
Privacy, operations, CI integration and release tests 5–8 Deletion recovery, budgets and backend adapter
Total before contingency 42–73 Refine after spikes; backend/frontend work can overlap

A proposed 25% contingency yields about 53–92 engineer-days. This is not a schedule; team availability and review/test time determine calendar duration. The largest risk is incomplete reward evidence, not chart implementation. Do not trade away uncertainty or tenant isolation to meet an inferred deadline.