Skip to content

Commit ecab25e

Browse files
committed
Publish production and Cloudflare execution plan
Turn the accepted customer-owned, provider-neutral direction into evidence-gated production semantics, Cloudflare, FolioMCP, and agent-policy work. Define the transactional outbox and recipient ledger targets, fault and conformance evidence, commercial data boundary, and disposition of every post-v0.1 draft. Closes #83 Relates to #81 Signed-off-by: Yusuke Hayashi <yusuke8h@gmail.com>
1 parent 27451ef commit ecab25e

5 files changed

Lines changed: 562 additions & 47 deletions

File tree

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
# HayaSend
22

3-
Resend-compatible, AWS-native email infrastructure that runs in your own AWS
4-
account.
3+
Customer-owned safety and reliability infrastructure for transactional email.
4+
AWS works today; a provider-neutral core and Cloudflare proof are next.
55

66
> **Project status: early alpha.** The API and data model will change before
77
> v1. Do not use it for critical production traffic yet.
88
9-
HayaSend provides the developer experience of a modern email API while Amazon
10-
SES handles delivery. Email metadata and infrastructure stay under your AWS
11-
account, and HayaSend never logs message bodies.
9+
HayaSend provides the developer experience of a modern email API while the
10+
delivery provider and data plane stay in your cloud account. Amazon SES is the
11+
implemented provider today. HayaSend never logs message bodies.
1212

