Skip to content

Commit 967a889

Browse files
fix(copy): scope backup/restore claims to the shipped per-service matrix (#217)
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 <noreply@anthropic.com>
1 parent 04e2c42 commit 967a889

4 files changed

Lines changed: 18 additions & 6 deletions

File tree

public/llms.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ on `/api/v1/capabilities` for agent introspection.
101101

102102
> **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"}`.
103103
- **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`.
104-
- **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.
104+
- **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.
105105
- **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.
106106

107107
## Conventions an LLM should follow when scripting against the platform

src/components/PricingGrid.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ export const PRICING_GRID_TIERS: TierDefinition[] = [
136136
{ text: '1 GB MongoDB · 5 conn · 5 GB object storage' },
137137
{ text: '2 deployments · custom domain' },
138138
{ text: '50 vault entries · production env' },
139-
{ text: '14-day backups · 1-click restore' },
139+
// Worker #104: restore is self-serve for Postgres/pgvector/MongoDB;
140+
// Redis is backup-only today (restore is a tracked follow-up).
141+
{ text: '14-day backups · 1-click restore (Redis backup-only)' },
140142
],
141143
upgradesTo: 'pro',
142144
// FIX-G (2026-05-14): "Most Popular" badge moved here from Pro. The W12
@@ -187,7 +189,7 @@ export const PRICING_GRID_TIERS: TierDefinition[] = [
187189
{ text: '40 GB queues · 300 GB object storage' },
188190
{ text: '100 deployments · 50 custom domains' },
189191
{ text: '1 000 vault entries · multi-env' },
190-
{ text: '90-day backups · self-serve restore' },
192+
{ text: '90-day backups · self-serve restore (Redis backup-only)' },
191193
{ text: 'RBAC + audit log · need more? contact sales' },
192194
{ text: 'SSO / SAML (coming soon)' },
193195
{ text: '99.9% SLA (coming soon)' },

src/pages/MarketingPage.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ const PLANS: Plan[] = [
225225
features: [
226226
'50 GB Postgres · 1.5 GB Redis · 40 GB MongoDB',
227227
'100 deployments · 50 custom domains',
228-
'90-day backups · self-serve restore · RBAC + audit',
228+
'90-day backups · self-serve restore (Redis backup-only) · RBAC + audit',
229229
'Need more? Enterprise — contact sales',
230230
],
231231
cta: {
@@ -465,7 +465,12 @@ export function MarketingPage() {
465465
<div className="r"><span className="k">size</span><span className="v">10 MB / 2 conn</span></div>
466466
<div className="r"><span className="k">expires</span><span className="v dim">in 24h</span></div>
467467
<div className="r" style={{ marginTop: 8 }}>
468-
<span className="k">backup</span><span className="v ok">enabled</span>
468+
{/* Anonymous/free resources have NO backup coverage
469+
(plans.yaml backup_retention_days=0; the worker's
470+
scheduler never enqueues them) — the old "enabled"
471+
badge overstated the free tier. Backups start on
472+
paid tiers. */}
473+
<span className="k">backup</span><span className="v dim">on paid tiers</span>
469474
</div>
470475
<div className="r"><span className="k">tls</span><span className="v ok">required</span></div>
471476
</div>

src/pages/PricingPage.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,12 @@ const ROWS: Row[] = [
204204
{ label: 'RBAC + audit', values: [{ mark: 'dash' }, { mark: 'dash' }, { mark: 'dash' }, { mark: 'check' }, { mark: 'check' }] },
205205
{ label: 'Vault entries', values: [{ mark: 'dash' }, '20', '200', '1 000', CUSTOM] },
206206
{ label: 'Vault envs', values: [{ mark: 'dash' }, 'production only', 'multi-env', 'multi-env', 'multi-env'] },
207-
{ label: 'Backups', values: [{ mark: 'dash' }, '7-day · no restore', '30-day · 1-click restore', '90-day · self-serve restore', 'Custom retention'] },
207+
// Worker #104 (2026-06-11): backups cover Postgres / pgvector / MongoDB /
208+
// Redis. Restore is self-serve for Postgres / pgvector / MongoDB; Redis is
209+
// backup-only today (restore needs pod-level access — tracked follow-up).
210+
// Object storage / webhook / queue have no backup coverage — the sub line
211+
// names the covered services so the row can't be read as "everything".
212+
{ 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'] },
208213
// SSO/SAML + SLA have no backend yet — shown as not-yet-available on the
209214
// self-serve tiers (gap analysis 2026-06-03), consistent with PricingGrid +
210215
// llms.txt "coming soon". Enterprise reads 'Contact us' because these are

0 commit comments

Comments
 (0)