Conversation
Connect-RPC EOS trailers propagated upstream-controlled error.message text into adapter error events, API responses, and diagnostic logs, and that text can reflect the credential carried by the request. Parse trailers with an allowlist for known Connect codes, keep the raw message inside the parser for quota/opaque-denial detection, and throw content-free errors carrying only the allowlisted code and hex trace id. (cherry picked from commit 50eab5a)
The trailer suppression left the thrown CloudChatError without the upstream "limit will reset in N" sentence that streamChatEventsWithResetRetry scraped for its cooldown, so a stated-reset 429 failed immediately instead of waiting out the quota window. Parse the delay inside the trailer parser while the raw text still exists and carry it as a typed retryAfterSeconds field; the retry prefers that field and keeps the message scrape for errors whose text still carries a hint. Adds a regression test that drives the real Connect EOS trailer path. (cherry picked from commit 7b7a8b8)
(cherry picked from commit 4b723ef)
(cherry picked from commit df07bc6)
… comment (cherry picked from commit 0e73736)
The module-mock spy leaked into sibling test files in the same bun test process, so devin-stated-reset-retry and devin-stated-reset-hardening saw a stubbed helper. Drive the real runTurn with a stubbed fetch returning a Connect EOS-trailer refusal instead: the asserted signals are the surfaced error text and the physical GetChatMessage count, which fail fast under the 5s abort signal if the adapter's maxWaitMs: 0 pin is removed or weakened. Register the file in the test layout map and fixture. (cherry picked from commit 1abc035)
(cherry picked from commit d225fc2)
Reconcile #5455 zero-wait coverage with #5143 content-free Connect diagnostics: retain 429 and generated retry timing while proving reflected credentials do not escape and only one inference send occurs. Exercise a matching deprecated alias credential through tenant dispatch and the same refusal path. Preserve the zero wait pin, host allowlist, credential binding, and typed reset field. Document the safe typed retry delay and opt-in helper replay contract.
|
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: trueThanks 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. |
리뷰 · 우선순위 61 / 80이 PR은 Devin 턴 한 번의 경계를 세 갈래로 단단히 묶습니다. 첫째, deprecated 라인 - 메인테이너의 판단이 필요한 지점 리터럴 슬롯에도 “전송 키 == credential.access” 검사를 같은 수준으로 넣을지, 아니면 별칭 재키(rekey) 창만의 문제로 두고 문서에 “리터럴은 예외”라고 못 박을지. 또 너의 추천 보안·용량 쪽 방향은 맞고 테스트도 핵심 계약(자격증명 비노출, 1회 전송, typed retry, 별칭 바인딩)을 잘 잡고 있습니다. draft에서 보안 체크·관련 CI를 채운 뒤 ready로 올리고, 이미 닫힌 #5143/#5455와 겹치는 열려 있는 중복/무효 PR이 있으면 이 브랜치 기준으로 닫는 편이 좋습니다. 리터럴 슬롯 비대칭만 한 줄 정책으로 확정하면 머지 리스크가 더 줄어듭니다. 이 댓글은 grok-bot이 작성했습니다 |
Summary
Consolidate #5143, #5455, and the alias credential/tenant binding in
9b54aebb8ce1dbad8a49000e6cc7f002ab71d3aearound one Devin turn boundary: bind the selected credential to its tenant, preserve safe reset timing, and release active-turn capacity immediately on a reset refusal.Verification
7bd9985963fd344a2c512fa5cf3c0f57f6ba83bd. Head:6f2901b117b6d8a9a7eae503e795b74749b6e7e0.bun run typecheck,bun run structure:check,bun run privacy:scan, and base-to-headgit diff --checkpassed.Checklist