1313
[Project site](https://haya-inc.github.io/hayasend/) ·
1414
[Compatibility](docs/compatibility.md) ·
15+
[Execution plan](docs/execution-plan.md) ·
1516
[Support](SUPPORT.md)
1617

1718
## What works today

ROADMAP.md

Lines changed: 55 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# Roadmap
22

33
The roadmap is ordered by user risk, not by feature count.
4+
The evidence gates, adapter contract, and current draft disposition are in the
5+
[production semantics and Cloudflare proof](docs/execution-plan.md) plan.
46

5-
## v0.1 — Transactional foundation
7+
## Release gate — AWS beta
68

79
- [x] Resend-compatible single and batch send endpoints
810
- [x] official Resend Node SDK contract test
@@ -15,42 +17,57 @@ The roadmap is ordered by user risk, not by feature count.
1517
- [x] EventBridge Scheduler for long schedules
1618
- [x] presigned S3 attachment uploads beyond the API Gateway payload limit
1719
- [ ] first successful deployment integration run in a dedicated AWS test
18-
account (OIDC deploy/test/delete workflow is ready)
20+
account (OIDC deploy/test/delete workflow is ready)
1921
- [x] bootstrap-key storage in Secrets Manager
22+
- [ ] protected-main merge, exact-main CodeQL, signed release, provenance, and
23+
live project site
2024

21-
## v0.2 — Receive and forward
22-
23-
- [x] SES Mail Manager ingress endpoint and traffic policies
24-
- [x] encrypted S3 raw-message storage with configurable expiry
25-
- [x] `email.received` webhook and temporary attachment URLs
26-
- [x] deterministic receipt duplicate suppression
27-
- [x] explicit received-message forwarding through the official Node SDK
28-
- [ ] alias routing and catch-all rules
29-
- [ ] automatic forwarding that rewrites sender headers safely
30-
- [ ] loop detection and ARC preservation
31-
32-
## v0.3 — Developer workflow
33-
34-
- [x] hardened local container quickstart
35-
- [x] signed, multi-platform container and SBOM release automation
36-
- [ ] first signed public release
37-
- [x] local preview inbox
38-
- template versions using React Email
39-
- [x] `hayasend init`, `doctor`, and end-to-end `test`
40-
- `hayasend deploy` and migration commands
41-
- OpenTelemetry exports and operational dashboard
42-
- Python, Go, and direct HTTP contract tests
43-
44-
## v1 — Supported operations
45-
46-
- stable compatibility contract and upgrade policy
47-
- multi-account and multi-region management
48-
- SSO, audit exports, and configurable retention
49-
- backup, restore, disaster-recovery, and load-test evidence
50-
- published community and commercial support levels
51-
52-
## Later
53-
54-
Contacts, broadcasts, journeys, and marketing automation are intentionally
55-
deferred. They require consent, unsubscribe, suppression, abuse, and regional
56-
compliance controls that should not be rushed.
25+
No post-v0.1 draft merges into the frozen release candidate.
26+
27+
## Now — Production semantics
28+
29+
- versioned provider capability and compatibility contract
30+
- transactional outbox with automatic reconciliation
31+
- immutable recipient, attempt, and provider-event ledger
32+
- deterministic aggregates under duplicate and out-of-order events
33+
- permanent/retryable provider failure classification
34+
- fault-injection and per-adapter conformance reports
35+
- safe deploy, doctor, upgrade, rollback, and recovery evidence
36+
- scoped credentials, cost/rate controls, and content-private operations
37+
38+
## Next — Cloudflare and FolioMCP proof
39+
40+
- Workers runtime using the same public API
41+
- D1 metadata/outbox, R2 payloads, and Queues/DLQ
42+
- Cloudflare Email Sending transport and recipient event normalization
43+
- capability-aware 50-recipient and 5 MiB validation
44+
- plan-first deploy, doctor, upgrade, rollback, and cost evidence
45+
- identical shared conformance and fault-injection suite
46+
- provider switch without application-code changes
47+
- controlled non-critical FolioMCP dogfood
48+
49+
Cloudflare Email Sending is currently Beta. HayaSend will keep that status
50+
visible until both Cloudflare's service status and HayaSend's evidence justify
51+
changing it.
52+
53+
## Then — Agent-safe policy
54+
55+
- actor, application, agent, and intent identity
56+
- draft, send, and external-send permission separation
57+
- recipient/domain allowlists and deny rules
58+
- hourly/daily send and cost budgets
59+
- approval gates for sensitive, external, attachment, and high-volume sends
60+
- sandbox sink, preview, kill switch, and immutable audit
61+
- MCP only as an interface over enforced policy
62+
63+
## Parked until the proof is complete
64+
65+
- inbound alias routing, automatic forwarding, and ARC preservation
66+
- more language SDK gates beyond the shared provider conformance work
67+
- visual template-product expansion
68+
- contacts, broadcasts, journeys, and marketing automation
69+
- managed multi-tenant content data plane
70+
- SMS, push, chat, or a general notification workflow builder
71+
72+
The existing AWS receiving implementation remains supported, but it does not
73+
set the order of new work.

SUPPORT.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ delivery:
2222
- fixed-scope architecture, deployment, and migration engagements;
2323
- Resend or legacy SES forwarder migration;
2424
- DNS, SPF, DKIM, DMARC, bounce, and complaint readiness reviews;
25-
- security hardening and AWS account reviews;
25+
- security hardening and AWS or Cloudflare account reviews;
2626
- upgrades, monitoring, incident response, and response-time commitments;
27+
- provider migration, conformance review, and failure drills;
2728
- multi-account, regulated-environment, and private-roadmap work.
2829

2930
Commercial terms cover services and warranties, not access to the

docs/commercial.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
The self-hosted transactional path remains Apache-2.0:
66

77
- API and SDK compatibility;
8-
- AWS deployment templates;
9-
- SES transport and event normalization;
8+
- customer-owned AWS and Cloudflare deployment targets;
9+
- open provider capability contracts, adapters, and conformance tests;
10+
- provider transport and recipient-event normalization;
1011
- queues, retries, idempotency, and webhooks;
1112
- hosted templates, React Email interoperability, template-as-code
1213
reconciliation, safe version publishing, and bounded restore-to-draft
@@ -30,14 +31,28 @@ source restrictions:
3031
- monitoring, incident response, backups, and upgrades;
3132
- template migration, review workflows, and retention-policy design;
3233
- multi-account fleet management;
34+
- provider migration, conformance certification, and failure drills;
3335
- compliance evidence and support commitments;
3436
- a future hosted control plane that never needs to inspect message content.
3537

38+
## Management-plane data boundary
39+
40+
An optional Haya service may receive deployment identity, software and adapter
41+
version, capability digest, health, counts, durations, aggregate cost, and
42+
opaque incident references. By default it must not receive sender or recipient
43+
addresses, subjects, bodies, attachments, provider credentials, raw provider
44+
events, or signed URLs.
45+
46+
Deploy, doctor, upgrade, rollback, recovery, provider adapters, conformance,
47+
and security fixes remain part of the open data plane. Paid value comes from
48+
operating fleets and accepting support accountability, not from withholding a
49+
safe standalone product.
50+
3651
## Product principles
3752

3853
1. Do not put a critical security fix behind a paid plan.
3954
2. Do not create an unusable “community edition”.
40-
3. Keep customer email data in the customer's AWS account by default.
55+
3. Keep customer email data in the customer's cloud account by default.
4156
4. Publish compatibility and support limits precisely.
4257
5. Price accountability, convenience, and operational expertise.
4358

0 commit comments

Comments
 (0)