MVP Scope at a Glance¶
What ships at launch versus what is deferred. Detailed tiering lives in §39 (MVP-blocking §39.1, pre-launch-blocking §39.2, post-MVP/seed §39.3) and §15.10.
In MVP
| Area | What |
|---|---|
| Login | SSO via GitHub + Google (dashboard auth only) |
| Deploy | GitHub App + webhooks; Railpack (primary) / Dockerfile (fallback) via Depot; zero-downtime rolling deploys + one-click rollback |
| Service types | Web, worker |
| Config | Health check path + timeout (rendered as startup/readiness/liveness probes; TCP default) · build overrides incl. pre-deploy command (migrations) |
| Managed data | Postgres + Valkey per environment, at customer-chosen DB tiers: Mininova = containerized throwaway ("not for production") · Micronova+ = dedicated DO Managed, single-node (Managed Databases) |
| Env/secrets | Var Groups (attachable, env-scoped, per-Var-Group K8s Secret) |
| Permissions | Two-tier RBAC (workspace + project roles) + environment protection |
| Observability | Logs (ClickHouse) with live streaming; 7 customer metrics (latency, RPS, throughput, error rate, CPU, memory, network); platform self-monitoring (Grafana Cloud) |
| Autoscaling | HPA on CPU/memory (metrics-server); node capacity added manually / by Shipyard (no DOKS autoscaler on Talos) |
| Isolation | gVisor sandbox for customer code + hardened PodSpec (Kubernetes Runtime) |
| Domains | Per-service hostnames on starform.app (proxied per-hostname records; wildcard 404 catch-all — DNS & Domains) |
| Billing | Per-minute pod snapshots, plan credits, Stripe |
Deferred (post-MVP / seed — §39.3 unless noted):
| Area | Status |
|---|---|
| Customer auth primitive (JWKS, gateway SecurityPolicy, claim-to-header) | Seed-stage — distinct from MVP SSO login |
| Email primitive | Seed-stage |
| Queue primitive | Seed-stage |
| Object storage primitive (Tigris buckets, per environment) | Post-MVP (§39.3 #16) |
| ClickHouse billing audit trail (MVP = raw snapshots in Postgres) | Post-MVP (§39.3 #71) |
| CLI tool | Post-MVP |
| Cron services | Post-MVP (§39.3 #48) |
| DB promote-to-dedicated (Mininova→Micronova migration) | Post-MVP (§39.3 #49) |
| Managed-DB HA standby toggle | Post-MVP (§39.3 #50) |
| Best-effort throwaway-DB backups (pg_dump → DO Spaces) | Post-MVP (§39.3 #51) |
| Preview environments | Decision pending (launch vs seed) |
| Scale-to-zero | Post-MVP |
| Custom domains (Cloudflare for SaaS — no cert-manager) | Post-MVP (§39.3 #27) |
| Volumes / persistent storage | Post-MVP (§39.3 #7) |
| Autoscaling on RPS/latency | Deferred (needs prometheus-adapter; §39.1 #9) |
| Per-tier metric retention | Deferred (MVP = global 90d; FR-051) |
| Distributed tracing | Out of MVP scope |
| Audit logs, API tokens, status page, GDPR, rate limiting | Pre-launch-blocking (§39.2) |
| Custom roles, SSO/SAML (Enterprise), per-user env overrides | Post-MVP (§15.10) |
| BYOC (bring-your-own-cloud) | Out of scope — not offered (§37) |
Preview environments — Decision pending
Whether preview/ephemeral environments ship at launch or seed-stage is still open. They are
identified by the is_ephemeral flag, not name-matching. See
§39.
Pre-launch-blocking (§39.2)
Audit logs, API tokens, status page, GDPR, and rate limiting are pre-launch-blocking — not in the initial MVP cut, but required before public launch.
Out of scope — not offered (§37)
BYOC (bring-your-own-cloud) is explicitly not offered. See §37.
Cross-references
Full open-work tiering → §39 · RBAC build-vs-defer → §15.10 · the normative "done" definition → Functional Requirements / Success Criteria. Canonical map: Canonical Sources.