fix(responses): consolidate native control bounds, authorization and Lite catalogs - #5508
Conversation
Native steering and injection accepted requests on routes that were never meant to carry them, and their replay buffers grew without an upper bound, so a long-lived WebSocket exchange could retain an unbounded amount of app-owned memory. Restrict steering to the routes that declare it, cap the replay and body sizes, and release the stores when an exchange settles. Preexisting negative route tests are retained, and the injection docs now cross-link the steering contract. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Carry #5470 onto the bounded native-control path. Configure the resolved request-local catalog before attachment, reject undeclared added/done/terminal items before relay, and preserve structured rejection codes. Retain declared rich-result continuations and the existing size and rollback controls. Local checks: NOT RUN by instruction. Hosted CI remains required. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
Carry #5492. Recognize the first developer additional_tools catalog only when top-level tools is absent. Preserve opt-in, canonical destination, explicit catalog precedence, conflict checks and response restoration. Include unit and server-boundary regressions and clarify the Chinese catalog wording. Local checks: NOT RUN by instruction. Hosted CI remains required. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository: lidge-jun/opencodex/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (27)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
|
✅ Deterministic PR hygiene checks passed. |
리뷰 · 우선순위 68 / 80이 PR은 @luvs01이 만든 세 개 PR(#5479, #5470, #5492)을 현재 라인 - Verification 체크리스트: 로컬 검사 NOT RUN이 명시되어 있어, 이 헤드 SHA에 대한 증거는 아직 소스 PR CI 성공 기록과 정적 검토뿐입니다. Windows/macOS control 잡은 소스 쪽에서도 스킵되었습니다. 메인테이너의 판단이 필요한 지점 보안 리뷰를 머지 전에 꼭 할지입니다. 요청 로컬 도구 인가가 네이티브 continuation/replay·라우트·터미널 전달·평문 카탈로그 opt-in 경계를 지나고, 본문/재생 메모리 lifetime도 바뀝니다. PR이 이미 “보안 리뷰 필요”를 체크리스트에 열어 두었으니, 그 게이트를 실제 승인으로 닫을지 정해야 합니다. 또한 공개 API 조향 제거가 제품 의도인지, 이 묶음을 ready로 올린 뒤 어떤 hosted CI 증거를 최소로 볼지도 정해야 합니다. 너의 추천 초안은 유지한 채, 이 헤드에서 hosted CI(최소 Linux 핵심 + 가능하면 control 관련)를 통과시키고 보안 리뷰를 받은 뒤에만 ready/머지하세요. 머지·검증 후에는 #5479·#5470·#5492를 무효/중복으로 닫고, 같은 주제가 남은 open PR이 있으면 같이 정리하세요. 로컬 NOT RUN은 그대로 두지 말고, 머지 전에라도 영향 suites( 이 댓글은 grok-bot이 작성했습니다 |
Validate the serialized injection before reserving call identities or queue bytes. A result exceeding the configured body limit is refused synchronously even when another result awaits acknowledgement, leaving the retained socket usable for corrected input. Add a two-call regression on subscription and public API routes covering the typed refusal, unchanged replay retention, first acknowledgement, corrected second result and final cleanup. Preserve immediate refusal and authorization coverage, and align the public and structure contracts. Independent static review: PASS. Local checks: NOT RUN by instruction; revised-head hosted CI remains required before integration. Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Security review (maintainer, static)Read-only security review of #5508 at b9d94d6: queued-injection refusal confirmed (assertOutboundFrame runs before capacity check/queue push; typed outbound_body_too_large; rollback on send-time and continuation paths; socket stays open with corrected retry). Inbound control frames are byte-checked before parse; aggregate pinned journal ceiling 128 MiB fail-closed; steering eligibility limited to canonical routes; undeclared-tool guard mirrored at added/done. No request-body, credential, or account-identifier logging added. Non-blockers: test-only cap setter exported from a prod module; redundant post-parse size check (defense in depth); NativeInjectionReplay.dispose lacks an idempotency guard (unregister is repeat-safe). Verdict: pass. Reviewed at b9d94d6; the later head only adds a merge of current |
Summary
dev. Coverage is complete for the source changes in those three PRs; runtime and cross-platform verification remain pending. Original PR closure is reserved for the coordinator after verifieddevinclusion.toolsis absent, with existing plaintext opt-in, destination, conflict and restoration boundaries preserved.a750e95d37a1e2103f4f4ae71207be87f12313c6b24bfeddfc885a4ef96342a2f08d7bf71d792a1b2095ba1c0689d359c969b1eb6696e77a6301b25eVerification
git diff --check, combined interface/constructor/call-site review, contributor provenance, native-stack API, changed-file intersection with feat(desktop): native macOS usage panel and release regression fixes #5490, and tracked file-size baseline comparison. No cap raised; no test layout or CI policy changes are introduced by this bundle.pull_requestrun at the source SHA above, but Windows and macOS control jobs were skipped; fix(responses): enforce native injection tool authorization #5470 docs were also skipped. These are not bundle or complete all-platform proof.Security review
Explicit maintainer security review is required before merge. The technical source review does not replace that decision.
Permissions
Review request-local tool authorization through native continuation/replay, route eligibility, terminal delivery, and the opt-in plaintext catalog boundary. Both native size checks and authorization hooks survive the union. No workflow permissions or release automation are changed by the lane.
Secrets
No credentials or destination configuration are added. Review retained-body lifetime and error projection; security working notes remain outside tracked files.
Publication order
The bundle includes the current
devintegration of #5490. Merge only after the final bundle head has the required hosted evidence and security review. Close superseded originals only after proving their behavior is present ondev; release promotion remains separate.Checklist
Co-authored-by: luvs01 27862058+luvs01@users.noreply.github.com
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Summary by CodeRabbit
New Features
Bug Fixes
Documentation