Fix Cloud VM limits: 50 independent machines per paid seat
Summary
New Machine rejected the third default VM: the account had 4 vCPUs, requested 2 more, and hit a separate 5-vCPU shared pool despite a 50-machine allowance (production trace 00579691b06de3289d70e53e4204f178). The configured CPU-pool disable flag was not read by the backend.
Remove aggregate CPU, memory, and disk quotas from create, fork, restore, Base open/reset, and resize. Paid plans retain 50 machines per seat, with Team seats multiplying that allowance; retired environment overrides cannot silently lower it. Keep transactional count enforcement, idempotency, per-machine size validation, and fork/resize recovery. Update native and web pricing to describe independent machine resources and remove obsolete error copy from all locales.
Testing
- Test-only commit reproduces the exact 4 + 2 > 5 rejection against real Postgres on a leased fleet Mac; the fix commit admits 50 machines and rejects the 51st.
- Concurrent requests for the final slot admit exactly one; an idempotent retry succeeds at capacity.
- Base open/reset, create during resize, resize during fork, and existing recovery/race coverage pass.
- 787 VM/pricing/environment tests verified, including Postgres behavior tests. One missing CLI fixture in the remote test checkout was supplied and its suite rerun successfully.
- Typecheck and complexity gate pass. Focused ESLint has no errors (one pre-existing unused-helper warning).
- Localization audit: all 20 web catalogs parse; English/Japanese pricing and four native catalog keys match; retired shared-pool errors removed everywhere.
- Preview: https://cmux41-eh0fe8i41-manaflow.vercel.app/pricing
- Staging deployment of
4fbded7edb: created three 8-GB machines in one paid test account, listed all three withmaxActiveVms: 50, retried the third idempotently, and deleted all test machines/account afterward. Unauthenticated list still returns 401. Staging environment audit passes. - Live staging: https://cmux-staging-nvqwnc6xi-manaflow.vercel.app/pricing
- Tagged Mac build of pushed HEAD
4fbded7edbpassed on the fleet: vm-independent-limits. The tag compiles the native pricing-copy changes; backend behavior was verified on staging.
Dogfood
The behavior change is server-side. The preview shows the new pricing, and the backend has been dogfooded on staging. Production still enforces the old quota until deployment. After deployment, an account with two default machines should create a third and continue up to 50 per paid seat without aggregate CPU/memory/disk errors. No customer VMs were deleted or changed.
Production deployment and merge await the maintainer's dogfood approval. No database migration is needed.
Summary by CodeRabbit
-
New Features
- Cloud VMs now provide independent CPU, memory, and disk resources per machine.
- VM sizing supports 4–64 GB RAM and disks up to 256 GB, with no overage billing.
- Paid plans now consistently use their advertised machine allowances.
-
Updates
- Pricing pages, FAQs, and localized content now describe per-VM resources.
- Shared-resource pool exhaustion messaging and related handling have been removed.
- Retired deployment overrides no longer reduce paid-plan VM allowances.
-
Tests
- Added coverage for independent VM limits, concurrent operations, resizing, and base workflows.