Published to npm as @bitkyc08/opencodex@2.56.0 with dist-tag latest.
New Features
- Separate auth identity, quota domain and cache domain (#4546) (#4624)
- Reserve tokens and output before dispatch, and keep the ledger across restart (#4546) (#4625)
- Bound recovery with a half-open probe lease and honour Retry-After in full (#4546) (#4626)
- Put combo hops and adapter inner retries on the shared send budget (#4546) (#4637)
- Report sends, spend and cache provenance per logical request (#4546) (#4638)
- Give V2 threads real lineage and place a child on its parent's serving account (#4546) (#4640)
Bug Fixes
- Make the dispatch permit the charge, and close the uncounted send paths (#4546) (#4634)
- Stop retrying a doomed pool credential refresh, and say it was local (#4546) (#4639)
- Drop account-bound continuation when the serving account changes (#4546) (#4641)
- Reserve the last two generic-OAuth hops from the shared budget (#4546) (#4651)
- Bound the root workflow ceilings by a window instead of a lifetime (#4546) (#4654)
- Name the ceiling that refused, and let an operator see and clear one root (#4546) (#4657)
- Give every reasoning input item the summary the upstream requires (#4673)
- Stop a quota test from deleting the real OpenCodex home (#4681)
- Keep the whole conversation when a continuation replay misses (#4683)
- Stop charging a send that never happened, and let a reauthenticated account back in (#4690)
Documentation
- Record the 2.55.0 release evidence and the pending registry read (#4546) (#4620)
- Record why the root workflow budget expires a long session (#4546) (#4653)
- Record what round3 actually delivered (#4661)
- Record the round5 godfile outcome and the oracle lesson (#4684)
- Open the 2.56.0 release-train plan unit (#4685)
Chores
- Split routing and quota behind facades (#4645)
- Split inject and catalog sync behind facades (#4643)
- Split state and shim behind facades (#4642)
- Add file-size ratchet gate (#4636)
- Split six oversized modules behind facades and add a file-size ratchet (#4635)
- Split the remaining five oversized modules behind facades (#4658)
- Split the remaining five oversized modules behind facades (#4655)
- Split openai-responses.ts behind a facade (#4671)
- Split bridge.ts behind a facade (#4672)
- Check that the sync activation window's callees are synchronous (#4674)
- Split server/index.ts behind a facade (#4675)
- Split core.ts behind a facade (#4677)
Other Changes
- Open dev at 2.56.0 before releasing 2.55.0 (#4618)
- Promote the verified 2.56.0 product tree to main (#4694)
Changelog
Full Changelog: v2.55.0...v2.56.0
- #4618 chore(release): open dev at 2.56.0 before releasing 2.55.0 @github-actions[bot]
- #4620 docs(devlog): record the 2.55.0 release evidence and the pending registry read (#4546) @lidge-jun
- #4624 feat(routing): separate auth identity, quota domain and cache domain (#4546) @lidge-jun
- #4625 feat(lib): reserve tokens and output before dispatch, and keep the ledger across restart (#4546) @lidge-jun
- #4626 feat(routing): bound recovery with a half-open probe lease and honour Retry-After in full (#4546) @lidge-jun
- #4634 fix(lib): make the dispatch permit the charge, and close the uncounted send paths (#4546) @lidge-jun
- #4635 refactor(src): split six oversized modules behind facades and add a file-size ratchet @lidge-jun
- #4636 test(ci-workflows): add file-size ratchet gate @lidge-jun
- #4637 feat(responses): put combo hops and adapter inner retries on the shared send budget (#4546) @lidge-jun
- #4638 feat(usage): report sends, spend and cache provenance per logical request (#4546) @lidge-jun
- #4639 fix(codex): stop retrying a doomed pool credential refresh, and say it was local (#4546) @lidge-jun
- #4640 feat(codex): give V2 threads real lineage and place a child on its parent's serving account (#4546) @lidge-jun
- #4641 fix(responses): drop account-bound continuation when the serving account changes (#4546) @lidge-jun
- #4642 refactor(responses,codex): split state and shim behind facades @lidge-jun
- #4643 refactor(codex): split inject and catalog sync behind facades @lidge-jun
- #4645 refactor(codex,providers): split routing and quota behind facades @lidge-jun
- #4651 fix(responses): reserve the last two generic-OAuth hops from the shared budget (#4546) @lidge-jun
- #4653 docs(devlog): record why the root workflow budget expires a long session (#4546) @lidge-jun
- #4654 fix(lib): bound the root workflow ceilings by a window instead of a lifetime (#4546) @lidge-jun
- #4655 refactor(src): split the remaining five oversized modules behind facades @lidge-jun
- #4657 fix(server): name the ceiling that refused, and let an operator see and clear one root (#4546) @lidge-jun
- #4658 refactor(src): split the remaining five oversized modules behind facades @lidge-jun
- #4661 docs(devlog): record what round3 actually delivered @lidge-jun
- #4671 refactor(adapters): split openai-responses.ts behind a facade @lidge-jun
- #4672 refactor(bridge): split bridge.ts behind a facade @lidge-jun
- #4673 fix(responses): give every reasoning input item the summary the upstream requires @lidge-jun
- #4674 test(lab): check that the sync activation window's callees are synchronous @lidge-jun
- #4675 refactor(server): split server/index.ts behind a facade @lidge-jun
- #4677 refactor(responses): split core.ts behind a facade @lidge-jun
- #4681 fix(tests): stop a quota test from deleting the real OpenCodex home @lidge-jun
- #4683 fix(responses): keep the whole conversation when a continuation replay misses @lidge-jun
- #4684 docs(devlog): record the round5 godfile outcome and the oracle lesson @lidge-jun
- #4685 docs(devlog): open the 2.56.0 release-train plan unit @lidge-jun
- #4690 fix(responses,codex): stop charging a send that never happened, and let a reauthenticated account back in @lidge-jun
- #4694 release: promote the verified 2.56.0 product tree to main @lidge-jun