feat(proxy): support Ultrafast service tier - #1734
Conversation
b9526be to
7affd39
Compare
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Reviewed end to end — this is a very clean change. I traced every normalization site ( One small non-blocking note: repurposing Thanks for the thorough OpenSpec artifacts and the before/after screenshots — this made the review straightforward. |
|
Thank you for the thorough review. I merged the latest main to resolve the conflicts and parametrized the integration test to cover both fast → priority and Ultrafast end to end. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (16)
🚧 Files skipped from review as they are similar to previous changes (15)
Included review availability: Your plan includes up to 3 reviews per rolling hour; 2 remain after this review. 📝 WalkthroughWalkthroughAdds ultrafast service-tier support across API-key validation, dashboard controls, routing and Responses contracts, localization, documentation, and regression tests. Adds contributor attribution for Evan Choi and Sakthimaran. ChangesUltrafast service-tier support
Contributor records
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to This change adds opt-in support for the Ultrafast service tier while preserving existing routing and policy behavior; no actionable merge-blocking risk remains after normal checks and review. Sequence Diagram(s)sequenceDiagram
participant APIKeyAPI
participant AccountCatalog
participant UpstreamResponsesAPI
participant RequestLog
APIKeyAPI->>AccountCatalog: Check advertised ultrafast tier
AccountCatalog-->>APIKeyAPI: Return eligible account
APIKeyAPI->>UpstreamResponsesAPI: Forward service_tier: ultrafast
UpstreamResponsesAPI-->>APIKeyAPI: Return actual and billable tier
UpstreamResponsesAPI->>RequestLog: Record requested, actual, and effective tiers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
@Soju06 The conflicts are resolved and feedback addressed. When you have a chance, could you please approve the pending workflows? Thank you! |
|
Thanks for the fast turnaround — the parametrized integration test restores the fast→priority end-to-end coverage and the added request-log assertions (requested/actual/billable all |
# Conflicts: # .all-contributorsrc # app/modules/api_keys/schemas.py # app/modules/api_keys/service.py # frontend/src/features/api-keys/components/api-key-edit-dialog.tsx # frontend/src/features/api-keys/schemas.test.ts
|
@Soju06, the branch was updated to resolve the latest conflicts, so the workflows are awaiting approval again. Could you please approve them when convenient? Thank you. |
## [1.24.0](v1.23.0...v1.24.0) (2026-08-26) ### Features * **api-keys:** allow per-key reasoning effort policies ([#1642](#1642)) ([ed31b7d](ed31b7d)) * **config:** timeout-invariant linter — validate deadline/TTL inequalities at startup and in CI ([#1622](#1622)) ([d148dd9](d148dd9)) * **db:** report SQLite write transactions that outlive the busy timeout ([#1752](#1752)) ([6464e96](6464e96)) * **frontend:** configure model-source reasoning efforts ([#1848](#1848)) ([eab7155](eab7155)) * **model-sources:** advertise operator-declared reasoning efforts ([#1661](#1661)) ([f1c8d5c](f1c8d5c)) * **model-sources:** embeddings source capability ([#1776](#1776)) ([4d0f0ff](4d0f0ff)) * **proxy:** report websocket cleanup phase ([#1726](#1726)) ([0c8d921](0c8d921)) * **proxy:** support Ultrafast service tier ([#1734](#1734)) ([d522a4d](d522a4d)) * **reports:** Add API Key Filtering to Reports Dashboard ([#1728](#1728)) ([1f65f80](1f65f80)) * **reset-credits:** add refresh scheduler enable toggle ([#1701](#1701)) ([6509dd0](6509dd0)) * **telemetry:** anonymous usage telemetry with informed opt-out consent ([#1618](#1618)) ([debd7cf](debd7cf)) * **telemetry:** report consent state and send a decision-time opt-out signal ([#1835](#1835)) ([1541ee8](1541ee8)) * **ui:** customize dashboard request-log columns ([#1503](#1503)) ([138aa9f](138aa9f)) * **ui:** surface reasoning token usage ([#1801](#1801)) ([8e7589e](8e7589e)) ### Bug Fixes * **accounts:** recover Free accounts after reset ([#1700](#1700)) ([b43d0c8](b43d0c8)) * **auth:** guard the refresh singleflight negative cache by successor ownership ([#1652](#1652)) ([4ace71e](4ace71e)) * **cache:** keep an aborted invalidation bump queued ([#1748](#1748)) ([7148810](7148810)) * **chat:** omit unset tools on mapped Responses payloads ([#1725](#1725)) ([db5776c](db5776c)) * **compact:** omit oversized non-state tool tail ([#1235](#1235)) ([edb3734](edb3734)) * **compact:** recover previous-response-pinned compaction from quota-excluded owners ([#1780](#1780)) ([120af75](120af75)) * **dashboard:** distinguish first-run empty states from filter mismatch ([#1729](#1729)) ([e439043](e439043)) * **dashboard:** exclude cancelled/client_disconnected from error rate ([#1696](#1696)) ([8a7d956](8a7d956)) * **dashboard:** pin web asset MIME types against poisoned OS registries ([#1709](#1709)) ([2164b8c](2164b8c)), closes [#1698](#1698) * **dashboard:** preserve cancelled request count ([#1766](#1766)) ([ef9c68e](ef9c68e)) * **dashboard:** separate quota and purchased credits ([#1670](#1670)) ([4a08d96](4a08d96)) * **dashboard:** show cancellation totals in reports ([#1772](#1772)) ([5d27f7f](5d27f7f)) * **dashboard:** show cancelled request logs ([#1769](#1769)) ([5f2f726](5f2f726)) * **dashboard:** surface upstream route metadata ([#1767](#1767)) ([e359d49](e359d49)) * **db:** add postgres shm_size and raise default pool headroom ([#1791](#1791)) ([539cf93](539cf93)) * **db:** bound wedged SQLite session teardown and reclaim the connection ([#1778](#1778)) ([9eedb2c](9eedb2c)) * **db:** repair retired identity/warmup migration stamp ([#1847](#1847)) ([b6c217f](b6c217f)) * **docker:** upgrade util-linux family in runtime image for CVE-2026-53615 ([#1796](#1796)) ([0a4c0a1](0a4c0a1)) * **helm:** bind TTFT dashboard SQL datasource ([#1827](#1827)) ([8abd507](8abd507)) * **http-bridge:** classify recovery error frames and poison same-anchor eventless failures ([#1841](#1841)) ([01f089c](01f089c)) * **http-bridge:** dedupe retry circuit failures per send ([#1743](#1743)) ([5780a27](5780a27)) * **http-bridge:** keep idle retirements out of retry circuit ([#1677](#1677)) ([7c46719](7c46719)) * **http-bridge:** preserve goal-restart recovery across reconnects ([#1680](#1680)) ([5dc6081](5dc6081)) * **http-bridge:** refuse foreign claims on live DRAINING leases ([#1722](#1722)) ([b50cb86](b50cb86)) * **models:** apply context-window overrides to /v1 input context fields ([#1808](#1808)) ([c750dcf](c750dcf)) * **models:** correct GPT-5.6 context windows ([#1691](#1691)) ([8488bc4](8488bc4)) * **models:** raise GPT-5.6 bootstrap max_context_window to 872k ([#1813](#1813)) ([1add104](1add104)) * **proxy:** abandon unavailable owner on thread-scoped goal restart ([#1764](#1764)) ([17ae866](17ae866)) * **proxy:** absorb replay-safe compaction recovery ([#1849](#1849)) ([c597226](c597226)) * **proxy:** add explicit Daybreak capability routing ([#1742](#1742)) ([0031e3d](0031e3d)) * **proxy:** bind account-bound retries to dispatch owner ([#1829](#1829)) ([3381938](3381938)) * **proxy:** classify parameterless previous response errors ([#1818](#1818)) ([eeab46a](eeab46a)) * **proxy:** close non-stream chat collect and map error status ([#1712](#1712)) ([a85f71d](a85f71d)) * **proxy:** compact transport switch + trigger canonicalization (supersedes [#1749](#1749)) ([#1809](#1809)) ([0481ed9](0481ed9)) * **proxy:** complete disconnect cleanup — pool leak, charged reservation, mutable terminal reason ([#1645](#1645)) ([6cf7e61](6cf7e61)) * **proxy:** demote quarantined bridge reattach keys ([#1730](#1730)) ([5e1f568](5e1f568)) * **proxy:** do not rewrite thread locality for a file-pin owner ([#1765](#1765)) ([34ef7b2](34ef7b2)) * **proxy:** drop malformed compact item ids ([#1815](#1815)) ([812265d](812265d)) * **proxy:** durably recover hard HTTP bridge operations ([#1657](#1657)) ([7a0b671](7a0b671)) * **proxy:** fence successor bridge claims against the retiring predecessor ([#1751](#1751)) ([2c0dc5b](2c0dc5b)) * **proxy:** guard model-transition owner-conflict fork ([#1619](#1619)) ([52092bc](52092bc)) * **proxy:** hold fenced hard turns through cooldown ([#1739](#1739)) ([6ff51cd](6ff51cd)) * **proxy:** keep abrupt eventless websocket drops account-neutral ([#1777](#1777)) ([6c97ad6](6c97ad6)) * **proxy:** keep file-pin owner on soft 1011 reconnect ([#1761](#1761)) ([f694c44](f694c44)) * **proxy:** keep stream idle timeouts account-neutral ([#1718](#1718)) ([64da340](64da340)) * **proxy:** normalize single-account warmup failures ([#1774](#1774)) ([f92bc90](f92bc90)) * **proxy:** O(1) shared-future admission waits + event-loop lag watchdog ([#1842](#1842)) ([ed2c94d](ed2c94d)) * **proxy:** persist file ownership across replicas ([#1521](#1521)) ([2cd52e4](2cd52e4)) * **proxy:** preserve compact terminal error type ([#1824](#1824)) ([78d63e5](78d63e5)) * **proxy:** reject truncated chat completion streams ([#1833](#1833)) ([6ba083d](6ba083d)) * **proxy:** release the API-key reservation on all exits of the models endpoints ([#1653](#1653)) ([7007885](7007885)) * **proxy:** report suppressed duplicate tool-call terminals ([#1706](#1706)) ([25d6374](25d6374)) * **proxy:** retain image reservation recovery ownership ([#1822](#1822)) ([bd67c64](bd67c64)) * **proxy:** route source-owned models off the WebSocket transport ([#1659](#1659)) ([08b84a9](08b84a9)) * **proxy:** scope backend Codex affinity by thread identity ([#1703](#1703)) ([35bbb00](35bbb00)) * **proxy:** separate websocket scope cleanup budget ([#1723](#1723)) ([fd97cb8](fd97cb8)) * **proxy:** settle compact failover before account health ([#1717](#1717)) ([3093203](3093203)) * **proxy:** settle terminal spool append failures ([#1775](#1775)) ([4e48f35](4e48f35)) * **proxy:** stop abandoning an unresolved inflight session-creation future ([#1644](#1644)) ([57618c8](57618c8)) * **proxy:** sweep idle bridge sessions without request traffic ([#1747](#1747)) ([3159ebe](3159ebe)) * **proxy:** wait on usage-refresh singleflight without asyncio.shield ([#1897](#1897)) ([798203f](798203f)), closes [#1896](#1896) * **quota-planner:** compare warmup reset epochs in UTC ([#1623](#1623)) ([e4fa3f2](e4fa3f2)) * **reports:** format full Cost values with grouping separators ([#1814](#1814)) ([028a75c](028a75c)) * **review:** keep Codex review sessions resumable ([#1678](#1678)) ([e34db2d](e34db2d)) * **server:** serve h2c upgrade offers as plain HTTP/1.1 instead of rejecting them ([#1782](#1782)) ([8d265c3](8d265c3)) * **usage:** fence leaked live-usage-ingestor tasks and settle their failures deterministically ([#1783](#1783)) ([66fd103](66fd103)) * **usage:** settle live snapshots after account consolidation ([#1773](#1773)) ([3f66c28](3f66c28)) * **warmup:** warm paid-to-free transitions ([#1825](#1825)) ([68892e7](68892e7)) ### Performance Improvements * **accounts:** bound the account-listing live tail with a 2h fold lag and a 30s summary cache ([#1792](#1792)) ([c1caa44](c1caa44)) * **accounts:** make account deletion a fast mark + background batch drain ([#1795](#1795)) ([d4f9e23](d4f9e23)) * **api-keys,proxy:** shape ORM hot-path queries ([#1788](#1788)) ([7dacb04](7dacb04)) * **api-keys:** skip usage reservations when no limit applies ([#1789](#1789)) ([8a2d066](8a2d066)) * coalesce same-owner sticky session TTL refresh upserts ([#1790](#1790)) ([076aab8](076aab8)) * **dashboard:** cap projections bulk usage-history read per account ([#1779](#1779)) ([d4c43ef](d4c43ef)) * **middleware:** convert BaseHTTPMiddleware layers to pure ASGI ([#1787](#1787)) ([94057cc](94057cc)) * **proxy:** disable permessage-deflate on direct-egress upstream websockets ([#1786](#1786)) ([2e4a580](2e4a580)) * **proxy:** relay unmodified SSE frames verbatim ([#1785](#1785)) ([980572e](980572e)) * **proxy:** validate stream payloads only for lifecycle events ([#1784](#1784)) ([9d9f099](9d9f099)) ### Documentation * **dashboard:** clarify routing, sticky affinity, quota thresholds, warm-up, and eligibility copy ([#1781](#1781)) ([6ff22e0](6ff22e0)) * **openspec:** archive 90 landed changes and sync their specs ([#1713](#1713)) ([c3f0c56](c3f0c56)) * **openspec:** archive landed performance and reliability changes ([#1694](#1694)) ([6b3db74](6b3db74)) * **proxy:** document cluster-wide account cap partitioning ([#1750](#1750)) ([560fb50](560fb50)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Summary
OpenAI added the access-controlled Ultrafast Processing tier, currently documented for
gpt-5.6-solin the Responses API reference. This PR lets codex-lb accept the canonicalservice_tier: "ultrafast"value in API-key policies and the dashboard, then preserve it through the existing Responses routing and logging paths.Type of change
fix:— bug fix (no behavior change beyond the bug)feat:— new user-facing feature or capabilityrefactor:— internal refactor (no behavior change, no API change)docs:— documentation onlychore:/ci:/build:— tooling, CI, packagingtest:— test-only change!after the type, e.g.feat!:or includeBREAKING CHANGE:footer)Linked issue: N/A — no matching issue or discussion was found.
OpenSpec
shape, SSE framing, OAuth flow) and preserves upstream-equivalent behavior
Change directory:
openspec/changes/archive/2026-08-14-support-ultrafast-service-tier/Changes
ultrafastAPI-key enforcement values without normalizing them topriority.Simplicity
simplicity-budget-approvedlabel).env.example/ dashboard nav within budget (none changed)Test plan
OpenSpec verification completed with 7/7 tasks, 3/3 requirements, and 6/6 scenarios covered, with no critical, warning, or suggestion findings. The full main-spec validation remains blocked by existing upstream validation debt; the added
api-keysrequirement validates strictly, and the new requirements add no validation errors.Screenshots / output
Before:
After:
Checklist
<type>(<scope>)?: <subject>).uv run pre-commit run local-ci --hook-stage manual --all-filesor the relevantmake <target>subset locally.openspec validate --specspasses and/opsx:verifyis clean — verification is clean; full spec validation has pre-existing upstream failures described above.Summary by CodeRabbit
New Features
Documentation
Tests