Repository navigation
Conversation
Three deprecated surfaces now fail with exit 1 and a message naming the replacement. Each is a hidden, still-parsed tombstone that raises RemovedSurfaceError (error_fingerprint ending in :removed_flag). --use-pg-delta and --include-raw-output fail on a credential-free runtime before any work; the db pull --experimental rejection fails after the profile and project .env load, before any config, database or network work. - db pull --use-pg-delta (any value): use --declarative. The diff engine is still chosen with --diff-engine or [experimental.pgdelta] enabled. - db pull in the --experimental structured-dump mode (--experimental or SUPABASE_EXPERIMENTAL resolving true without --declarative): use --declarative, or --experimental=false for a migration pull. --experimental --declarative is unchanged. The check lives in the db pull handler, so the supabase pull orchestrator keeps working when SUPABASE_EXPERIMENTAL is set. - domains create|get|reverify|activate|delete --include-raw-output (any value): use -o json. Rejected on a credential-free runtime, so it needs no login. Removes the --declarative/--use-pg-delta argv replay, the deprecation lines, DbPullInvoke.forceMigrationMode, the structured-dump branch and the emitHostnameResult includeRawOutput forcing. The supabase pull retry hint keeps its --experimental=false suffix. BREAKING CHANGE: supabase db pull --use-pg-delta is removed; use --declarative. supabase db pull with --experimental or SUPABASE_EXPERIMENTAL and no --declarative is removed; use --declarative, or pass --experimental=false for a migration pull. supabase domains create|get|reverify|activate|delete --include-raw-output is removed; use -o json. Each removed surface exits 1 and prints its replacement.
There was a problem hiding this comment.
🤖 AI Review
Both independent reviews were available. All three findings are confirmed and distinct: one minor test-quality concern and two nits concerning documentation and redundant environment-file reads. None establishes a runtime defect.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟡 MINOR | apps/cli/src/commands/db/pull/pull.removed-flag.integration.test.ts:158 |
test-quality |
codex | The supported-invocation negative controls accept unrelated failures, allowing parsing or runtime-initialization regressions to pass without exercising the removal-guard exemption. |
| ⚪ NIT | apps/cli/src/commands/pull/SIDE_EFFECTS.md:318 |
documentation |
claude | The statement that runDbPull never reads --experimental or SUPABASE_EXPERIMENTAL is inaccurate: its local-container prelude still resolves that gate, although the gate no longer selects the pull mode. |
| ⚪ NIT | apps/cli/src/commands/db/pull/pull.handler.ts:27 |
performance |
claude | A non-declarative db pull that passes the removal guard loads and parses project environment files redundantly: once in the handler and again in runDbPull. |
Stats
Claude findings: 2 · Codex findings: 1 · Confirmed: 3 · 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.
…c-remove-deprecated-flags-db-pull-use-pg-delta-db-pull
…c-remove-deprecated-flags-db-pull-use-pg-delta-db-pull
avallete
left a comment
There was a problem hiding this comment.
Dogfooded against a real project, without credentials: all three removed surfaces exit 1 with the expected removal message, and the controls are not rejected. Those controls are plain db pull, --experimental=false with SUPABASE_EXPERIMENTAL set, and --experimental --declarative. The removed flags are hidden from --help, and supabase pull still works.
One minor, non-blocking comment inline.
Summary
This removes three surfaces that are deprecated in favour of an existing replacement. Each now exits 1 with a
RemovedSurfaceErrorthat names the replacement. It uses the same tombstone pattern asdb diff --use-pg-schemaandfunctions download --legacy-bundle.db pull --use-pg-delta--use-pg-delta was removed.--declarative. The diff engine is still chosen with--diff-engineor[experimental.pgdelta] enabled.db pullstructured-dump mode (experimental on, no--declarative)The --experimental structured-dump mode of db pull was removed.--declarativefor per-object files, or--experimental=false/ unsetSUPABASE_EXPERIMENTALfor a migration pulldomains create|get|reverify|activate|delete --include-raw-output--include-raw-output was removed.-o json--use-pg-deltaand--include-raw-outputstay parsed but hidden. Any value, including=false, hits the removal error. Both are rejected on a credential-free runtime, so they never ask for a login or profile first.db pullchecks the resolved experimental value, not only the flag. That means--experimental, shellSUPABASE_EXPERIMENTALand project.envall count, with the usual flag > env precedence. Failing loudly is safer than silently switching to a migration pull that writes remote history.--experimental --declarativestill works, and--experimental=falseoverrides the env for a single run.supabase pullorchestrator is unaffected. Its retry hint keeps--experimental=falsefor that reason.forceMigrationMode, the--declarative/--use-pg-deltaargv-order replay andemitHostnameResult's raw-output handling. The staleDOCS_EXCLUDED_FLAGSentries for the domains flag are gone too.use-pg-deltakey is still recorded oncli_command_executed.flags, so tombstone hits stay visible.db diff --use-pg-delta, which is still the db diff engine selector, and the global--experimentalflag.--use-pg-delta: 47 runs from 30 people--experimentalwithout--declarative: 17 runs from 9 people (argv only)--include-raw-output: 2 runs from 1 personLinked issue
Closes CLI-2596
Checklist
pull.removed-flag,domains.removed-flag) assert message, suggestion, fingerprint and that no request is made. They cover=false, env and.envsources, and missing credentials/profile.db pull,--experimental=falseand--experimental --declarativeare not rejected.pnpm check:allpasses. The apps/cli unit and integration suites andpnpm docs:specpass.🤖 Generated with Claude Code
BREAKING CHANGE:
db pull --use-pg-deltais removed; use--declarative.db pullno longer has an--experimentalstructured-dump mode: with--experimentalorSUPABASE_EXPERIMENTALset and no--declarativeit now exits 1; use--declarative, or--experimental=falsefor a migration pull.--include-raw-outputis removed fromdomains create,get,reverify,activateanddelete; use-o json.