Repository navigation
Conversation
Read and write the canonical Codex thread limit consistently with supported aliases. Keep the subagent selector available across modes, normalize child-count units, and reject stale settings responses. Cover canonical settings, mode behavior, and response ordering with focused regressions and update the capacity documentation.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
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. Comment |
|
✅ Deterministic PR hygiene checks passed. |
|
Carrying this implementation in #7128 because this fork disables maintainer edits. The canonical source design is sound and the contributor commit is preserved, with The failed The carry currently passes 360 focused backend/layout tests, 166 Models tests, typecheck, GUI lint/build/i18n, docs build, structure, privacy and the size ratchet. Linux/macOS/Windows |
Parse the resulting agents configuration and assert the canonical child limit and absence of the legacy alias. Retain the atomic rename callback and successful transition assertions.
|
Superseded by the in-repository carry #7128, which preserves your implementation commit and co-author credit. This closes the duplicate delivery path because maintainer edits are disabled here; it is not a rejection of the canonical-limit design. The carry fixes the stale write-lock assertion, corrects the architecture API field name, and identifies both canonical and legacy keys in conflict diagnostics. Focused regressions and static/build gates pass. Broad local coverage has separately documented baseline and still-unclassified failures, so the carry remains draft. Exact-head Linux/macOS/Windows CI is dispatched at https://github.com/lidge-jun/opencodex/actions/runs/38699018462 and is still queued; no green claim or merge has been made. |
* fix(codex): honor canonical subagent limits across modes Read and write the canonical Codex thread limit consistently with supported aliases. Keep the subagent selector available across modes, normalize child-count units, and reject stale settings responses. Cover canonical settings, mode behavior, and response ordering with focused regressions and update the capacity documentation. * test(codex): require canonical limit after atomic feature toggle Carry #7125 from 4bc4630. The write-lock regression must assert the canonical agents table after V2-to-V1 conversion, including absence of a legacy alias. Correct the API field name in the capacity contract. Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com> * docs(codex): name the thread-limit API field consistently * fix(codex): identify both agents limit keys in conflict warnings --------- Co-authored-by: Epinephrine <luvs01@hanmail.net> Co-authored-by: GOAT <goat@localhost> Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Summary
max_concurrent_threads_per_sessionsetting and OpenCodex's legacy thread-limit reader and writer. With a canonical value of16, the old reader misses the value and saving6adds a legacy key instead of updating the canonical setting. Codex keeps using16, reports duplicate configuration, and the UI incorrectly presents6as a successful save. Read and write the canonical setting consistently and reconcile supported aliases so the displayed value matches the effective setting.total - 1and savechildren + 1only in full V2.Verification
Signed publication HEAD:
668e07ac6bcaa7482494e115e092dc1d80fdc32a; sole parent:4bc46305ec63ed62b4f8db22b8f74a0b9460f612; tree:9afd584475e86590dd18ee4e6fb2dc14115b6d83. The complete patch from base7640a942b35044c974e534b84d5a8049f4a8ae9ais 36 files, 118,431 bytes, SHA2562b812ff92d391d9265f113fc391ab732928e4d53a4e77102de62cd335e05fd9b. The follow-up is exactly one test file, 3 added lines and 1 removed line, matching the reviewed patch SHA256e37e98ca07d6181f79fee416855ebf479074f0924368e501a12e736d12229594; production source is unchanged. GitHub signature verification is valid.Integrated static validation for the original 35-file candidate:
scripts/privacy-scan.ts,scripts/file-size-ratchet.ts,scripts/structure-ssot.ts, andgit diff --cached --checkagainst the base all exited 0. Final source typecheck with Node 24 also passed. The signed tree, staged source, and working source were checked for equality; no screenshot or temporary artifacts are included in the code commit.CI follow-up and current local validation:
38696002038completed with test shards 1/4, 2/4 and 4/4 passing; test 3/4 failed only on the old serializedmax_threads = 63assertion. The follow-up parses[agents], requires canonicalmax_concurrent_threads_per_session = 63, and rejects the legacy alias. The atomic rename callback and{ok:true, changed:true, threadLimit:63}assertion are retained; production ACL, write-lock and witness guards are unchanged.falseinstead oftrue. Those unchanged tests passed on the previous HEAD in Ubuntu CI. A subsequent native Windows Bun 1.4.3 comparison ran the same five-name--isolateselection once against base7640a942and the candidate with the identical frozen assertion correction: both returned 3 passed, 2 failed. Only the two subprocess deadline failures are thereby confirmed as baseline failures under that command; their startup/ACL/lock cause remains UNVERIFIED. All three staging cases passed in both comparison runs, so the earlier combined-run staging failures remain UNRESOLVED, neither established baseline failures nor established feature regressions. The comparison did not control exclusive machine load, and no timeout, assertion, or behavior guard was weakened. These failing runs are not a full-suite pass.Completed backend and layout validation for the reviewed backend candidate:
Completed GUI validation for the reviewed GUI candidate, from
gui/:bun test tests/models: 166 passed across 19 files, including four settings-response race regressions that failed before the fix.bun run lint,bun run lint:i18n, andbun run build(tsc -band Vite): exit 0.16; selecting32sends32in child units and resetting sends16. A 1360 × 960 PNG was captured (197,595 bytes, SHA256af3f1c163a5bcc623ba6f45458f1acae973a39fcdd7833c4f545d75d7a21737d). This verifies the fixture UI and request payloads, not a live native host or hosted capacity reload.The screenshot uses synthetic API fixtures and is stored on the separate
pr-assetsbranch. Its URL is pinned to the asset commit; the downloaded bytes match the captured PNG's SHA256 above.Completed documentation validation:
node --preserve-symlinks --preserve-symlinks-main ./node_modules/astro/bin/astro.mjs build, fromdocs-site/: exit 0, 577 pages built and 81,224 internal links checked.scripts/structure-ssot.ts --fix, the subsequent read-only structure check, and scopedgit diff --check: exit 0. The structure split resolves the document file-budget violation; this is not a claim that every final-candidate repository check has passed.Pending validation and publication evidence:
bun run test:changedwere not run. Under the documented focused-test exception, the inherited merge-base selection expands to 148 changed files and disproportionate import-graph coverage while validation worktrees share finite resources. The focused regressions, typecheck, builds, and static gates above cover the changed behavior; broader coverage remains with hosted CI. No aggregate whole-repository test pass is claimed.Checklist