Repository navigation
Conversation
There was a problem hiding this comment.
Superseded by a newer AI review
🤖 AI Review
Both independent reviews were available. All four findings are confirmed, with no duplicates. Setting a positive retry limit removes bundled-deploy retries for transient POST/PATCH failures; malformed values also block local commands; configured deploy retries silently reject Retry-After delays over 10 seconds; and the new test waits through real backoff. The rate-limit finding is raised to minor because it can terminate deployment. Verification was by code inspection; dependencies were unavailable for test execution.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟡 MINOR | apps/cli/src/shared/functions/deploy.ts:2035 |
correctness |
claude | A positive SUPABASE_API_MAX_RETRIES disables the bundled deployment's existing retries for POST/PATCH 5xx and transport failures without providing equivalent client retries. Setting it to 5 can therefore make a transient failure terminate deployment on the first attempt. |
| 🟡 MINOR | apps/cli/src/config/command-settings.layer.ts:203 |
error-handling |
claude | Malformed SUPABASE_API_MAX_RETRIES values fail shared settings construction even for commands that do not use the Management API, including local database dumps. |
| 🟡 MINOR | apps/cli/src/shared/functions/deploy.ts:1789 |
ux |
claude | Configuring a positive retry limit removes deploy's rate-limit notices and changes long Retry-After handling: a 429 requesting more than 10 seconds now terminates upload or bulk update instead of waiting. |
| 🟡 MINOR | apps/cli/src/commands/functions/deploy/deploy.integration.test.ts:2352 |
test-quality |
codex | The new duplicate-function test waits through production retry backoff in real time although it only verifies the POST-to-PATCH transition and request count. |
Stats
Claude findings: 3 · Codex findings: 1 · Confirmed: 4 · Refuted: 0 · Uncertain: 0
Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: auto · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
…ry-option-for-the-official
CLI benchmark: no changes foundCommit
API calls: unchanged for all 7 commands. Binary size: 133.8 MB, up 4.0 KB from 133.8 MB. Details: timing ranges, API calls per command, slowest phasesTiming ranges
API calls per command
Slowest phasesNo command moved beyond noise, so there are no phase deltas. Comment |
|
/ai-review |
There was a problem hiding this comment.
🤖 AI Review
Confirmed three minor concerns from Claude: the template overstates retry suppression, command environment-variable contracts omit the new setting, and eager validation also affects offline commands. Codex's independent review completed with no findings. No major or critical issues were verified. Tests were not run.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟡 MINOR | apps/cli/src/SIDE_EFFECTS_TEMPLATE.md:65 |
documentation |
claude | The template's 0 = one attempt wording does not account for command-level retries. With SUPABASE_API_MAX_RETRIES=0, bootstrap can still issue nine failing API-key requests. |
| 🟡 MINOR | apps/cli/src/commands/functions/deploy/SIDE_EFFECTS.md:64 |
documentation |
claude | Only functions deploy's command contract documents SUPABASE_API_MAX_RETRIES, although the new setting affects other commands, including login and services. |
| 🟡 MINOR | apps/cli/src/config/command-settings.layer.ts:204 |
error-handling |
claude | An invalid SUPABASE_API_MAX_RETRIES prevents offline commands from starting because validation runs during settings-layer construction, even when no Management API request is needed. This broader failure scope is undocumented. |
Stats
Claude findings: 3 · Codex findings: 0 · Confirmed: 3 · Refuted: 0 · Uncertain: 0
Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: manual · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
TL;DR
adds
SUPABASE_API_MAX_RETRIESso automation can cap management api retries, where0sends each request once.whats introduced?
the new env var sets the retry count on every management api client the cli builds
login and
servicesincluded.functions deploydrops its own retry loops when it is set and only keeps turning a duplicated create into an update. an invalid value stops the command before any request, and leaving it unset keeps today's behavior...flowchart TD env["SUPABASE_API_MAX_RETRIES"] --> parse{"CommandSettings.load"} parse -- "unset or empty" --> none["none: today's behaviour"] parse -- "plain digits, e.g. 0 or 2" --> some["some(n)"] parse -- "anything else" --> err["ApiMaxRetriesError, exit 1, 0 requests"] none --> defaults["client retries 5 times, deploy keeps its own loops"] some --> clients["Management API clients: retry.maxRetries = n"] clients --> platform["platform api: projects, secrets, link, ..."] clients --> login["login profile lookup"] clients --> services["services version lookup"] some --> deploy["functions deploy: DeployApiMaxRetries"] deploy --> single["command loops off, the client is the only retry layer"] single --> dup["duplicated create still becomes one update"]why?
the management api client retries retryable failures up to 5 times with no way to change that,
so eg: a failing
projects listsends 6 requests, automation that has to stop on the first failure had no supported way to send each request once....ref