Skip to content

chore: release v2.3.0-beta.0 (sequential drain-first, #509) - #511

Merged
ndycode merged 1 commit into
mainfrom
release/v2.3.0-beta.0
Jun 4, 2026
Merged

chore: release v2.3.0-beta.0 (sequential drain-first, #509)#511
ndycode merged 1 commit into
mainfrom
release/v2.3.0-beta.0

Conversation

@ndycode

@ndycode ndycode commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Summary

Release prep for the opt-in sequential / drain-first account scheduling mode (issue #509), already merged to main as the feature commit (#510). This PR carries the version bump to 2.3.0-beta.0 plus the release notes and portal wiring. Published to npm under the beta dist-tag.

What ships

  • schedulingStrategy=sequential (env CODEX_AUTH_SCHEDULING_STRATEGY=sequential): drains one account fully before advancing to the next, so quota windows stagger across the pool for longer uninterrupted sessions.
  • Default hybrid behavior unchanged; the mode is fully opt-in.
  • Manual pin still wins; per-session affinity is bypassed in sequential mode.

Files

  • package.json, package-lock.json, .codex-plugin/plugin.json: version -> 2.3.0-beta.0
  • docs/releases/v2.3.0-beta.0.md: prerelease notes (area-first format)
  • README.md, docs/README.md: add Current prerelease links

Verification

  • Full suite: 280 files / 4398 tests pass, exit 0 (vitest run --maxWorkers=1)
  • Build + typecheck + lint: all clean
  • Live drain-first harness (real proxy, real timers, real quota path): drain -> failover -> wrap-reclaim verified
  • E2E smoke on the BUILT dist artifact with schedulingStrategy=sequential, isolated sandbox: all phases pass
  • Built CLI config explain surfaces schedulingStrategy = "hybrid" (default) [CODEX_AUTH_SCHEDULING_STRATEGY]

Notes

  • Beta is not logged in the top-level CHANGELOG, matching prior v2.1.13-beta.* convention (prerelease notes live in docs/releases/).
  • Whether drain-first delivers longer sessions depends on each pool's real quota-window timing, which is why this ships as a beta for validation before a stable cut.

note: greptile review for oc-chatgpt-multi-auth. cite files like lib/foo.ts:123. confirm regression tests + windows concurrency/token redaction coverage.

Greptile Summary

release prep for v2.3.0-beta.0, wiring in the sequential / drain-first scheduling mode (#510) with a version bump across package.json, package-lock.json, and .codex-plugin/plugin.json, plus prerelease notes and portal links.

  • version bump: all three manifests aligned to 2.3.0-beta.0; package-lock.json was silently stale by two patch versions (was 2.2.0) and its mcodex bin entry was corrected from scripts/mcodexscripts/mcodex.js, neither of which is noted in the release notes.
  • release notes (docs/releases/v2.3.0-beta.0.md): covers drain-first logic, selector/proxy/config test inventory, and beta rationale; no mention of windows filesystem retry behavior or token-safety checks on the sequential failover path, both of which AGENTS.md flags as standing requirements.
  • readme/docs portal: prerelease row inserted correctly above the stable row with the right dist-tag install command.

Confidence Score: 4/5

safe to merge as a release-prep PR; the actual feature logic landed in a prior commit and is not touched here.

the changes are version bumps and documentation only. the lockfile carried a two-patch-version lag and a missing .js extension on the mcodex bin entry — both corrected here but not surfaced in the release notes, which makes the published artifact history slightly harder to audit. the release notes' test inventory is solid for logic coverage but omits explicit confirmation of windows filesystem retry behavior and token-safety checks on the sequential failover path, two areas AGENTS.md calls out as standing requirements for this codebase.

package-lock.json — carries the silent bin-path fix and version correction worth noting in the changelog; docs/releases/v2.3.0-beta.0.md — worth adding a notes bullet on windows retry and token-header scrubbing coverage.

Important Files Changed

Filename Overview
package.json version bumped from 2.2.2 to 2.3.0-beta.0; bin entry for mcodex already correctly points to scripts/mcodex.js; no dependency changes
package-lock.json lockfile was stale by two patch versions (2.2.0 vs package.json 2.2.2) before this bump; mcodex bin path fixed from scripts/mcodex to scripts/mcodex.js — fix not mentioned in release notes
docs/releases/v2.3.0-beta.0.md good test inventory for drain-first logic; missing explicit mention of windows filesystem retry coverage and token-safety verification on sequential failover
.codex-plugin/plugin.json version bumped from 2.2.2 to 2.3.0-beta.0; no other changes
README.md prerelease link added above current stable entry; correct dist-tag install command
docs/README.md release table updated with prerelease row; link and install command are correct

Sequence Diagram

sequenceDiagram
    participant C as Client Request
    participant P as Runtime Proxy
    participant S as Scheduler (sequential)
    participant A1 as Account[0]
    participant A2 as Account[1]

    C->>P: request
    P->>S: selectAccount()
    S->>A1: is usable?
    A1-->>S: yes (not exhausted)
    S-->>P: Account[0]
    P->>A1: forward request
    A1-->>P: response
    P-->>C: response

    C->>P: next request
    P->>S: selectAccount()
    S->>A1: is usable?
    A1-->>S: no (rate-limited / cooldown)
    S->>A2: is usable?
    A2-->>S: yes
    S-->>P: Account[1] (cursor advances)
    P->>A2: forward request
    A2-->>P: response
    P-->>C: response

    Note over S: on next scan, if Account[0] quota window recovered → reclaims active slot
Loading

Fix All in Codex

Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
package-lock.json:27
**silent bin-path fix bundled into version bump**

the `mcodex` bin entry changed from `scripts/mcodex` (no extension) to `scripts/mcodex.js` — a real correctness fix that isn't called out in the PR description or release notes. separately, the lockfile was at `2.2.0` while `package.json` was already at `2.2.2`, meaning two patch releases shipped without regenerating the lockfile. neither issue appears in the release notes, so anyone auditing v2.2.x published artifacts won't find a trace of the bin-path discrepancy here.

### Issue 2 of 2
docs/releases/v2.3.0-beta.0.md:26-35
**no windows filesystem or token-safety coverage noted for sequential drain path**

the test inventory is thorough for the happy-path and logic branches, but `AGENTS.md` explicitly flags windows filesystem safety (`EBUSY`/`EPERM`/`ENOTEMPTY` retries) and prohibits exposing tokens in proxy response headers/logs. the sequential cursor is mutable shared state — write failures mid-advance on windows could leave the cursor corrupt or unadvanced, and a failover that surfaces a fresh token during drain isn't ruled out by the listed test cases. worth documenting whether the routing-mutex commit path has windows-retry coverage and whether token headers are scrubbed on sequential failover, even if only as a notes bullet.

Reviews (1): Last reviewed commit: "chore: release v2.3.0-beta.0 (#509 seque..." | Re-trigger Greptile

Greptile also left 2 inline comments on this PR.

Prerelease that ships the opt-in sequential / drain-first account scheduling mode from issue #509 to npm under the beta dist-tag. Set schedulingStrategy=sequential (or CODEX_AUTH_SCHEDULING_STRATEGY=sequential) to drain one account fully before advancing to the next, staggering quota-window recovery across the pool for longer uninterrupted sessions. Default hybrid behavior is unchanged; the mode is fully opt-in. Manual pin still wins and per-session affinity is bypassed in sequential mode.
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Severity: Minor

This prerelease PR (v2.3.0-beta.0) is a mechanical version and documentation update that packages the opt-in sequential account scheduling feature already merged in #510 for beta publication. No architectural decisions or code changes are in scope; the full test suite (4398 tests across 280 files) passes cleanly with no regression risk.

Version and manifest updates:

  • package.json, .codex-plugin/plugin.json: version 2.2.2 → 2.3.0-beta.0

Documentation additions:

  • docs/releases/v2.3.0-beta.0.md: prerelease notes documenting the opt-in sequential scheduling mode, its drain-first behavior, interaction with manual pinning, and test coverage
  • README.md, docs/README.md: updated to point to the new prerelease notes with beta install instructions

Verification status:

  • Vitest suite: all 4398 tests pass (exit 0, maxWorkers=1)
  • Build, typecheck, lint: clean
  • E2E smoke testing verified (drain, failover, wrap-reclaim phases; schedulingStrategy=sequential)
  • config explain correctly displays the default hybrid mode and environment variable

Feature details (already merged in #510):

  • New sequential scheduling option drains one account fully before advancing to the next; default hybrid behavior unchanged
  • Manual account pinning takes precedence; per-session affinity bypassed in sequential mode
  • Beta is published under npm's beta dist-tag, not added to top-level CHANGELOG

Walkthrough

version 2.3.0-beta.0 updates the plugin and npm package manifests to a beta tag, adds release notes describing the new opt-in sequential account scheduling mode, and indexes the prerelease in both the root and docs readme files.

Changes

v2.3.0-beta.0 release preparation

Layer / File(s) Summary
Version synchronization across manifests
.codex-plugin/plugin.json, package.json
Version bumped to 2.3.0-beta.0 in both the plugin manifest and npm package manifest.
Release notes and documentation updates
README.md, docs/README.md, docs/releases/v2.3.0-beta.0.md
Release notes introduced covering the sequential account rotation mode (opt-in, drains one account before advancing), its default-off status (schedulingStrategy/CODEX_AUTH_SCHEDULING_STRATEGY, default hybrid), interaction with manual pinning, per-session affinity bypass, and required test coverage. Documentation indexes updated to link the prerelease.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes


note: the release notes reference a new sequential scheduling strategy and test coverage areas (drain-first selector coverage, proxy-level coverage, and schedulingStrategy config coverage) but the actual implementation isn't visible in this PR—verify those test additions landed in the prior commit(s) and check for windows concurrency edge cases if the scheduler interacts with multi-threaded auth flows. the beta install command in the docs is accurate but confirm the npm registry has the @beta dist-tag properly configured before publishing.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed title follows conventional commits format with chore: type and concise 59-char summary clearly describing the version release and main feature.
Description check ✅ Passed description is comprehensive with summary, what ships, files changed, verification steps, and notes; validation checklist present but unchecked items not blocking—documentation already updated accordingly.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v2.3.0-beta.0
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch release/v2.3.0-beta.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread package-lock.json
@@ -25,7 +25,7 @@
"codex-multi-auth": "scripts/codex-multi-auth.js",
"codex-multi-auth-app-launcher": "scripts/codex-app-launcher.js",
"codex-multi-auth-codex": "scripts/codex.js",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 silent bin-path fix bundled into version bump

the mcodex bin entry changed from scripts/mcodex (no extension) to scripts/mcodex.js — a real correctness fix that isn't called out in the PR description or release notes. separately, the lockfile was at 2.2.0 while package.json was already at 2.2.2, meaning two patch releases shipped without regenerating the lockfile. neither issue appears in the release notes, so anyone auditing v2.2.x published artifacts won't find a trace of the bin-path discrepancy here.

Prompt To Fix With AI
This is a comment left during a code review.
Path: package-lock.json
Line: 27

Comment:
**silent bin-path fix bundled into version bump**

the `mcodex` bin entry changed from `scripts/mcodex` (no extension) to `scripts/mcodex.js` — a real correctness fix that isn't called out in the PR description or release notes. separately, the lockfile was at `2.2.0` while `package.json` was already at `2.2.2`, meaning two patch releases shipped without regenerating the lockfile. neither issue appears in the release notes, so anyone auditing v2.2.x published artifacts won't find a trace of the bin-path discrepancy here.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Codex

Comment on lines +26 to +35
- Selector coverage for the drain-first path: sticky-while-usable, advance-on-
exhaustion, wrap-to-recovered-earlier-account, returns-null when the whole pool is
exhausted, cooldown/circuit-open/disabled failover, per-family cursor isolation,
and the policy-blocked-anchor guard.
- Proxy-level coverage: affinity is ignored, manual pin takes precedence, the active
pointer advances only on true exhaustion (not on a transient attempted-this-request
skip), and the mode survives the routing-mutex select+commit path without double-
advancing the cursor.
- Config coverage for `schedulingStrategy`: default, explicit value, env override in
both directions, and invalid env/persisted values falling back safely.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 no windows filesystem or token-safety coverage noted for sequential drain path

the test inventory is thorough for the happy-path and logic branches, but AGENTS.md explicitly flags windows filesystem safety (EBUSY/EPERM/ENOTEMPTY retries) and prohibits exposing tokens in proxy response headers/logs. the sequential cursor is mutable shared state — write failures mid-advance on windows could leave the cursor corrupt or unadvanced, and a failover that surfaces a fresh token during drain isn't ruled out by the listed test cases. worth documenting whether the routing-mutex commit path has windows-retry coverage and whether token headers are scrubbed on sequential failover, even if only as a notes bullet.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/releases/v2.3.0-beta.0.md
Line: 26-35

Comment:
**no windows filesystem or token-safety coverage noted for sequential drain path**

the test inventory is thorough for the happy-path and logic branches, but `AGENTS.md` explicitly flags windows filesystem safety (`EBUSY`/`EPERM`/`ENOTEMPTY` retries) and prohibits exposing tokens in proxy response headers/logs. the sequential cursor is mutable shared state — write failures mid-advance on windows could leave the cursor corrupt or unadvanced, and a failover that surfaces a fresh token during drain isn't ruled out by the listed test cases. worth documenting whether the routing-mutex commit path has windows-retry coverage and whether token headers are scrubbed on sequential failover, even if only as a notes bullet.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Codex

@ndycode
ndycode merged commit 2887c27 into main Jun 4, 2026
1 of 2 checks passed
@ndycode
ndycode deleted the release/v2.3.0-beta.0 branch June 4, 2026 12:25
@coderabbitai coderabbitai Bot mentioned this pull request Jun 14, 2026
12 tasks
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