Skip to content

fix(chat): defer native-main claim until OpenAI helper planning - #4118

Open
luvs01 wants to merge 1 commit into
lidge-jun:devfrom
luvs01:agent/chat-sidecar-main-claim-20260909
Open

fix(chat): defer native-main claim until OpenAI helper planning#4118
luvs01 wants to merge 1 commit into
lidge-jun:devfrom
luvs01:agent/chat-sidecar-main-claim-20260909

Conversation

@luvs01

@luvs01 luvs01 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

A keyless Cursor Chat request could claim native main for its entire upstream turn even when it never needed an OpenAI helper. This unnecessarily blocked a native-profile switch. The regression introduced by #4103 is tracked in #4103 (comment).

Defer Chat's optional stored-main sidecar enrichment until the final helper conditions require a canonical Direct candidate. Vision terminal/routed-backend and search tool-choice/compaction/runTurn exclusions now agree with actual planning. The stored pair stays local to sidecar headers, and the existing startup/switch fences, Pool and exact-account selection, and primary/retry credentials remain intact. Public documentation is synchronized in all eight locales.

Verification

  • Current head 7cf4b843735f01f5b649e69e99f263e81b2953f5 is based on dev c15a98caa9ab4b24256bd16a49b0947bea72d5c6 and is 0 commits behind it. The authored patch rebased unchanged (git range-diff equal).
  • Baseline regression: hold the actual Cursor HTTP/2 request open; native-main count is unexpectedly 1. With the fix, the request remains open, native-main count is 0, and the profile-switch API succeeds.
  • Final bearer-admission and recursive routing files: 111 passed, 2 platform-specific skips, 485 assertions. This includes the expanded Direct/Pool and owned/fenced helper matrix plus primary/Combo/thread-spawn controls.
  • Vision cache, routed vision, web-search and bearer-focused validation also passed (149 tests before adding the two Pool fixture cases; the final bearer run covers those additions).
  • Typecheck, privacy scan and diff check passed with Bun 1.4.2. Documentation build: 425 pages, with all eight complete added paragraphs matched against generated text.
  • An earlier local import-connected run selected 282/1,154 test files and reached the wrapper's 900-second bound (exit 124), so it produced no complete-suite summary and is not reported as green. Its three failures and one fixture-load error all came from an invocation that omitted Bun from child-process PATH (ENOENT: bun). After supplying Bun 1.4.2 in that PATH and building the existing page fixture, both affected files passed together: 58 tests / 400 assertions. No product code or test budget changed for that correction.
  • Full author CI completed 26/26 jobs green on this exact head 7cf4b843735f01f5b649e69e99f263e81b2953f5. No job was rerun.

Security review

Maintainer security review is requested for the deferred stored-token read and native-main admission boundary. Independent read-only review and CodeRabbit's exact-head review found no blocker, and no active review thread remains unresolved. Those are review comments rather than maintainer approval, and merge approval is still outstanding. No request-body/header option exposes the internal permission, and no credential is logged or serialized by this change.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Review readiness checklist

  • 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.

Summary by CodeRabbit

  • Bug Fixes

    • Improved Cursor Chat authentication so unrelated requests no longer delay profile switching or consume native authentication.
    • Kept auxiliary credentials separate from Cursor credentials and preserved existing account and pool selection.
    • Prevented unnecessary web-search authentication when hosted web search is disabled.
    • Improved routed vision handling and fallback behavior for unsupported configurations.
  • Documentation

    • Updated proxy authentication reference documentation in multiple languages with the revised Cursor Chat and auxiliary authentication rules.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 8cc07fad-8a1b-49d1-94d7-71d87895d19d

📥 Commits

Reviewing files that changed from the base of the PR and between c15a98c and 7cf4b84.

📒 Files selected for processing (16)
  • docs-site/src/content/docs/fr/reference/proxy-formats.md
  • docs-site/src/content/docs/ja/reference/proxy-formats.md
  • docs-site/src/content/docs/ko/reference/proxy-formats.md
  • docs-site/src/content/docs/reference/proxy-formats.md
  • docs-site/src/content/docs/ru/reference/proxy-formats.md
  • docs-site/src/content/docs/tr/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-cn/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • src/server/chat-completions.ts
  • src/server/responses/core.ts
  • src/vision/plan.ts
  • src/web-search/index.ts
  • structure/08_openai-provider-tiers.md
  • tests/codex-integration/bearer-admission-routed-provider.test.ts
  • tests/vision/vision-cache.test.ts
  • tests/web-search/web-search.test.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Chat sidecar authentication now defers stored native-main access until an OpenAI helper has a canonical Direct candidate. Vision and web-search planning apply additional eligibility checks. Tests and localized documentation cover the updated behavior.

Changes

Cursor sidecar authentication

Layer / File(s) Summary
Gate stored-main authentication
src/server/chat-completions.ts, src/server/responses/core.ts, structure/08_openai-provider-tiers.md, docs-site/src/content/docs/*/reference/proxy-formats.md
Chat passes permission for deferred sidecar authentication. Responses core can admit stored native-main credentials for qualifying Direct helpers. Documentation describes credential separation, profile-switch protections, and account selection.
Resolve sidecar requirements
src/server/responses/core.ts
Sidecar setup skips terminal vision recursion and routed-compaction web search. Deferred native-main credentials remain local to sidecar headers.
Validate vision and web-search helpers
src/vision/plan.ts, src/web-search/index.ts
Vision planning uses a shared validation helper for usable routed models. Web-search sidecar resolution stops when toolChoice excludes the built-in web-search tool.
Validate authentication and planning behavior
tests/codex-integration/bearer-admission-routed-provider.test.ts, tests/vision/vision-cache.test.ts, tests/web-search/web-search.test.ts
Tests cover profile switching, Cursor bearer separation, owned and pool account modes, routed vision planning, and forbidden web-search choices.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to 7cf4b

The deferred sidecar-authentication behavior preserves profile switching for unrelated Cursor requests while retaining helper authentication safeguards and account selection. No merge-blocking risk remains.

Sequence Diagram(s)

sequenceDiagram
  participant Cursor
  participant ChatBridge
  participant SidecarPlanner
  participant NativeMain
  Cursor->>ChatBridge: Send Chat request
  ChatBridge->>SidecarPlanner: Plan vision or web-search helper
  SidecarPlanner->>NativeMain: Request stored auth only for qualifying Direct helper
  NativeMain-->>SidecarPlanner: Return sidecar credential
  SidecarPlanner-->>ChatBridge: Build request-local sidecar headers
  ChatBridge-->>Cursor: Continue Cursor response flow
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 7 files. (9 skipped: 9… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the primary change: deferring the native-main claim until OpenAI helper planning requires it. It matches the implementation and PR objectives.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 7 files. (9 skipped: 9 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the bug Something isn't working label Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed; the review readiness checklist is complete.

Review readiness checklist

  • ✅ 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.

4/4 boxes ticked.

This pull request is already Ready for Review.
The review-ready label marks this PR as ready; review automation runs independently.
Maintainers: @lidge-jun @Ingwannu

@luvs01

luvs01 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review immutable head f5566a4e16a5a9f13fa5909d122e835343518579, especially agreement between final helper planning and stored-main admission, startup/switch fences, and preservation of caller, primary, retry, Pool and exact-account authentication. The PR is Draft while import-connected validation and full author CI run. Maintainer security review is requested for this authentication boundary as described in the PR body.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected='f5566a4e16a5a9f13fa5909d122e835343518579'
printf '%s\n' '== checked-out revision =='
git rev-parse HEAD
git status --short
printf '%s\n' '== commit object =='
git show -s --format='%H%n%P%n%s' "$expected"
printf '%s\n' '== PR metadata =='
gh pr view 4118 --repo lidge-jun/opencodex --json number,title,baseRefName,baseRefOid,headRefName,headRefOid,files
printf '%s\n' '== diff stat =='
git diff --stat "${expected}^1" "$expected"
printf '%s\n' '== changed files =='
git diff --name-only "${expected}^1" "$expected"
printf '%s\n' '== source outlines for likely changed implementation and test files =='
git diff --name-only "${expected}^1" "$expected" |
  while IFS= read -r f; do
    case "$f" in
      *.ts|*.tsx|*.js|*.mjs|*.cjs)
        echo "-- $f"
        ast-grep outline "$f" --items all --view expanded || true
        ;;
    esac
  done
printf '%s\n' '== focused symbols and references =='
rg -n -C 4 -i \
  'stored.main|storedMain|native.main|nativeMain|claim.*main|main.*claim|Direct.*candidate|Pool|exact.account|exactAccount|runTurn|tool.choice|toolChoice|compaction|vision' \
  . -g '!node_modules' -g '!dist' -g '!build' | head -n 1800

Length of output: 176188


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='57077ca3260494aa4266b4108a7bd4c8a4dac288'
head='f5566a4e16a5a9f13fa5909d122e835343518579'

printf '%s\n' '== implementation diffs =='
git diff --unified=80 "$base" "$head" -- \
  src/server/chat-completions.ts \
  src/server/responses/core.ts \
  src/vision/plan.ts \
  src/web-search/index.ts

printf '%s\n' '== focused test diffs =='
git diff --unified=50 "$base" "$head" -- \
  tests/codex-integration/bearer-admission-routed-provider.test.ts \
  tests/vision/vision-cache.test.ts \
  tests/web-search/web-search.test.ts

printf '%s\n' '== changed-line locations =='
git diff --unified=0 "$base" "$head" -- \
  src/server/chat-completions.ts src/server/responses/core.ts src/vision/plan.ts src/web-search/index.ts |
  grep -E '^\+\+\+|^@@'

printf '%s\n' '== native-main admission implementation =='
fd -a '^native-main-admission\.ts$' . -x sh -c 'echo "-- $1"; cat -n "$1"' sh {}

printf '%s\n' '== response handler planning area =='
sed -n '3170,3700p' src/server/responses/core.ts | cat -n
sed -n '3700,4350p' src/server/responses/core.ts | cat -n

printf '%s\n' '== chat handler area =='
sed -n '70,330p' src/server/chat-completions.ts | cat -n

printf '%s\n' '== planning modules =='
cat -n src/vision/plan.ts
sed -n '185,340p' src/web-search/index.ts | cat -n

Length of output: 204182


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== OpenAI sidecar resolver =='
cat -n src/providers/openai-sidecar.ts | sed -n '1,290p'

printf '%s\n' '== response recursive calls and stored-sidecar permission =='
rg -n -C 10 'handleResponses\(|handleResponsesInner\(|allowStoredOpenAiSidecarAuth|openAiSidecarAuth' \
  src/server/responses/core.ts src/server/chat-completions.ts src/server \
  -g '*.ts'

printf '%s\n' '== helper plans and execution in the response handler =='
rg -n -C 12 'planVisionSidecar|planWebSearch|runWithWebSearch|openAiSidecar|needsOpenAi' \
  src/server/responses/core.ts

printf '%s\n' '== routing candidate construction and account-mode combinations =='
rg -n -C 8 'listOpenAiForwardSidecarCandidates|OpenAiForwardSidecarCandidate|codexAccountMode|OPENAI_CODEX_PROVIDER_ID|LEGACY_OPENAI_MULTI_PROVIDER_ID' \
  src/providers src/codex src/server -g '*.ts' | head -n 1400

printf '%s\n' '== focused test names and helper-auth assertions =='
rg -n -C 6 'stored|sidecar|native main|native-main|switch|combo|pool|exact|retry|runTurn|tool.choice|compaction' \
  tests/codex-integration/bearer-admission-routed-provider.test.ts \
  tests/vision/vision-cache.test.ts tests/web-search/web-search.test.ts | head -n 1800

Length of output: 201748


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== candidate construction and resolution =='
sed -n '1,240p' src/providers/openai-sidecar.ts | cat -n

printf '%s\n' '== all stored-sidecar permission references =='
rg -n -C 14 'allowStoredOpenAiSidecarAuth' src -g '*.ts'

printf '%s\n' '== combo dispatcher children =='
sed -n '2590,3170p' src/server/responses/core.ts | cat -n

printf '%s\n' '== helper resolution and execution branch =='
sed -n '4400,4740p' src/server/responses/core.ts | cat -n

printf '%s\n' '== post-planning web-search dispatch references =='
rg -n -C 10 'const webSearchPlan|planWebSearch\(|runWithWebSearch\(' src/server/responses/core.ts

printf '%s\n' '== exact new test region =='
sed -n '430,610p' tests/codex-integration/bearer-admission-routed-provider.test.ts | cat -n

Length of output: 84387


@luvs01 Reviewed immutable head f5566a4e16a5a9f13fa5909d122e835343518579.

I found no blocking issues in the focused review.

Key checks completed:

  • src/server/responses/core.ts, Lines 4428-4463, now evaluates terminal vision, routed compaction, runTurn, and web-search tool-choice exclusions before it resolves a helper credential.
  • The stored-main read occurs only when allowStoredOpenAiSidecarAuth is set, the final route is not exact-account-qualified, and the canonical sidecar candidate is Direct.
  • src/providers/openai-sidecar.ts, Lines 57-78, creates one canonical candidate only. Therefore, the Direct-candidate check cannot claim native main for a separate Pool candidate.
  • Pool helper selection continues through resolveCodexAuthContext. It does not read or claim stored native-main auth.
  • The stored pair stays in local sidecarAuth and sidecarHeaders. The code does not promote it into the caller, primary, or retry header paths.
  • src/server/responses/core.ts, Lines 277-297 in handleComboResponses, forwards the option set to concrete combo children. This preserves the admission boundary while allowing final-child planning.
  • src/vision/plan.ts, Lines 95-119 and 158-172, uses the same routed-vision predicate for sidecar admission and planning.
  • src/web-search/index.ts, Lines 198-205, now excludes OpenAI helper resolution when tool_choice disallows web_search.
  • The added regression matrix covers Direct, Pool, startup-fenced, terminal vision, routed vision, Anthropic vision, runTurn, and excluded tool_choice conditions.

I did not run repository tests because the sandbox does not permit executing repository code. The pending import-connected validation and author CI remain the required execution evidence.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions
github-actions Bot marked this pull request as ready for review September 9, 2026 13:09

@Ingwannu Ingwannu left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completed the requested source-level authentication-boundary review on this exact head. Stored main is claimed before reading, only via the internal Chat permission and an eligible canonical Direct helper candidate; the candidate selector returns only the canonical OpenAI row. The captured pair remains local to sidecar headers and is not assigned to caller/primary/retry authority. Pool and exact-account branches remain separately resolved. Startup/drain fences still apply.

I traced terminal/routed-vision, runTurn/compaction and tool-choice exclusions into final helper planning. The held Cursor request regression checks the actual active request count and a successful profile switch before the upstream settles, while the helper cases observe which bearer reaches each wire. That is materially stronger than checking only a returned status. No blocking credential-boundary defect found in this patch.

Author CI 34352957960 is successful on this exact head; its report is separate from the disclosed incomplete local run. I did not execute the contributor code locally. This review does not bypass repository required CI or authorize a merge; the current upstream rollup contains the intake checks rather than an executed product suite.

@lidge-jun

Copy link
Copy Markdown
Owner

리뷰 · 우선순위 76 / 80

이 PR은 #4103이 심은 keyless Cursor Chat의 native-main 조기 claim을 되돌리는 핫픽스다. 지금 로컬 dev HEAD는 3b4d8c439(#4132 Spark quota devlog fin, 그 앞 #4114 owned-root guidance)이고 버전선은 2.50.0이다. tip의 src/server/chat-completions.ts 263–282줄은 여전히 !callerAuthorizationRoute || (settledRoute && !isCanonicalOpenAiForwardProvider(...))이면 Chat 다리에서 바로 tryClaimNativeMainProfileForTurn을 호출하고 stored main을 openAiSidecarAuth에 넣는다. OpenAI vision/search helper가 없어도 claim이 turn 전체에 남아서, 열린 Cursor HTTP/2 요청이 있는 동안 native-profile switch가 막힌다. 본문이 가리킨 #4103 discussion과 같은 회귀다.

고치는 축은 짧다. Chat(src/server/chat-completions.ts)은 caller-auth·noncanonical settled 경로에서 더 이상 미리 claim하지 않고, allowStoredOpenAiSidecarAuth 내부 권한만 Responses로 넘긴다. Responses(src/server/responses/core.ts)는 vision terminal·routed compaction·adapter.runTurn을 먼저 걸러 needsOpenAiVision/needsOpenAiSearch가 진짜일 때만, Direct 후보가 있고 exact-account가 아닐 때 claim→getMainAccountToken→sidecar 헤더 로컬 스냅샷을 만든다. 그 쌍은 caller/primary/retry로 승격되지 않는다. src/vision/plan.tsusableRoutedVisionModel은 auth admission과 planning이 routed describer에서 같이 false/true를 보게 하고, src/web-search/index.tstoolChoice가 hosted web_search를 금지하면 OpenAI search auth resolve 자체를 끈다. structure/08_openai-provider-tiers.md와 proxy-formats 8 locale은 같은 계약을 문서화한다.

왜 지금 tip 기준으로 점수가 높은가. #4102/#4103 credential-domain·sidecar 열차의 운영 회귀(프로필 전환 막힘)를 직접 고치고, tip이 최근에 올린 Spark quota modelId 전달(#4128 계열, core.ts 다른 구역)과 겹치는 제품 의도는 없다. types.ts/config.ts 대형 분할 무효화·중복 close 대상도 아니다. 검증은 held Cursor 요청 동안 getNativeMainProfileRequestCount()===0 + switch API 200을 여러 시나리오(configured-vision-textsearch-tool-choice-none)로 잠그고, owned/fenced/pool helper wire까지 확장했다. Ingwannu 소스급 auth-boundary 리뷰는 이 exact head에서 blocker 없음. 작성자 full CI 34352957960 26/26(attempt 1)도 같은 head다. PR base는 57077ca3라 tip(3b4d8c439)보다 몇 머지가 뒤지만, tip이 만진 core.ts는 quota observer 쪽이라 이 패치의 sidecar claim 구간과 충돌 여지는 작다. 그래도 랜딩 전 tip rebase 한 번이 안전하다.

src/server/chat-completions.ts allowStoredOpenAiSidecarAuth 전달 - caller-auth이고 settled가 noncanonical일 때만 true. 미리 claim을 빼고 권한만 넘기는 방향이 맞다. settled가 비면 false라 sidecar가 필요한데도 enrichment가 안 될 수 있으니, Chat에서 이 지점 이전에 settled가 항상 채워지는지만 #4103 inventory와 한 줄 대조하면 된다.
src/server/responses/core.ts claim-before-read + try/catch optional - 스위치 fence를 지키면서 enrichment 실패를 요청 전체 실패로 안 키운다. 좋음. 다만 claim 성공 후 token read가 비면 claim만 남는 짧은 창이 있는지 lease 수명과 한번만 맞춰 보면 된다.
src/vision/plan.ts usableRoutedVisionModel - shouldResolve가 routed에서 false가 되어 stored OpenAI auth를 빌리지 않는다. bare/misconfigured routed는 legacy openai fallback으로 가며 테스트가 잠근다.
src/web-search/index.ts toolChoice 가드 - planWebSearch와 resolve 조건을 맞춰, tool_choice none/다른 함수만 허용일 때 auth resolve를 안 한다. 불필요 claim 경로를 하나 더 막는다.
tests/.../bearer-admission-routed-provider.test.ts held-upstream 회귀 - status가 아니라 active request count + switch 성공을 본다. 예전 502 fixture 의존보다 목적에 가깝다. pool/pool-fenced wire도 claimed:!pool로 Direct와 분리한다.
경로 tip rebase - 57077ca33b4d8c439 사이 core.ts quota modelId 터치가 있어, merge 직전 tip 재기지가 충돌을 미리 없앤다. 제품 충돌로 닫을 성격은 아니다.
Draft/라벨 - Draft 아님, bug+review-ready. 게이트 hygiene/enforce-target/label은 통과. mergeStateStatus BLOCKED는 승인·required check 쪽이지 이 리뷰가 라벨을 바꿀 일은 아니다.

메인테이너의 판단이 필요한 지점

  • tip(3b4d8c439) rebase 후 exact-head product CI를 한 번 더 볼지, 작성자 CI 26/26 + Ingwannu boundary로 충분한지
  • claim 성공·token 없음 창을 lease 해제 계약으로 더 잠글지, 현재 optional catch로 둘지
  • fix(auth): retain stored sidecar auth for caller-auth Chat #4103 leftover discussion을 이 PR 머지 커밋으로 닫힌 것으로 표기할지
  • 2.50.0 tip 열차에 바로 태울지(프로필 스위치 회귀라 전자가 설득력 큼)

너의 추천
tip에 짧게 rebase한 뒤 머지. 방향(helper 필요할 때만 Direct stored claim, Cursor wire와 분리, Pool/exact-account 유지, 문서 8 locale 동기)이 #4102/#4103 계약과 맞고, held-request 회귀가 운영 증상을 직접 잠근다. 다음 스텝: (1) 3b4d8c439 위 rebase, (2) bearer-admission·vision·web-search 관련 스위트/작성자 CI 확인, (3) dev 랜딩. types/config 분할 무효화 아님. 인증 운영 회귀 + 테스트 강도라 76.

이 댓글은 grok-bot이 작성했습니다

@luvs01
luvs01 force-pushed the agent/chat-sidecar-main-claim-20260909 branch from f5566a4 to 7cf4b84 Compare September 10, 2026 02:31
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@github-actions
github-actions Bot marked this pull request as draft September 10, 2026 02:32
@github-actions
github-actions Bot marked this pull request as ready for review September 10, 2026 03:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working review-ready

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants