fix: auto-fallback encrypted V2 spawns to native Codex - #3228
Conversation
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Review readiness checklist
0/4 boxes ticked. This pull request was already a draft. Its draft status will be preserved after every issue above is resolved. Hygiene✅ Deterministic PR hygiene checks passed. |
|
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: trueNo actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe fallback resolver now builds a native model chain for encrypted V2 routed spawns when no fallback is configured. A test verifies that the spawn selects ChangesSubagent fallback behavior
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to The change adds native fallback behavior for encrypted V2 spawns and includes a focused regression test; no actionable merge-blocking risk remains beyond normal checks and review. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
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 |
리뷰 · 우선순위 55 / 80이 PR은 암호화된 V2 서브에이전트 스폰이 실패하는 구멍을 막습니다. 지금 문제는 암호화된 V2 자식 작업입니다. 현재 라인 609-622 (subagent-model-fallback.ts) - 호출부가 메인테이너의 판단이 필요한 지점
너의 추천 이 댓글은 grok-bot이 작성했습니다 |
|
Added dashboard controls for the global sub-agent fallback chain: ordered add/remove/reorder, availability polling interval, and live save through /api/subagent-model-fallback. The Dashboard already exposed vision sidecar model/backend/reasoning, enable/disable, limits, and timeout controls; no duplicate vision UI was added. GUI build passes; lint:i18n remains environment-blocked by the local Oxlint TypeScript-plugin loader. |
…hout a configured chain (#3239) An encrypted V2 worker payload needs the native ChatGPT backend, but applySubagentModelFallback only consulted a fallback chain the operator configured. With no chain, a routed sub-agent model reached the encrypted-task guard and failed with unreadable_encrypted_agent_task. When nativeFallbackOnly is set and no chain exists, build the chain from DEFAULT_SUBAGENT_MODELS. selectAvailableSubagentModel still drops every non-forward candidate and isSubagentModelUnavailable still honours disabled models, quota, and health. Ordinary routed spawns are unchanged. Source hunks from #3228; the bundled GUI fallback-chain editor is left for its own feature PR. Co-authored-by: jun <jun@lidge.dev> Co-authored-by: x3M3x <amroeid1999@gmail.com>
|
The fix landed via maintainer as #3239 → The bundled GUI fallback-chain editor ( Closing this as landed (source half) via the carry. |
|
Correction: the source fix was reverted in #3242 ( What the exact-head CI showed after it merged: The behaviour you hit is therefore the documented one: an encrypted V2 spawn on a routed sub-agent model needs an explicit opt-in — either a |
…sion audit (#3218) * docs(devlog): open the bug/PR closeout stack roadmap * docs(devlog): fold the A-gate import-boundary finding into phase 5 * docs(devlog): record the #3163 and #3166 landings * docs(devlog): record why #2986 does not land in this train * docs(devlog): close out the bug/PR closeout stack * docs(devlog): record the final green CI verdict on dev * docs(devlog): open the bug-label drawdown roadmap with audit corrections * docs(devlog): record the Batch A landings and first rebase carry * docs(devlog): record the Batch B rebase carries * docs(devlog): record why the rebase service earned its keep * docs(devlog): record the Batch C rebases and the one real review finding * docs(devlog): record the #2999 scope boundary that survived execution * docs(devlog): record Batch D - every bug PR closed * docs(devlog): record what the PR half of the campaign cost * docs(devlog): replan the remaining issues to one per cycle * docs(devlog): carry the i3141 evidence into the replan * docs(devlog): diagnose i3141 - fix predates the reported version * docs(devlog): retire the second bundle * docs(devlog): record the i3141 re-triage action and outcome * docs(devlog): diagnose i3152 log table jitter * docs(devlog): i3152 - measurement disproved the layout diagnosis * docs(devlog): diagnose i3136 slashed-id price lookup * docs(devlog): diagnose i3150 citation marker passthrough * docs(devlog): diagnose i3155 capacity plan allowlist * docs(devlog): i1419 stays open pending crash frames * docs(devlog): record the i1419 re-triage ask * docs(devlog): diagnose i2999 publication overwrite race * docs(devlog): record the i2999 outcome and remaining scope * docs(devlog): diagnose i2813 as a client-side reserve gate * docs(devlog): diagnose i1527 residuals as trace-blocked * docs(devlog): correct i1527 envelope-cap wording (192 blobs, HTTP 400) * docs(devlog): plan p3193 loopback alpha-search reimplementation * docs(devlog): record p3193 landing (#3205 -> 53c09a2) * docs(devlog): plan the main->dev regression audit * docs(devlog): pin regaudit counts, add tests-only/security passes and the exact-head dispatch * docs(devlog): record regaudit reviewer verdicts * docs(devlog): record the exact-head dev CI verdict and Windows classification * docs(devlog): record the main control run proving the Windows failures predate the range * docs(devlog): record the pass-1 recount and the #3217 root cause * docs(devlog): plan i3217 (Spark functions-namespace flattening) * docs(devlog): record i3217 landing (#3224 -> d23eab4) * docs(devlog): regaudit2 recount and disposition table * docs(devlog): regaudit2 CI verdict on d23eab4 and the four PR arrivals * docs(devlog): plan p3226 (scoped namespace scrub) * docs(devlog): p3226 audit finding and carry plan * docs(devlog): record p3226 landing (#3234 -> b732b0d) * docs(devlog): plan p3227 (combo zero-output incomplete failover) * docs(devlog): record p3227 landing * docs(devlog): plan p3228 (encrypted V2 spawn native fallback) * docs(devlog): record p3228 landing * docs(devlog): plan p3229 (Codexless originator in task recovery) * docs(devlog): record p3229 landing and the #3239 regression repair * docs(devlog): r3239 regression repair record * docs(devlog): r3239 audit note * docs(devlog): record p3232 (merged by maintainer) * docs(devlog): p3232 verification result * docs(devlog): regaudit3 recount and landing table * docs(devlog): record the #3239/#3240 revert and correct the #3228 disposition * docs(devlog): rv3239 revert record * docs(devlog): rv3239 audit note * docs(devlog): regaudit3 second-dispatch verdict * docs(devlog): regaudit3 recount refreshed (#1419 closed by maintainer; count 4) * docs(devlog): regaudit3 final CI verdict and c-7 --------- Co-authored-by: jun <jun@lidge.dev>
Summary
Encrypted V2 worker payloads require the native ChatGPT backend, but the proxy only attempted native fallback when a user-configured fallback chain existed. With no chain, routed sub-agent models reached the encrypted-task guard and failed with
unreadable_encrypted_agent_task.This change uses the existing native sub-agent roster only for native-only encrypted spawn requests. Ordinary routed sub-agent requests keep their configured routing.
Verification
bun run typecheckbun test tests/subagent-model-fallback.test.ts --test-name-pattern "encrypted routed spawn gets" --max-concurrency 1(blocked before assertions by the Windows credential fixture failing to create its temporary file)git diff --checkChecklist
Review readiness checklist
This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:
All CI tests are green on my local testing.
I pushed my PR to the latest dev commit.
I resolved all correct Codex and CodeRabbit findings.
My PR is ready for review.