From 948e31c86bb24db5be9effbc1ffe63c1d80cb93b Mon Sep 17 00:00:00 2001 From: Manas Srivastava Date: Thu, 11 Jun 2026 00:37:39 +0530 Subject: [PATCH] fix(copy): scope backup/restore claims to the shipped per-service matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Worker #104 extended the customer-backup ladder: Postgres/pgvector/MongoDB now have full backup + self-serve restore; Redis backups are taken (RDB, sha-verified, downloadable) but restore is not yet wired (needs pod-level access — tracked follow-up). Object storage / webhook / queue have no backup coverage. Anonymous/free have none (plans.yaml retention=0). - PricingPage comparison "Backups" row: sub line names the covered services + the Redis backup-only caveat. - PricingGrid hobby_plus/team bullets + MarketingPage Team card: "(Redis backup-only)" qualifier on the restore claim. - MarketingPage STEP-02 mock terminal: "backup enabled" on an anonymous 24h-TTL provision overstated the free tier → "on paid tiers". - public/llms.txt: mirror of the content-repo SoT edit (content PR #31), per the established same-push convention. Gate: tsc --noEmit && npm run build && vitest run — green (82 files, 1214 passed / 3 skipped). Co-Authored-By: Claude Fable 5 --- public/llms.txt | 2 +- src/components/PricingGrid.tsx | 6 ++++-- src/pages/MarketingPage.tsx | 9 +++++++-- src/pages/PricingPage.tsx | 7 ++++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/public/llms.txt b/public/llms.txt index a039365..fe67844 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -101,7 +101,7 @@ on `/api/v1/capabilities` for agent introspection. > **Upgrading auto-promotes in-flight deployment TTLs.** When a team upgrades to any paid tier (Hobby / Hobby Plus / Pro / Growth / Team), the Razorpay subscription.charged webhook flips the team's `default_deployment_ttl_policy` from `auto_24h` to `permanent` (so every future `POST /deploy/new` defaults to no TTL) AND promotes every existing `auto_24h` non-terminal deploy to permanent (clearing `expires_at`). Per-deploy `ttl_policy='custom'` and `ttl_policy='permanent'` rows are never touched — only the `auto_24h` class is rolled forward. To restore the 24h-default behaviour after an upgrade, `PATCH /api/v1/team/settings {"default_deployment_ttl_policy":"auto_24h"}`. - **Pro**: $49/mo. 10 GB Postgres, 512 MB Redis, 5 GB Mongo, 50 GB storage, 10 apps. Resource-count cap: 5 active resources per service (redis is 3 — Redis RAM is the binding cost). Per-tier counts are introspectable via `resource_count_limit` on `/api/v1/capabilities`. -- **Team**: available soon — not yet self-serve. Planned at $199/mo with high finite limits (50 GB Postgres, 1.5 GB Redis, 40 GB Mongo, 40 GB queues, 300 GB storage, 30 GB vector, 100 deployments, 1000 vault entries, 100k webhooks), 50 custom domains, 90-day backups with self-serve restore, RBAC + audit log; SSO/SAML and a 99.9% SLA are also planned. Capacity beyond these caps (or dedicated/isolated infra, multi-region, or compliance such as SOC2/BAA/SSO/SLA/DPA) is Enterprise — contact sales. Team cannot be purchased or claimed today — contact contact@instanode.dev for onboarding. +- **Team**: available soon — not yet self-serve. Planned at $199/mo with high finite limits (50 GB Postgres, 1.5 GB Redis, 40 GB Mongo, 40 GB queues, 300 GB storage, 30 GB vector, 100 deployments, 1000 vault entries, 100k webhooks), 50 custom domains, 90-day backups with self-serve restore (backups cover Postgres, pgvector, MongoDB & Redis; restore is self-serve for Postgres/pgvector/MongoDB — Redis is backup-only today, restore coming soon), RBAC + audit log; SSO/SAML and a 99.9% SLA are also planned. Capacity beyond these caps (or dedicated/isolated infra, multi-region, or compliance such as SOC2/BAA/SSO/SLA/DPA) is Enterprise — contact sales. Team cannot be purchased or claimed today — contact contact@instanode.dev for onboarding. - **Enterprise**: custom limits, dedicated infra, compliance; contact sales@instanode.dev. Not a self-serve tier and not in `plans.yaml` — no price, no checkout. Triggers: needs more than Team's caps, dedicated/isolated or multi-region infra, or SOC2/BAA/SSO/SLA/custom DPA. ## Conventions an LLM should follow when scripting against the platform diff --git a/src/components/PricingGrid.tsx b/src/components/PricingGrid.tsx index ce31bc7..f66340e 100644 --- a/src/components/PricingGrid.tsx +++ b/src/components/PricingGrid.tsx @@ -136,7 +136,9 @@ export const PRICING_GRID_TIERS: TierDefinition[] = [ { text: '1 GB MongoDB · 5 conn · 5 GB object storage' }, { text: '2 deployments · custom domain' }, { text: '50 vault entries · production env' }, - { text: '14-day backups · 1-click restore' }, + // Worker #104: restore is self-serve for Postgres/pgvector/MongoDB; + // Redis is backup-only today (restore is a tracked follow-up). + { text: '14-day backups · 1-click restore (Redis backup-only)' }, ], upgradesTo: 'pro', // FIX-G (2026-05-14): "Most Popular" badge moved here from Pro. The W12 @@ -187,7 +189,7 @@ export const PRICING_GRID_TIERS: TierDefinition[] = [ { text: '40 GB queues · 300 GB object storage' }, { text: '100 deployments · 50 custom domains' }, { text: '1 000 vault entries · multi-env' }, - { text: '90-day backups · self-serve restore' }, + { text: '90-day backups · self-serve restore (Redis backup-only)' }, { text: 'RBAC + audit log · need more? contact sales' }, { text: 'SSO / SAML (coming soon)' }, { text: '99.9% SLA (coming soon)' }, diff --git a/src/pages/MarketingPage.tsx b/src/pages/MarketingPage.tsx index 365bbf5..89883c4 100644 --- a/src/pages/MarketingPage.tsx +++ b/src/pages/MarketingPage.tsx @@ -225,7 +225,7 @@ const PLANS: Plan[] = [ features: [ '50 GB Postgres · 1.5 GB Redis · 40 GB MongoDB', '100 deployments · 50 custom domains', - '90-day backups · self-serve restore · RBAC + audit', + '90-day backups · self-serve restore (Redis backup-only) · RBAC + audit', 'Need more? Enterprise — contact sales', ], cta: { @@ -465,7 +465,12 @@ export function MarketingPage() {
size10 MB / 2 conn
expiresin 24h
- backupenabled + {/* Anonymous/free resources have NO backup coverage + (plans.yaml backup_retention_days=0; the worker's + scheduler never enqueues them) — the old "enabled" + badge overstated the free tier. Backups start on + paid tiers. */} + backupon paid tiers
tlsrequired
diff --git a/src/pages/PricingPage.tsx b/src/pages/PricingPage.tsx index ee3bb98..e200ab7 100644 --- a/src/pages/PricingPage.tsx +++ b/src/pages/PricingPage.tsx @@ -204,7 +204,12 @@ const ROWS: Row[] = [ { label: 'RBAC + audit', values: [{ mark: 'dash' }, { mark: 'dash' }, { mark: 'dash' }, { mark: 'check' }, { mark: 'check' }] }, { label: 'Vault entries', values: [{ mark: 'dash' }, '20', '200', '1 000', CUSTOM] }, { label: 'Vault envs', values: [{ mark: 'dash' }, 'production only', 'multi-env', 'multi-env', 'multi-env'] }, - { label: 'Backups', values: [{ mark: 'dash' }, '7-day · no restore', '30-day · 1-click restore', '90-day · self-serve restore', 'Custom retention'] }, + // Worker #104 (2026-06-11): backups cover Postgres / pgvector / MongoDB / + // Redis. Restore is self-serve for Postgres / pgvector / MongoDB; Redis is + // backup-only today (restore needs pod-level access — tracked follow-up). + // Object storage / webhook / queue have no backup coverage — the sub line + // names the covered services so the row can't be read as "everything". + { label: 'Backups', sub: 'Postgres · pgvector · MongoDB · Redis — Redis is backup-only today (restore coming soon)', values: [{ mark: 'dash' }, '7-day · no restore', '30-day · 1-click restore', '90-day · self-serve restore', 'Custom retention'] }, // SSO/SAML + SLA have no backend yet — shown as not-yet-available on the // self-serve tiers (gap analysis 2026-06-03), consistent with PricingGrid + // llms.txt "coming soon". Enterprise reads 'Contact us' because these are