[Bug]: Business Premium seat plan self_serve_business_prolite is counted at baseline capacity weight 1 instead of 5
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
Research direction
Start with src/providers/codex-capacity.ts, especially CODEX_CONFIGURED_CAPACITY_WEIGHTS and configuredWeight, then read src/codex/plan.ts to understand how plan strings are normalized. Add coverage for self_serve_business_prolite alongside the existing capacity weight tests. Done when the plan is counted at weight 5, is no longer reported as unknown, and the relevant tests pass.
Written by the indexing model from the issue text.
Description
Client or integration
OpenCodex dashboard
Area
Authentication and account pool
Summary
ChatGPT Business Premium seats report the plan string self_serve_business_prolite, which is not in CODEX_CONFIGURED_CAPACITY_WEIGHTS (src/providers/codex-capacity.ts:3-9: plus 1, team 1, business 1, prolite 5, pro 20). codexPlanKey (src/codex/plan.ts:10-12) only trims and lowercases, so the exact-key lookup in configuredWeight (src/providers/codex-capacity.ts:125-130) misses and the seat falls back to CODEX_DEFAULT_CAPACITY_WEIGHT = 1. The Codex pool capacity estimate therefore counts a Premium seat as one Standard seat, and the account stays in unknownPlanAccounts permanently.
This is the calibration follow-up that #3155 / #3198 explicitly left open. #3198 made uncalibrated plans count at the baseline instead of being dropped and said a real weight would be calibrated once the plan string was known; the reporter then supplied the exact string self_serve_business_prolite in #3155, but the issue was already closed and no weight was added. Current dev still has the same five-entry map.
OpenAI now documents the multiplier, so this no longer requires a guess:
- ChatGPT Business – Overview: "Premium includes 5x more usage than Standard seats, no 5-hour usage limit".
- ChatGPT Business models and limits: "Premium seats have 5x the included usage of Standard seats, with the benefit of no 5-hour limit".
- Premium seats are coming to ChatGPT Business: "Get 5x more usage, no five-hour usage limit".
Standard Business is already calibrated at business: 1, so the documented Premium value is 5, the same weight as prolite. Observed behaviour is consistent: both Premium accounts in our pool report only the weekly window from WHAM (no five-hour window), while the Team account reports both.
Expected: self_serve_business_prolite is calibrated at weight 5 (for example as an explicit map entry, or an alias to prolite), so it leaves unknownPlanAccounts and the estimate reflects the real seat. Impact is display-only: aggregateCodexPoolCapacity is documented as never participating in selection or routing (src/providers/codex-capacity.ts:203), so this changes the dashboard / GET /api/provider-quotas estimate and nothing else. Not asking to reopen the allowlist debate from #3198; only to calibrate this one now-documented plan.
Reproduction
- Add two ChatGPT Business Premium seat accounts and one Team account to the Codex pool (
codexAccountMode: "pool"). - Open the dashboard Providers → OpenAI rate limits panel, or call
GET /api/provider-quotas. - The OpenAI report shows
aggregation.kind = "capacity-weighted-v1",includedAccounts: 3,unknownPlanAccounts: 2, and the notice that accounts on an uncalibrated plan are counted at the baseline seat weight. GET /api/codex-auth/accountsshows"plan": "self_serve_business_prolite"for both Premium seats and"plan": "team"for the Team seat.- The total capacity weight is 3 (1 + 1 + 1) instead of 11 (5 + 5 + 1).
Version
2.88.0 (deployed); the same map is present on current dev and in v2.89.0
Operating system
Linux (Debian 12 host, OpenCodex in a k3s pod)
Provider and model
openai (Codex pool), any GPT model
Logs or error output
GET /api/provider-quotas (OpenAI entry, values only)
"aggregation": {"kind": "capacity-weighted-v1", "scope": "routable-known",
"includedAccounts": 3, "excludedAccounts": 0, "unknownPlanAccounts": 2,
"missingQuotaAccounts": 0, "pausedAccounts": 0, "reauthAccounts": 0, "staleQuotaAccounts": 0}
GET /api/codex-auth/accounts (plan field only, other fields removed)
{"plan": "self_serve_business_prolite"}
{"plan": "self_serve_business_prolite"}
{"plan": "team"}
Screenshots and supporting files
Not attached: the report is fully reproducible from the two API responses above and the cited OpenAI help-center pages.
Redacted configuration
{
"providers": {
"openai": {
"adapter": "openai-responses",
"codexAccountMode": "pool",
"authMode": "forward"
}
}
}
Checks
- I searched existing issues and documentation.
- I removed secrets, tokens, account details, request credentials, and personal data.
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 1.3k
- Avg merge
- 7h 50m
- Merged PRs (30d)
- 645
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from lidge-jun/opencodex
-
[Docs]: translate the #7395 OpenGateway and Mistral provider-guide sectionsPossibly taken @MannXo claimed this 1 day ago. Opendocumentation
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
lidge-jun/opencodex#7405 · 3 comments ·
Maintainers usually reply within 1 day
-
[Bug]: resolveCodexRuntime test depends on the host's installed CodexPossibly taken A pull request linked to this issue is open or already merged. Openbug cli
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
lidge-jun/opencodex#7403 · 2 comments ·
Maintainers usually reply within 1 day
-
account-pool enhancement needs-design proxy
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
lidge-jun/opencodex#6737 · 1 comment ·
Maintainers usually reply within 1 day
-
bug streaming
Difficulty 4/5 3-5 days Newbie friendliness 45/100
lidge-jun/opencodex#7462 · 4 comments ·
Maintainers usually reply within 1 day
-
[Bug] Responses combo treats completed text as success despite tool_choice=required (NVIDIA target)Possibly taken A pull request linked to this issue is open or already merged. Openbug tools
Difficulty 5/5 Over a week Newbie friendliness 30/100
lidge-jun/opencodex#7456 · 7 comments ·
Maintainers usually reply within 1 day
All issues in lidge-jun/opencodex
Similar issues
-
agent/scanner help wanted hive/claimed-by-scanner kind/bug stage/020-claimed
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
hivecommons/rationguard#315 ·
Maintainers usually reply within 1 day
-
agent-ready area: ui-sdk priority: p3 type: chore
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
schlessera/brain-kit#2534 ·
Maintainers usually reply within 1 day
-
bug lane:gh-5
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
LLM-4-People/bridlewise-testing#122 ·
Maintainers usually reply within 1 day
-
bug priority: P2
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
enhancement priority:low ready-for-dev
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day