Repository navigation
refactor(cli): cover config push runtime with effect lint (CLI-2486) - #6795
Conversation
There was a problem hiding this comment.
🤖 AI Review
All three reported findings were verified against the checked-out code. The converted email-content tests lack the Scope required by their scoped temporary directories. The environment lookup also visits fields outside the secret check, creating an unnecessary error path. The JSON parsing wrapper is a documentation nit. The specific claim that env() causes a Config failure was not established.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟠 MAJOR | apps/cli/src/commands/config/push/push.auth-email-content.unit.test.ts:56 |
test-setup |
codex | The converted tests use scoped temporary directories without supplying Scope, so the test Effects cannot typecheck as written. |
| 🟡 MINOR | apps/cli/src/commands/config/push/push.handler.ts:137 |
error-handling |
claude | Environment-reference prefetch reads strings throughout the loaded document, including fields outside the secret check, and propagates a Config lookup error from any of them as a push failure. |
| ⚪ NIT | apps/cli/src/commands/config/push/push.cost-matrix.ts:84 |
code-quality |
claude | parseAddonsBody is an unexplained one-line JSON.parse wrapper, leaving the reason for this exception to the surrounding Effect parsing pattern unclear. |
Stats
Claude findings: 2 · Codex findings: 1 · Confirmed: 3 · Refuted: 0 · Uncertain: 0
Models: claude-opus-5-5 + gpt-6-sol · Trigger: auto · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
…i-2486-config-family-coverage-push-runtime
avallete
left a comment
There was a problem hiding this comment.
Runtime rewrites stay on the old contract:
- Auth email HTML is read as bytes and decoded with
ignoreBOM: true, so a leading BOM is still pushed. Read failures still surface the Node error text (ENOENT: ...). env(VAR)lookup prefetches throughConfig.option(Config.string(name))on the liveprocess.envrecord (exact key, empty strings kept) and then falls back to the project env. Same result asprocess.env[name] ?? projectEnv[name]for the namesassertDecryptableSecretsactually resolves.Config.optiondoes not fail on a missing name under that provider.sms_test_otp_valid_untiluses a UTCDatecopy plusDateTime.formatIso. The unit test still expects the old ISO string, including the leap-day roll to March 1.- The addons status error is
yield*on the sameTaggedError(Effect.fail).parseAddonsBodyis stillJSON.parse.
No runtime behavior change.
TL;DR
brings the
supabase config pushruntime under the effect lintwhats introduced?
effect lint applied to the
config pushruntime:config/push, holding back its integration, e2e and live tests until the next pageFileSystemand fail with the push load error directly, keeping a leading BOM and the same read error textenv(VAR)secret references resolve throughConfigbefore the decrypt check, the lookupinspectalready uses, so a set but empty shell variable behaves as beforesms_test_otp_valid_untilcomes fromDateTime, still rolling a leap day over to March 1stPathserviceref: