Skip to content

Gate Team tier: remove self-serve buy CTA (CEO directive: Team not rolled out) - #169

Merged
mastermanas805 merged 1 commit into
mainfrom
gate-team-tier-remove-self-serve
Jun 4, 2026
Merged

Gate Team tier: remove self-serve buy CTA (CEO directive: Team not rolled out)#169
mastermanas805 merged 1 commit into
mainfrom
gate-team-tier-remove-self-serve

Conversation

@mastermanas805

Copy link
Copy Markdown
Member

Why

HARD CEO directive (2026-06-04): the Team plan ($199 "unlimited") is NOT rolled out and must not be presented as a buyable/self-serve plan until its unlimited-resource delivery is proven built.

This PR deliberately REVERSES DOG-10 (2026-05-29), which had removed the contact-sales CTA and pointed Team at /app/checkout. That change is overridden — do not re-apply it. Source comments + a contract test + a build-time guard document the reversal so it isn't "re-fixed."

Changes

  • src/pages/PricingPage.tsx — Team card CTA → Contact sales → mailto:sales@instanode.dev, no longer routes to /app/checkout on either billing cycle. Team price/limits stay visible in the comparison; only the buy path is removed.
  • src/components/ChangePlanModal.tsxteam removed from SELECTABLE_TIERS. A Pro/Growth user (whose only tier up is Team) now hits the existing "no upgrades — contact support" empty state, the honest sales-assisted exit.
  • public/llms.txt — Team described as "available soon — not yet self-serve"; removed from the public self-serve tier list. (SoT is the separate content repo, handled elsewhere — this is the build-time synced fallback, kept in lock-step.)
  • scripts/fetch-content.mjs + src/lib/llmsContract.test.ts — pin the gating wording (not yet a self-serve tier) via the existing requireMarkers guard + a CONTRACT_MARKERS row, so a content-repo sync can't silently re-market Team as buyable.

Tests (reversed; failing-then-passing)

  • PricingPage: Team CTA does not contain /app/checkout / plan=team and does surface a contact-sales mailto (on both monthly and yearly).
  • ChangePlanModal: team is not a selectable upgrade target for hobby / hobby_plus / pro users; a Pro user falls to the no-upgrades empty state.

Residual (out of this granular PR's scope)

src/pages/CheckoutPage.tsx still accepts ?plan=team via direct URL (the server is the real authority). No marketing CTA points there anymore. Flagged for a follow-up if a hard client-side block is wanted.

Gate

npm run gate green: 80 test files, 1115 passed / 3 skipped.

🤖 Generated with Claude Code

…lled out)

Per the 2026-06-04 HARD CEO directive, the Team plan ($199 "unlimited") is
NOT rolled out and must not be presented as a buyable/self-serve plan until
its unlimited-resource delivery is proven built. This DELIBERATELY REVERSES
DOG-10 (2026-05-29), which had removed the contact-sales CTA and pointed Team
at /app/checkout — that change is overridden and must not be re-applied.

- PricingPage: Team card CTA → "Contact sales →" mailto (sales@), no longer
  routes to /app/checkout on either billing cycle. Gate comment added.
- ChangePlanModal: drop `team` from SELECTABLE_TIERS so the in-app upgrade
  modal never offers Team. A Pro/Growth user now hits the existing
  "no upgrades — contact support" empty state (the honest sales-assisted exit).
- public/llms.txt: Team described as "available soon — not yet self-serve",
  no longer listed among the public self-serve tiers.
- fetch-content.mjs + llmsContract.test.ts: pin the gating wording with a
  build-time guard + contract test so a content sync can't silently
  re-market Team as buyable.
- Tests reversed (failing-then-passing): PricingPage asserts the Team CTA
  does NOT contain /app/checkout and surfaces contact-sales; ChangePlanModal
  asserts `team` is not a selectable target.

npm run gate: green (80 files, 1115 passed / 3 skipped).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mastermanas805
mastermanas805 enabled auto-merge (squash) June 4, 2026 16:41
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
dist/assets/index-BLJ5Tp4-.js 0 B (-100% 🔽)
dist/assets/index-BsJUZYRr.css 6.13 KB (0%)
dist/assets/index-902QtfQT.js 161.98 KB (+100% 🔺)

@mastermanas805
mastermanas805 merged commit a9c3458 into main Jun 4, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant