Skip to content

Add Vercel CLI personal budget usage - #4611

Closed
sf-jin-ku wants to merge 6 commits into
steipete:mainfrom
sf-jin-ku:feat/vercel-personal-budgets
Closed

sf-jin-ku wants to merge 6 commits into
steipete:mainfrom
sf-jin-ku:feat/vercel-personal-budgets

Conversation

@sf-jin-ku

@sf-jin-ku sf-jin-ku commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Vercel AI Gateway 키를 설정하면 팀 전체 잔액만 보여 개인 예산이 얼마나 남았는지 확인할 수 없었습니다. 기존 vercel login과 CLI의 현재 팀을 자동으로 사용해 로그인한 사용자의 개인 지출·한도·잔여 예산과 초기화 시각을 표시합니다. 별도 access token이나 Team ID를 복사해 넣을 필요가 없습니다.

변경 내용

  • 자동 모드는 vercel teams list --format json의 전체 페이지에서 현재 팀을 찾습니다. 설정의 Team → Refresh로 팀 목록을 불러와 다른 팀을 선택하거나 Auto로 되돌릴 수 있습니다. 선택은 CodexBar에만 저장하며 CLI의 전역 팀을 변경하지 않습니다.
  • Usage source에서 자동·Vercel CLI·API key를 선택합니다. 자동 모드에서 팀을 명시하지 않은 경우 CLI 조회 실패 시 기존 API-key의 팀 잔액·누적 지출 표시로 대체할 수 있습니다. 대체에 성공하면 개인 예산 대신 팀 잔액을 보여주는 이유를 diagnostic으로 알립니다. 직접 API 호출에는 이 진단을 붙이지 않으며 명시적인 팀 선택이나 CLI 모드에서는 오류를 표시합니다.
  • 팀이나 소스를 변경하면 이전 snapshot과 진행 중인 조회 결과를 무효화합니다. 늦게 완료된 팀 목록 조회도 변경된 설정을 덮어쓰지 않습니다.
  • /v2/user의 사용자 ID로 해당 팀의 개인 예산을 찾고, 개별 예산을 기본 예산보다 우선합니다. 개인 예산이 없는 경우 사용량을 0으로 만들지 않고 미설정 상태를 표시합니다.
  • 예산 API는 limit=200과 안전하게 인코딩한 cursor로 모든 페이지를 읽습니다. 전체 크기가 1 MiB를 넘는 합성 응답에서도 각 페이지는 출력 제한 이내이며, 마지막 페이지의 본인 예산과 페이지 사이의 default/custom 우선순위를 검증합니다. 중간 실패·반복 cursor·불완전한 traversal은 부분 예산을 게시하지 않습니다.
  • 팀 탐색→사용자 확인→예산 전체 페이지는 하나의 monotonic 30초 deadline을 공유합니다. 각 subprocess에는 15초와 남은 시간 중 작은 값을 전달하고, 기한을 넘겨 도착한 응답도 거부합니다. 설정의 팀 목록 Refresh도 별도 30초 제한을 적용합니다. timeout·출력 상한 초과·설치 누락을 구분하되 raw CLI 출력은 숨깁니다.
  • Vercel은 일반 요금제 활용도 이력과 burn-down widget을 제공하지 않습니다. 팀별 개인 예산이 공통 이력 bucket으로 합쳐지지 않도록 기존 capability 설정을 사용하며, 기존 저장 이력은 보존합니다. 팀 A→B→A에서 조회·기록·reset 이벤트가 모두 차단되는지 검증합니다.
  • 두 CLI 호출 모두 --scope를 지정해 기존 CLI 기본 팀이 요청의 teamId를 덮어쓰지 않도록 합니다. 비대화형·CI 모드와 제한된 환경 변수로 실행하며 원본 stderr는 사용자 오류에 노출하지 않습니다.
  • UTC 기준 일간·주간·월간 초기화를 지원하고, 누적 예산에는 초기화 시각을 만들지 않습니다. 개인 잔여 예산과 실제 사용 가능 금액은 구분합니다. 팀·키 예산이나 팀 잔액이 먼저 소진될 수 있습니다.
  • 설정 안내를 23개 언어에 반영하고, 기존 테마 대응 막대 색상을 사용해 밝은 화면과 어두운 화면의 가독성을 유지합니다.

이 소스는 선택한 팀에서 현재 CLI로 로그인한 사용자의 예산을 표시합니다. 설정된 Gateway 키의 발급자를 자동 추정하지 않습니다. 공식 예산 규칙, 예산 조회 API, 키의 비용 귀속을 기준으로 구현했습니다.

검증

  • 최신 HEAD 4549f94258db83b87d0b6f9f5a40397ee0665c1c의 focused Swift Testing 41개 / 6 suites 통과. 1 MiB 초과 전체 예산의 페이지 조회, cursor 반복·중간 실패, 팀 전환 시 이력·reset 이벤트 차단을 유지합니다. 추가로 가짜 monotonic clock으로 전체 deadline 누적·남은 subprocess 시간·늦은 최종 응답 거부를 검증하고, source·팀 명시·취소의 12개 조합에서 fallback 진단과 API strategy 연결을 검증합니다.
  • PATH=/opt/homebrew/bin:$PATH make check 통과. SwiftLint 3,054개 파일에서 위반 0건.
  • 문서 링크·문서 인덱스·저장소 파일 크기 검사 통과.
  • 밝은 테마와 어두운 테마 화면을 합성 데이터로 렌더링해 확인했습니다. 막대와 트랙의 대비는 각각 11.69:1과 9.33:1입니다.
  • 실제 계정 조회는 실행하지 않았습니다. 최신 HEAD 4549f94258db83b87d0b6f9f5a40397ee0665c1c의 전체 CI는 통과했습니다. macOS 로그에서 발견·선택된 1,723개 selection 전체를 실행해 226그룹이 첫 실행에 성공했으며 실패·시간 초과·재시도는 0건입니다. plugin engine A/B golden 테스트도 각 실행에서 94개 / 6 suites 통과했습니다. Linux x64·arm64·musl 빌드, lint와 lint-build-test 최종 집계가 성공했고, cache 정리 작업은 skipped입니다. GitGuardian도 통과했습니다.
  • 같은 HEAD의 Codex 코드 재리뷰는 지적 없이 완료됐습니다. ClawSweeper input-scanner hold는 미해결이며 코드리뷰 판정은 생성되지 않았습니다. maintainer에게 비공개 진단 확인을 요청한 상태로, 전체 자동리뷰 완료나 merge-ready를 의미하지 않습니다.

재현 명령:

PATH=/opt/homebrew/bin:$PATH make test-fast FILTER='VercelCLIUsageTests|VercelCLIDeadlineTests|VercelFallbackTests|VercelTeamSettingsTests|APIBalancePluginTests|PluginProviderSpecTests'
PATH=/opt/homebrew/bin:$PATH CODEXBAR_BALANCE_SCREENSHOT_DIR=/tmp/codexbar-vercel-teams-proof make test-fast FILTER='LocalizationLanguageCatalogTests|BurnDownCapabilityTests|VercelCLIUsageTests|VercelTeamSettingsTests|APIBalancePluginTests|PluginProviderSpecTests|ConfigValidationTests|ProviderSettingsDescriptorTests.*balance|MenuBarLayoutProviderBalanceTests|APIBalanceScreenshotRenderTests'
PATH=/opt/homebrew/bin:$PATH make check

화면

금액은 합성 데이터입니다.

Vercel 소스 및 팀 선택 설정

밝은 테마의 개인 예산

어두운 테마의 개인 예산

🤖 Generated with Claude Code

https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t

@clawsweeper

clawsweeper Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review blocked

Automated review did not run, so no review verdict was produced.

Reason: The input-safety check rejected material in this revision. No detected value, path, or scanner output is reproduced here.

Automatic review is on hold, including after source changes. Request a fresh re-review after resolving the failure; maintainers can also release the hold through an intentional scanner-policy update.

Next step: If this is a genuine credential, remove and rotate it. If it is an intentional test fixture, a maintainer must review and qualify it.

View the workflow run.

@clawsweeper clawsweeper Bot added the clawsweeper:intake:feature Preliminary submission classification; full source review pending. label Oct 18, 2026
Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t
@sf-jin-ku
sf-jin-ku force-pushed the feat/vercel-personal-budgets branch from e3f2240 to 22829a9 Compare October 18, 2026 07:52
@sf-jin-ku
sf-jin-ku marked this pull request as ready for review October 18, 2026 07:52
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-18T19:51:48.555310Z 4549f94 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 22829a9704

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/CodexBarCore/Providers/Vercel/VercelCLIUsageFetcher.swift Outdated
Reuse the CLI current team and offer an app-local team picker. Invalidate prior usage on source or team changes and verify the unpaged budget-list contract with a large synthetic response.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t
@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

@codex review

@clawsweeper re-review

최신 HEAD는 5a16ba9입니다. 팀 자동 탐지와 CodexBar 안에서의 팀 선택을 반영했고, 재검토에 필요한 근거를 정리했습니다.

  • 설정 및 팀 전환 테스트: 앱 안에만 팀 선택을 저장하고 CLI 전역 팀을 바꾸지 않으며, 이전 snapshot·진행 중인 publication과 늦은 팀 목록 응답을 무효화합니다.
  • 팀 목록 pagination과 큰 예산 목록을 검증했습니다. 예산 목록은 공식 API의 전체 반환 모드(limit·cursor 생략)를 사용합니다. 기존 pagination finding에는 스레드로 상세 근거를 답했습니다.
  • 최종 로컬 결과: Swift Testing 91개 / 7 suites 통과, 합성 화면 렌더링 XCTest 1개 통과, make check 종료 코드 0. SwiftLint 3,054개 파일 / 위반 0건. 문서 링크·문서 인덱스·저장소 크기 검사도 통과했습니다. 재현 명령은 PR 본문에 있으며, 새 HEAD의 전체 테스트와 Linux 빌드는 PR CI 결과로 확인하겠습니다.
  • 설정 화면, 밝은 테마, 어두운 테마는 합성 데이터로 생성했습니다. 렌더링 테스트와 고정 fixture로 재현할 수 있습니다. 실제 Vercel 계정 조회·쿠키/Keychain 읽기·추론 요청은 실행하지 않았습니다.

ClawSweeper 안전 검사 hold 확인 요청: 공개된 이전 댓글에는 검출 값·경로가 없어서 원인을 확정할 수 없습니다. 위 fixture의 출처는 공개 코드에 있지만, 그것이 실제 검출 원인이라는 뜻은 아닙니다. 같은 안전 검사를 유지한 재검토를 부탁드립니다. hold가 유지되면 maintainer께서 비공개 진단을 확인해 실제 credential인지 intentional fixture인지 판정해 주세요. 실제 credential이면 제거·회전을 우선하고, fixture라면 maintainer qualification 절차를 따르겠습니다. 민감한 검출 값은 공개 댓글에 재게시하지 말아 주세요.

@clawsweeper

clawsweeper Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5a16ba920c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/CodexBarCore/Providers/Vercel/VercelCLIUsageFetcher.swift
Comment thread Sources/CodexBarCore/Providers/Vercel/VercelCLIUsageFetcher.swift
Read cursor pages within the existing subprocess output ceiling and fail incomplete traversals without publishing partial budgets. Use the existing unavailable history capability to keep team-scoped budgets out of provider-wide histories and reset detectors.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t
@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

@codex review

새 HEAD a54906d에 두 지적을 수정했습니다. 각 스레드에 수정 코드와 회귀 테스트 링크를 답했습니다.

  • 큰 예산 응답: 200개씩 cursor 조회하며 모든 페이지에 같은 팀 범위를 유지합니다. 전체 1 MiB 초과 fixture, 후반 사용자 예산, default/custom 우선순위와 불완전 조회 실패를 검증했습니다.
  • 팀별 이력 혼합: 기존 capability로 Vercel generic plan history와 burn-down widget을 비활성화했습니다. 팀 A→B→A에서 기존 bucket 보존과 기록·조회·reset 이벤트 차단을 검증했습니다.
  • 최종 로컬 결과: Swift Testing 93개 / 7 suites, 화면 렌더링 XCTest 1개, make check 종료 코드 0, SwiftLint 3,054개 파일 / 위반 0건. 새 HEAD의 CI는 별도 확인 중입니다.

ClawSweeper hold 확인 요청: @steipete 재리뷰 결과도 input scanner에서 중단되어 코드 리뷰 판정이 생성되지 않았습니다. 공개 응답은 검출 값과 경로를 숨기므로 원인을 확정할 수 없습니다. maintainer가 비공개 진단을 확인해 실제 credential인지 intentional fixture인지 판정하고, fixture이면 정식 qualification 절차를 안내해 주세요. 실제 credential이면 제거·회전이 우선입니다. 민감한 검출 값을 공개하거나 scanner를 우회하지 않고, 원인 변화 없이 같은 재리뷰 요청을 반복하지 않겠습니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: a54906d649

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Keep the catalog test aligned with disabled team-scoped plan history and verify both widget modes across five window durations.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t
@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

@codex review

HEAD 024ea9d은 테스트 기대값만 수정한 커밋입니다. 이전 HEAD a54906d649는 Codex 재리뷰에서 새 지적 없이 완료됐고 Linux x64·arm64·musl 빌드는 통과했습니다.

macOS 실패 로그는 BurnDownCapabilityTests의 catalog 기대값이 Vercel을 여전히 선택 가능하다고 가정해 실패했음을 보여줍니다. 5가지 주기 × 일반/combined 2모드 = 10개 assertion이 모두 같은 불일치([] 대 [.vercel])였습니다. 로컬에서도 수정 전 같은 10건을 재현했습니다.

수정 테스트는 기존 비선택 provider 목록에 Vercel을 추가합니다. 전체 provider 순회와 90·300·1440·10080·43200분의 일반/combined 검증을 유지합니다. 팀 간 이력 혼합을 막는 history 및 widget capability는 유지했고 production 코드는 변경하지 않았습니다.

수정 후 검증은 모두 종료 코드 0입니다.

  • Swift Testing 107개 / 8 suites 통과, 합성 화면 렌더링 XCTest 1개 통과. 기존 Vercel 예산·팀 전환·이력 격리 회귀와 BurnDownCapabilityTests를 함께 실행했습니다.
  • PATH=/opt/homebrew/bin:$PATH make check 통과, SwiftLint 3,054파일 / 위반 0건, 문서·manifest·저장소 크기 검사 통과.
  • 재현 명령은 갱신한 PR 본문에 있습니다. 실제 계정·Keychain 접근은 실행하지 않았습니다.

이전 macOS CI는 226그룹 중 32성공·1실패 후 중단되어 전체 suite 통과 근거가 아닙니다. 새 HEAD의 전체 CI 결과를 계속 추적하겠습니다. ClawSweeper input-scanner hold는 별도 미해결이며, 앞서 요청한 maintainer의 비공개 진단 확인을 기다리고 있습니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. What shall we delve into next?

Reviewed commit: 024ea9ddc4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t
@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

@codex review

새 HEAD d8a8cd9은 이탈리아어 localization 테스트의 브랜드명 기대 목록에 Vercel CLI 한 줄을 추가합니다. 이전 HEAD 024ea9ddc4의 Codex 재리뷰는 새 지적 없이 완료됐고 Linux x64·arm64·musl 빌드도 모두 통과했습니다.

이번 macOS 실패 로그에서 유일한 테스트 실패는 LocalizationLanguageCatalogTests.swift:849의 unchanged == intentionallyUnchanged입니다. 실제 미번역 집합에만 Vercel CLI가 있었고, 기존 Gemini CLI·Grok CLI와 동일하게 도구명을 유지한 것이 원인입니다. 로컬에서도 수정 전 42개 테스트 중 같은 assertion 1건의 실패를 재현했습니다.

수정은 기존 브랜드명 목록만 갱신합니다. 모든 키의 일치, placeholder 검증과 미번역 집합의 정확한 동등성 검사는 유지합니다. production 코드·번역 리소스는 변경하지 않았습니다.

수정 후 검증은 모두 종료 코드 0입니다.

  • Swift Testing 149개 / 9 suites 통과, 합성 화면 렌더링 XCTest 1개 통과. 전체 LocalizationLanguageCatalogTests와 기존 Vercel 예산·팀 선택·이력 격리·burn-down capability 회귀를 함께 실행했습니다.
  • PATH=/opt/homebrew/bin:$PATH make check 통과. SwiftLint 3,054개 파일 / 위반 0건. 문서·manifest·저장소 크기 검사도 통과했습니다.
  • 재현 명령을 PR 본문에 갱신했습니다. 실제 계정 조회나 Keychain 접근은 실행하지 않았습니다.

이전 macOS 실행은 226그룹 중 134성공·1실패 후 중단됐으므로 전체 suite 통과 근거로 취급하지 않습니다. 새 HEAD의 전체 CI를 계속 확인하겠습니다. ClawSweeper input-scanner hold는 별도 미해결이며, 앞서 요청한 maintainer의 비공개 진단 확인을 기다립니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: d8a8cd9c77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

최신 HEAD d8a8cd9의 CI 실행이 completed / success로 완료됐습니다.

검증 결과 근거
macOS 전체 테스트 성공 실행 로그: discovered/selected selections 각각 1,721, selected/first-pass successful groups 각각 226, failed/timed out/retries 모두 0
Plugin engine A/B goldens 성공 같은 macOS job에서 94 tests / 6 suites 통과
Linux CLI x64·arm64·musl 모두 성공 위 CI 실행의 세 build job
lint 및 최종 집계 성공 lint, lint-build-test 모두 success; prune-swiftpm-caches는 skipped
Codex 코드 재리뷰 지적 없이 완료 같은 HEAD의 리뷰 결과
ClawSweeper hold 미해결 input scanner에서 중단되어 코드리뷰 판정 없음

이전 CI의 부분 실행과 달리 이번에는 전체 발견 inventory가 실행됐습니다. 기존 로컬 149개 focused 테스트·합성 화면 XCTest 1개·make check 결과와 함께 PR 본문을 갱신했습니다. 이번 확인에는 로컬 테스트 재실행이나 실제 계정·Keychain 접근이 없었습니다.

ClawSweeper에 대해서는 앞서 요청한 maintainer의 비공개 진단을 기다립니다. GitHub의 CLEAN 상태나 다른 검사 성공을 hold 해제로 간주하지 않으며, 원인 변화 없이 재리뷰를 반복하지 않겠습니다. merge 및 auto-merge는 실행하지 않았습니다.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYiF6FrNLHsyqZXK1MeD8t
@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

@codex review

새 HEAD 4549f94에서 유사 provider 비교 후 필요한 보완만 적용했습니다.

  • 전체 CLI deadline: Cursor의 전체 lookup 제한 패턴을 참고해 팀 탐색→사용자 확인→예산의 모든 페이지가 monotonic 30초를 공유합니다. 각 subprocess에는 min(15초, 남은 시간)을 전달하고, 기한 이후 응답도 거부합니다. 설정의 팀 목록 Refresh도 별도 30초 제한을 적용합니다. 코드, 시간·오류 회귀 테스트.
  • Auto fallback 진단: Qwen Cloud의 기존 diagnostic hook 패턴을 참고했습니다. 성공한 API strategy에 진단을 붙여 개인 예산 대신 API key의 팀 credits를 표시하는 이유를 알립니다. 기존 strategy ID·source·API plugin 결과를 유지합니다. 직접 API 호출에는 진단이 없고, 명시 팀·CLI 모드·취소에서는 fallback하지 않습니다. 코드, 실제 resolver 연결 및 12개 조합 테스트.
  • 오류 원인: subprocess timeout·출력 상한 초과·설치 누락을 구분하되 원본 출력은 계속 숨깁니다. 미재현된 외부 CLI 계정 전환 문제나 팀별 이력 기능은 이번 수정에 포함하지 않았습니다.

최종 로컬 검증은 모두 종료 코드 0입니다.

  • Swift Testing 41개 / 6 suites 통과. 기존 예산 pagination·팀 선택·이력 격리와 API balance/plugin 검증을 함께 실행했습니다.
  • PATH=/opt/homebrew/bin:$PATH make check 통과. SwiftLint 3,054개 파일 / 위반 0건, formatter·문서·manifest·스크립트 검사 통과.
  • 실제 계정·CLI 로그인 상태·쿠키·Keychain을 조회하지 않았으며, clock·runner·HTTP transport를 주입한 테스트만 사용했습니다.

재현 명령:

PATH=/opt/homebrew/bin:$PATH make test-fast FILTER='VercelCLIUsageTests|VercelCLIDeadlineTests|VercelFallbackTests|VercelTeamSettingsTests|APIBalancePluginTests|PluginProviderSpecTests'
PATH=/opt/homebrew/bin:$PATH make check

이전 HEAD의 전체 CI 성공과 새 HEAD의 검증 상태는 구분해 PR 본문을 갱신했습니다. 새 HEAD의 전체 CI와 재리뷰를 계속 추적하겠습니다. ClawSweeper input-scanner hold는 별도 미해결이며, 앞서 요청한 maintainer의 비공개 진단 확인을 기다립니다. merge·auto-merge는 실행하지 않았습니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Can't wait for the next one!

Reviewed commit: 4549f94258

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@steipete

Copy link
Copy Markdown
Owner

Thanks @sf-jin-ku for extending the existing Vercel provider rather than adding a new one, and for handling user and team scope, pagination and stale results; the budget API and CLI usage are both valid.

I'm closing this because it adds native fetching to a plugin-backed provider: plugins can't run the Vercel CLI or reuse its login, and we don't want to grow new native fetch paths. A plugin that reads budgets with an explicit Vercel access token is feasible, but it changes the setup (a separate token, kept apart from the AI Gateway key), so that contract needs to be decided first. Happy to discuss that in an issue.

@steipete steipete closed this Oct 18, 2026
@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

최신 HEAD 4549f94의 전체 CI가 completed / success로 완료됐습니다. PR 본문에도 같은 HEAD의 결과를 반영했습니다.

검증 결과 근거
macOS 전체 테스트 성공 로그: discovered/selected selections 각각 1,723, selected/first-pass successful groups 각각 226, 실패·시간 초과·재시도 0
Plugin engine A/B goldens 성공 같은 macOS job에서 각 실행 94 tests / 6 suites 통과
Linux CLI x64·arm64·musl 모두 성공 위 CI의 세 build job
lint 및 최종 집계 성공 lint, lint-build-test success; cache 정리는 skipped
GitGuardian 성공 현재 HEAD check success
Codex 코드 재리뷰 지적 없이 완료 같은 HEAD의 리뷰
ClawSweeper hold 미해결 input scanner에서 중단되어 코드리뷰 판정 없음

이 결과는 deadline·fallback 수정이 포함된 현재 HEAD의 근거입니다. 로컬 검증을 불필요하게 재실행하지 않았고 실제 계정·Keychain에도 접근하지 않았습니다.

ClawSweeper는 앞서 요청한 maintainer의 비공개 진단 확인을 기다립니다. 다른 검사 성공으로 hold가 해제됐다고 간주하지 않으며 merge-ready 선언은 보류합니다. merge·auto-merge는 실행하지 않았습니다.

@sf-jin-ku

Copy link
Copy Markdown
Contributor Author

Thanks for the review. I opened #4621 to settle the token-based plugin contract before any further code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:intake:feature Preliminary submission classification; full source review pending.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants