Skip to content

Capture implicit UC dependencies in lifecycle.depends_on - #7132

Draft
denik wants to merge 5 commits into
mainfrom
capture-uc-depends-on
Draft

denik wants to merge 5 commits into
mainfrom
capture-uc-depends-on

Conversation

@denik

@denik denik commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Changes

CaptureUCDependencies no longer rewrites a literal schema_name/catalog_name into ${resources.schemas.X.name} just to order a resource after the schema or catalog it names. It adds lifecycle.depends_on instead, so field values stay literal.

The reference also carried the schema's final name, which presets change in development mode. ApplyPresets now prefixes the schema name in the dependents too, using the same matching.

Builds on #7120 (lifecycle.depends_on).

This pull request and its description were written by Isaac.

@denik
denik added this pull request to stack #7131 October 20, 2026 14:15
@github-actions github-actions Bot added the DABs DABs related issues label Oct 20, 2026
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Commit: a0662b89d | Workflow run

Regression test report

Selected 15 changed tests (limit=20, 0 not selected)

28 tests: regression=28 unreleased=0 coverage=0 failing=0

test branch main (4d88efe) latest (v1.22.1)
TestAccept/bundle/lifecycle/depends-on-validation/DMS= ✅ ❌ ❌
TestAccept/bundle/lifecycle/depends-on-validation/DMS=true ✅ ❌ ❌
TestAccept/bundle/lifecycle/depends-on/DMS= ✅ ❌ ❌
TestAccept/bundle/lifecycle/depends-on/DMS=true ✅ ❌ ❌
TestAccept/bundle/migrate/auto/depends-on/DMS= ✅ ❌ ❌
TestAccept/bundle/migrate/command/grants/DMS= ✅ ❌ ❌
TestAccept/bundle/refschema/DMS= ✅ ❌ ❌
TestAccept/bundle/refschema/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/computed_volume_path/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/computed_volume_path/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_model_serving_endpoint/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_model_serving_endpoint/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_quality_monitor/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_quality_monitor/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_registered_model/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_registered_model/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_vector_search_index/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_vector_search_index/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_volume/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/implicit_deps_volume/DMS=true ✅ ❌ ❌
TestAccept/bundle/resource_deps/remote_field_storage_location/DMS= ✅ ❌ ❌
TestAccept/bundle/resource_deps/remote_field_storage_location/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/grants/registered_models/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/grants/registered_models/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/grants/volumes/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/grants/volumes/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/volumes/catalog-var-ref/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/volumes/catalog-var-ref/DMS=true ✅ ❌ ❌
TestAccept/bundle/lifecycle/depends-on-validation/DMS=: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1311
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1081
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "Error: invalid lifecycle.depends_on: no such resource: missing_for_run\n  at resources.job_runs.a_run.lifecycle.depends_on[0].resource\n  in databricks.yml:25:23\n\nError: invalid lifecycle.depends_on: resource \"a_job\" cannot depend on itself\n  at resources.jobs.a_job.lifecycle.depends_on[0].resource\n  in databricks.yml:10:23\n\nError: invalid lifecycle.depends_on: no such resource: missing\n  at resources.jobs.a_job.lifecycle.depends_on[1].resource\n  in databricks.yml:11:23\n\nError: invalid lifecycle.depends_on: no such resource: a.b.c\n  at resources.jobs.b_job.lifecycle.depends_on[0].resource\n  in databricks.yml:16:23\n\nName: test-bundle\nTarget: default\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default\n\nFound 4 errors\n"
        	            	actual  : "Warning: unknown field: depends_on\n  at resources.jobs.a_job.lifecycle\n  in databricks.yml:9:9\n\nWarning: unknown field: depends_on\n  at resources.jobs.b_job.lifecycle\n  in databricks.yml:15:9\n\nWarning: unknown field: depends_on\n  at resources.job_runs.a_run.lifecycle\n  in databricks.yml:24:9\n\nName: test-bundle\nTarget: default\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default\n\nFound 3 warnings\n\nUnexpected success\n\nExit code: 1\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,16 +1,12 @@
        	            	-Error: invalid lifecycle.depends_on: no such resource: missing_for_run
        	            	-  at resources.job_runs.a_run.lifecycle.depends_on[0].resource
        	            	-  in databricks.yml:25:23
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.jobs.a_job.lifecycle
        	            	+  in databricks.yml:9:9
        	            	 
        	            	-Error: invalid lifecycle.depends_on: resource "a_job" cannot depend on itself
        	            	-  at resources.jobs.a_job.lifecycle.depends_on[0].resource
        	            	-  in databricks.yml:10:23
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.jobs.b_job.lifecycle
        	            	+  in databricks.yml:15:9
        	            	 
        	            	-Error: invalid lifecycle.depends_on: no such resource: missing
        	            	-  at resources.jobs.a_job.lifecycle.depends_on[1].resource
        	            	-  in databricks.yml:11:23
        	            	-
        	            	-Error: invalid lifecycle.depends_on: no such resource: a.b.c
        	            	-  at resources.jobs.b_job.lifecycle.depends_on[0].resource
        	            	-  in databricks.yml:16:23
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.job_runs.a_run.lifecycle
        	            	+  in databricks.yml:24:9
        	            	 
        	            	@@ -22,3 +18,7 @@
        	            	 
        	            	-Found 4 errors
        	            	+Found 3 warnings
        	            	 
        	            	+Unexpected success
        	            	+
        	            	+Exit code: 1
        	            	+
        	Test:       	TestAccept/bundle/lifecycle/depends-on-validation/DMS=
        	Messages:   	bundle/lifecycle/depends-on-validation/output.txt vs /tmp/TestAcceptbundlelifecycledepends-on-validationDMS=2208153157/002/output.txt

latest (v1.22.1): same output as main (4d88efe)

TestAccept/bundle/lifecycle/depends-on-validation/DMS=true: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1311
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1081
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "Error: invalid lifecycle.depends_on: no such resource: missing_for_run\n  at resources.job_runs.a_run.lifecycle.depends_on[0].resource\n  in databricks.yml:25:23\n\nError: invalid lifecycle.depends_on: resource \"a_job\" cannot depend on itself\n  at resources.jobs.a_job.lifecycle.depends_on[0].resource\n  in databricks.yml:10:23\n\nError: invalid lifecycle.depends_on: no such resource: missing\n  at resources.jobs.a_job.lifecycle.depends_on[1].resource\n  in databricks.yml:11:23\n\nError: invalid lifecycle.depends_on: no such resource: a.b.c\n  at resources.jobs.b_job.lifecycle.depends_on[0].resource\n  in databricks.yml:16:23\n\nName: test-bundle\nTarget: default\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default\n\nFound 4 errors\n"
        	            	actual  : "Warning: unknown field: depends_on\n  at resources.jobs.a_job.lifecycle\n  in databricks.yml:9:9\n\nWarning: unknown field: depends_on\n  at resources.jobs.b_job.lifecycle\n  in databricks.yml:15:9\n\nWarning: unknown field: depends_on\n  at resources.job_runs.a_run.lifecycle\n  in databricks.yml:24:9\n\nName: test-bundle\nTarget: default\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default\n\nFound 3 warnings\n\nUnexpected success\n\nExit code: 1\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1,16 +1,12 @@
        	            	-Error: invalid lifecycle.depends_on: no such resource: missing_for_run
        	            	-  at resources.job_runs.a_run.lifecycle.depends_on[0].resource
        	            	-  in databricks.yml:25:23
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.jobs.a_job.lifecycle
        	            	+  in databricks.yml:9:9
        	            	 
        	            	-Error: invalid lifecycle.depends_on: resource "a_job" cannot depend on itself
        	            	-  at resources.jobs.a_job.lifecycle.depends_on[0].resource
        	            	-  in databricks.yml:10:23
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.jobs.b_job.lifecycle
        	            	+  in databricks.yml:15:9
        	            	 
        	            	-Error: invalid lifecycle.depends_on: no such resource: missing
        	            	-  at resources.jobs.a_job.lifecycle.depends_on[1].resource
        	            	-  in databricks.yml:11:23
        	            	-
        	            	-Error: invalid lifecycle.depends_on: no such resource: a.b.c
        	            	-  at resources.jobs.b_job.lifecycle.depends_on[0].resource
        	            	-  in databricks.yml:16:23
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.job_runs.a_run.lifecycle
        	            	+  in databricks.yml:24:9
        	            	 
        	            	@@ -22,3 +18,7 @@
        	            	 
        	            	-Found 4 errors
        	            	+Found 3 warnings
        	            	 
        	            	+Unexpected success
        	            	+
        	            	+Exit code: 1
        	            	+
        	Test:       	TestAccept/bundle/lifecycle/depends-on-validation/DMS=true
        	Messages:   	bundle/lifecycle/depends-on-validation/output.txt vs /tmp/TestAcceptbundlelifecycledepends-on-validationDMS=true238059643/002/output.txt

latest (v1.22.1): same output as main (4d88efe)

TestAccept/bundle/lifecycle/depends-on/DMS=: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: Diff:
        --- bundle/lifecycle/depends-on/output.txt
        +++ /tmp/TestAcceptbundlelifecycledepends-onDMS=3244051549/002/output.txt
        @@ -1,23 +1,22 @@
         
         === Plan records the edges
         >>> [CLI] bundle plan -o json
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         {
        -  "resources.jobs.a_job": [
        -    {
        -      "node": "resources.jobs.z_job",
        -      "label": "depends_on"
        -    },
        -    {
        -      "node": "resources.pipelines.z_pipeline",
        -      "label": "depends_on"
        -    }
        -  ],
        +  "resources.jobs.a_job": null,
           "resources.jobs.z_job": null,
           "resources.pipelines.z_pipeline": null
         }
         
         === Deploy creates dependencies first
         >>> [CLI] bundle deploy
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
         Created jobs.a_job
         Created jobs.z_job
        @@ -26,10 +18,18 @@
         Resources: 3 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //jobs //pipelines
        -POST /api/2.2/jobs/create a_job
        +POST /api/2.2/jobs/create z_job
         
        -=== Destroy deletes dependents first
        +=== Destroy deletes dependents firstWarning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         The following resources will be deleted:
           delete resources.jobs.a_job
           delete resources.jobs.z_job

latest (v1.22.1):

acceptance_test.go:1311: Diff:
        --- bundle/lifecycle/depends-on/output.txt
        +++ /tmp/TestAcceptbundlelifecycledepends-onDMS=1542321114/002/output.txt
        @@ -1,23 +1,22 @@
         
         === Plan records the edges
         >>> [CLI] bundle plan -o json
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         {
        -  "resources.jobs.a_job": [
        -    {
        -      "node": "resources.jobs.z_job",
        -      "label": "depends_on"
        -    },
        -    {
        -      "node": "resources.pipelines.z_pipeline",
        -      "label": "depends_on"
        -    }
        -  ],
        +  "resources.jobs.a_job": null,
           "resources.jobs.z_job": null,
           "resources.pipelines.z_pipeline": null
         }
         
         === Deploy creates dependencies first
         >>> [CLI] bundle deploy
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
         Created jobs.a_job
         Created jobs.z_job
        @@ -28,8 +20,16 @@
         >>> print_requests.py //jobs //pipelines
         POST /api/2.2/jobs/create a_job
         
        -=== Destroy deletes dependents first
        +=== Destroy deletes dependents firstWarning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         The following resources will be deleted:
           delete resources.jobs.a_job
           delete resources.jobs.z_job
        @@ -42,4 +41,5 @@
         All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default
         
         Destroy: 3 deleted
        -a_job deleted first
        +
        +Exit code: 1
TestAccept/bundle/lifecycle/depends-on/DMS=true: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: Diff:
        --- bundle/lifecycle/depends-on/output.txt
        +++ /tmp/TestAcceptbundlelifecycledepends-onDMS=true3099620919/002/output.txt
        @@ -1,23 +1,22 @@
         
         === Plan records the edges
         >>> [CLI] bundle plan -o json
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         {
        -  "resources.jobs.a_job": [
        -    {
        -      "node": "resources.jobs.z_job",
        -      "label": "depends_on"
        -    },
        -    {
        -      "node": "resources.pipelines.z_pipeline",
        -      "label": "depends_on"
        -    }
        -  ],
        +  "resources.jobs.a_job": null,
           "resources.jobs.z_job": null,
           "resources.pipelines.z_pipeline": null
         }
         
         === Deploy creates dependencies first
         >>> [CLI] bundle deploy
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
         Created jobs.a_job
         Created jobs.z_job
        @@ -26,10 +18,18 @@
         Resources: 3 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //jobs //pipelines
        -POST /api/2.2/jobs/create a_job
        +POST /api/2.2/jobs/create z_job
         
        -=== Destroy deletes dependents first
        +=== Destroy deletes dependents firstWarning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         The following resources will be deleted:
           delete resources.jobs.a_job
           delete resources.jobs.z_job
        @@ -42,4 +40,5 @@
         All files and directories at the following location will be deleted: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default
         
         Destroy: 3 deleted
        -a_job deleted first
        +
        +Exit code: 1

latest (v1.22.1):

acceptance_test.go:1311: Diff:
        --- bundle/lifecycle/depends-on/output.txt
        +++ /tmp/TestAcceptbundlelifecycledepends-onDMS=true1323418337/002/output.txt
        @@ -1,23 +1,22 @@
         
         === Plan records the edges
         >>> [CLI] bundle plan -o json
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         {
        -  "resources.jobs.a_job": [
        -    {
        -      "node": "resources.jobs.z_job",
        -      "label": "depends_on"
        -    },
        -    {
        -      "node": "resources.pipelines.z_pipeline",
        -      "label": "depends_on"
        -    }
        -  ],
        +  "resources.jobs.a_job": null,
           "resources.jobs.z_job": null,
           "resources.pipelines.z_pipeline": null
         }
         
         === Deploy creates dependencies first
         >>> [CLI] bundle deploy
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
         Created jobs.a_job
         Created jobs.z_job
        @@ -26,10 +18,18 @@
         Resources: 3 created, 0 changed, 0 deleted, 0 unchanged
         
         >>> print_requests.py //jobs //pipelines
        -POST /api/2.2/jobs/create a_job
        +POST /api/2.0/pipelines z_pipeline
         
        -=== Destroy deletes dependents first
        +=== Destroy deletes dependents firstWarning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
        +
         >>> [CLI] bundle destroy --auto-approve
        +Warning: unknown field: depends_on
        +  at resources.jobs.a_job.lifecycle
        +  in databricks.yml:10:9
        +
         The following resources will be deleted:
           delete resources.jobs.a_job
           delete resources.jobs.z_job
TestAccept/bundle/migrate/auto/depends-on/DMS=: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1311
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1081
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "\n=== Replay a prior terraform deployment\n>>> replay_tfstate.py terraform-requests.json terraform.tfstate\n\n=== Deploy migrates to direct and honors lifecycle.depends_on\n>>> [CLI] bundle deploy\nNotice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765).\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...\nMigrated 1 resource to direct deployment engine.\nCreated jobs.other_job\nFiles: 1 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 1 unchanged\n\n>>> print_migration_telemetry\ndirect_migrated_via_default true\n\n=== The edge is recorded in the plan\n>>> [CLI] bundle plan -o json\n{\n  \"resources.jobs.other_job\": [\n    {\n      \"node\": \"resources.jobs.test_job\",\n      \"label\": \"depends_on\"\n    }\n  ],\n  \"resources.jobs.test_job\": null\n}\n"
        	            	actual  : "\n=== Replay a prior terraform deployment\n>>> replay_tfstate.py terraform-requests.json terraform.tfstate\n\n=== Deploy migrates to direct and honors lifecycle.depends_on\n>>> [CLI] bundle deploy\nWarning: unknown field: depends_on\n  at resources.jobs.other_job.lifecycle\n  in databricks.yml:11:9\n\nNotice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765).\nUploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...\nMigrated 1 resource to direct deployment engine.\nCreated jobs.other_job\nFiles: 1 uploaded, 0 deleted\nResources: 1 created, 0 changed, 0 deleted, 1 unchanged\n\n>>> print_migration_telemetry\ndirect_migrated_via_default true\n\n=== The edge is recorded in the plan\n>>> [CLI] bundle plan -o json\nWarning: unknown field: depends_on\n  at resources.jobs.other_job.lifecycle\n  in databricks.yml:11:9\n\n{\n  \"resources.jobs.other_job\": null,\n  \"resources.jobs.test_job\": null\n}\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -6,2 +6,6 @@
        	            	 >>> [CLI] bundle deploy
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.jobs.other_job.lifecycle
        	            	+  in databricks.yml:11:9
        	            	+
        	            	 Notice: migrating your bundle to direct deployment engine (https://github.com/databricks/cli/issues/6765).
        	            	@@ -18,9 +22,8 @@
        	            	 >>> [CLI] bundle plan -o json
        	            	+Warning: unknown field: depends_on
        	            	+  at resources.jobs.other_job.lifecycle
        	            	+  in databricks.yml:11:9
        	            	+
        	            	 {
        	            	-  "resources.jobs.other_job": [
        	            	-    {
        	            	-      "node": "resources.jobs.test_job",
        	            	-      "label": "depends_on"
        	            	-    }
        	            	-  ],
        	            	+  "resources.jobs.other_job": null,
        	            	   "resources.jobs.test_job": null
        	Test:       	TestAccept/bundle/migrate/auto/depends-on/DMS=
        	Messages:   	bundle/migrate/auto/depends-on/output.txt vs /tmp/TestAcceptbundlemigrateautodepends-onDMS=2155783063/002/output.txt

latest (v1.22.1): same output as main (4d88efe)

TestAccept/bundle/migrate/command/grants/DMS=: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: Diff:
        --- bundle/migrate/command/grants/out.new_state.json
        +++ /tmp/TestAcceptbundlemigratecommandgrantsDMS=3463380829/001/out.new_state.json
        @@ -80,7 +80,7 @@
            "depends_on": [
             {
              "node": "resources.schemas.my_schema",
        -     "label": "depends_on"
        +     "label": "${resources.schemas.my_schema.name}"
             }
            ]
           },
        
    acceptance_test.go:1118: 
        LOG.requests_deploy.txt: "cli/1.23.0-dev databricks-sdk-go/0.190.0 go/1.27.3 os/linux cmd/bundle_deploy cmd-exec-id/0c94990e-63b4-4894-86fb-40c0c4fb3579 interactive/none engine/direct lineage/B7WAfp5eyKY auth/pat cicd/github"
        LOG.requests_deploy.txt: "cli/1.23.0-dev databricks-sdk-go/0.190.0 go/1.27.3 os/linux cmd/bundle_deploy cmd-exec-id/0c94990e-63b4-4894-86fb-40c0c4fb3579 interactive/none engine/direct lineage/B7WAfp5eyKY auth/pat cicd/github"
        LOG.requests_deploy.txt: "cli/1.23.0-dev databricks-sdk-go/0.190.0 go/1.27.3 os/linux cmd/bundle_deploy cmd-exec-id/0c94990e-63b4-4894-86fb-40c0c4fb3579 interactive/none engine/direct lineage/B7WAfp5eyKY auth/pat cicd/github"
FAIL

latest (v1.22.1):

acceptance_test.go:1311: Diff:
        --- bundle/migrate/command/grants/out.new_state.json
        +++ /tmp/TestAcceptbundlemigratecommandgrantsDMS=4005511317/001/out.new_state.json
        @@ -80,7 +80,7 @@
            "depends_on": [
             {
              "node": "resources.schemas.my_schema",
        -     "label": "depends_on"
        +     "label": "${resources.schemas.my_schema.name}"
             }
            ]
           },
        
    acceptance_test.go:1118: 
        LOG.requests_deploy.txt: "cli/1.22.1 databricks-sdk-go/0.189.0 go/1.27.3 os/linux cmd/bundle_deploy cmd-exec-id/330af7ef-2694-4a8b-9fe7-be7877ff9757 interactive/none engine/direct lineage/B7WAfp5eyKY auth/pat cicd/github"
        LOG.requests_deploy.txt: "cli/1.22.1 databricks-sdk-go/0.189.0 go/1.27.3 os/linux cmd/bundle_deploy cmd-exec-id/330af7ef-2694-4a8b-9fe7-be7877ff9757 interactive/none engine/direct lineage/B7WAfp5eyKY auth/pat cicd/github"
        LOG.requests_deploy.txt: "cli/1.22.1 databricks-sdk-go/0.189.0 go/1.27.3 os/linux cmd/bundle_deploy cmd-exec-id/330af7ef-2694-4a8b-9fe7-be7877ff9757 interactive/none engine/direct lineage/B7WAfp5eyKY auth/pat cicd/github"
TestAccept/bundle/refschema/DMS=: branch ✅ | main (4d88efe) ❌ | latest (v1.22.1) ❌

main (4d88efe):

acceptance_test.go:1311: Diff:
        --- bundle/refschema/out.fields.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=2617960891/001/out.fields.txt
        @@ -34,9 +34,6 @@
         resources.alerts.*.file_path	string	INPUT
         resources.alerts.*.id	string	ALL
         resources.alerts.*.lifecycle	resources.Lifecycle	INPUT
        -resources.alerts.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.alerts.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.alerts.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.alerts.*.lifecycle.prevent_destroy	bool	INPUT
         resources.alerts.*.lifecycle_state	sql.AlertLifecycleState	ALL
         resources.alerts.*.modified_status	string	INPUT
        @@ -158,9 +155,6 @@
         resources.apps.*.lifecycle	*dresources.StateLifecycle	REMOTE	STATE
         resources.apps.*.lifecycle	*resources.LifecycleWithStarted	INPUT
         resources.apps.*.lifecycle	resources.Lifecycle	INPUT
        -resources.apps.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.apps.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.apps.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.apps.*.lifecycle.prevent_destroy	bool	INPUT
         resources.apps.*.lifecycle.started	*bool	ALL
         resources.apps.*.modified_status	string	INPUT
        @@ -280,9 +274,6 @@
         resources.catalogs.*.id	string	INPUT
         resources.catalogs.*.isolation_mode	catalog.CatalogIsolationMode	REMOTE
         resources.catalogs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.catalogs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.catalogs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.catalogs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.catalogs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.catalogs.*.managed_encryption_settings	*catalog.EncryptionSettings	ALL
         resources.catalogs.*.managed_encryption_settings.azure_encryption_settings	*catalog.AzureEncryptionSettings	ALL
        @@ -340,9 +331,6 @@
         resources.cluster_policies.*.libraries[*].requirements	string	ALL
         resources.cluster_policies.*.libraries[*].whl	string	ALL
         resources.cluster_policies.*.lifecycle	resources.Lifecycle	INPUT
        -resources.cluster_policies.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.cluster_policies.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.cluster_policies.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.cluster_policies.*.lifecycle.prevent_destroy	bool	INPUT
         resources.cluster_policies.*.max_clusters_per_user	int64	ALL
         resources.cluster_policies.*.modified_status	string	INPUT
        @@ -500,9 +488,6 @@
         resources.clusters.*.lifecycle	*dresources.StateLifecycle	REMOTE	STATE
         resources.clusters.*.lifecycle	*resources.LifecycleWithStarted	INPUT
         resources.clusters.*.lifecycle	resources.Lifecycle	INPUT
        -resources.clusters.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.clusters.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.clusters.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.clusters.*.lifecycle.prevent_destroy	bool	INPUT
         resources.clusters.*.lifecycle.started	*bool	ALL
         resources.clusters.*.modified_status	string	INPUT
        @@ -669,9 +654,6 @@
         resources.dashboards.*.file_path	string	INPUT
         resources.dashboards.*.id	string	INPUT
         resources.dashboards.*.lifecycle	resources.Lifecycle	INPUT
        -resources.dashboards.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.dashboards.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.dashboards.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.dashboards.*.lifecycle.prevent_destroy	bool	INPUT
         resources.dashboards.*.lifecycle_state	dashboards.LifecycleState	ALL
         resources.dashboards.*.modified_status	string	INPUT
        @@ -693,9 +675,6 @@
         resources.database_catalogs.*.database_name	string	ALL
         resources.database_catalogs.*.id	string	INPUT
         resources.database_catalogs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.database_catalogs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.database_catalogs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.database_catalogs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.database_catalogs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.database_catalogs.*.modified_status	string	INPUT
         resources.database_catalogs.*.name	string	ALL
        @@ -730,9 +709,6 @@
         resources.database_instances.*.enable_readable_secondaries	bool	ALL
         resources.database_instances.*.id	string	INPUT
         resources.database_instances.*.lifecycle	resources.Lifecycle	INPUT
        -resources.database_instances.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.database_instances.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.database_instances.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.database_instances.*.lifecycle.prevent_destroy	bool	INPUT
         resources.database_instances.*.modified_status	string	INPUT
         resources.database_instances.*.name	string	ALL
        @@ -764,9 +740,6 @@
         resources.experiments.*.id	string	INPUT
         resources.experiments.*.last_update_time	int64	REMOTE
         resources.experiments.*.lifecycle	resources.Lifecycle	INPUT
        -resources.experiments.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.experiments.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.experiments.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.experiments.*.lifecycle.prevent_destroy	bool	INPUT
         resources.experiments.*.lifecycle_stage	string	REMOTE
         resources.experiments.*.modified_status	string	INPUT
        @@ -850,9 +823,6 @@
         resources.external_locations.*.id	string	INPUT
         resources.external_locations.*.isolation_mode	catalog.IsolationMode	REMOTE
         resources.external_locations.*.lifecycle	resources.Lifecycle	INPUT
        -resources.external_locations.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.external_locations.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.external_locations.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.external_locations.*.lifecycle.prevent_destroy	bool	INPUT
         resources.external_locations.*.metastore_id	string	REMOTE
         resources.external_locations.*.modified_status	string	INPUT
        @@ -958,9 +928,6 @@
         resources.features.*.inputs	[]string	ALL
         resources.features.*.inputs[*]	string	ALL
         resources.features.*.lifecycle	resources.Lifecycle	INPUT
        -resources.features.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.features.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.features.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.features.*.lifecycle.prevent_destroy	bool	INPUT
         resources.features.*.lineage_context	*ml.LineageContext	ALL
         resources.features.*.lineage_context.job_context	*ml.JobContext	ALL
        @@ -1042,9 +1009,6 @@
         resources.genie_spaces.*.file_path	string	INPUT
         resources.genie_spaces.*.id	string	INPUT
         resources.genie_spaces.*.lifecycle	resources.Lifecycle	INPUT
        -resources.genie_spaces.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.genie_spaces.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.genie_spaces.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.genie_spaces.*.lifecycle.prevent_destroy	bool	INPUT
         resources.genie_spaces.*.modified_status	string	INPUT
         resources.genie_spaces.*.parent_path	string	ALL
        @@ -1089,9 +1053,6 @@
         resources.instance_pools.*.instance_pool_id	string	REMOTE
         resources.instance_pools.*.instance_pool_name	string	ALL
         resources.instance_pools.*.lifecycle	resources.Lifecycle	INPUT
        -resources.instance_pools.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.instance_pools.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.instance_pools.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.instance_pools.*.lifecycle.prevent_destroy	bool	INPUT
         resources.instance_pools.*.max_capacity	int	ALL
         resources.instance_pools.*.min_idle_instances	int	ALL
        @@ -1153,9 +1114,6 @@
         resources.job_runs.*.lifecycle	*dresources.JobRunLifecycleState	STATE
         resources.job_runs.*.lifecycle	*resources.JobRunLifecycle	INPUT
         resources.job_runs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.job_runs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.job_runs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.job_runs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.job_runs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.job_runs.*.lifecycle.triggers	[]resources.JobRunTrigger	INPUT
         resources.job_runs.*.lifecycle.triggers[*]	resources.JobRunTrigger	INPUT
        @@ -1402,9 +1360,6 @@
         resources.jobs.*.job_clusters[*].serverless_compute_id	string	ALL
         resources.jobs.*.job_id	int64	REMOTE
         resources.jobs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.jobs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.jobs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.jobs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.jobs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.jobs.*.max_concurrent_runs	int	ALL
         resources.jobs.*.modified_status	string	INPUT
        @@ -2405,9 +2360,6 @@
         resources.mcp_services.*.config.source_connection.options.*	string	ALL
         resources.mcp_services.*.id	string	INPUT
         resources.mcp_services.*.lifecycle	resources.Lifecycle	INPUT
        -resources.mcp_services.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.mcp_services.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.mcp_services.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.mcp_services.*.lifecycle.prevent_destroy	bool	INPUT
         resources.mcp_services.*.mcp_service_id	string	ALL
         resources.mcp_services.*.modified_status	string	INPUT
        @@ -2540,9 +2492,6 @@
         resources.model_provider_services.*.config.targets[*].native_api_types[*]	string	ALL
         resources.model_provider_services.*.id	string	INPUT
         resources.model_provider_services.*.lifecycle	resources.Lifecycle	INPUT
        -resources.model_provider_services.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.model_provider_services.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.model_provider_services.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.model_provider_services.*.lifecycle.prevent_destroy	bool	INPUT
         resources.model_provider_services.*.model_provider_service_id	string	ALL
         resources.model_provider_services.*.modified_status	string	INPUT
        @@ -2608,9 +2557,6 @@
         resources.model_services.*.config.routing.fallback.destinations[*].traffic_percentage	int	ALL
         resources.model_services.*.id	string	INPUT
         resources.model_services.*.lifecycle	resources.Lifecycle	INPUT
        -resources.model_services.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.model_services.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.model_services.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.model_services.*.lifecycle.prevent_destroy	bool	INPUT
         resources.model_services.*.model_service_id	string	ALL
         resources.model_services.*.modified_status	string	INPUT
        @@ -3085,9 +3031,6 @@
         resources.model_serving_endpoints.*.endpoint_id	string	REMOTE
         resources.model_serving_endpoints.*.id	string	INPUT
         resources.model_serving_endpoints.*.lifecycle	resources.Lifecycle	INPUT
        -resources.model_serving_endpoints.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.model_serving_endpoints.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.model_serving_endpoints.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.model_serving_endpoints.*.lifecycle.prevent_destroy	bool	INPUT
         resources.model_serving_endpoints.*.modified_status	string	INPUT
         resources.model_serving_endpoints.*.name	string	ALL
        @@ -3143,9 +3086,6 @@
         resources.models.*.latest_versions[*].user_id	string	REMOTE
         resources.models.*.latest_versions[*].version	string	REMOTE
         resources.models.*.lifecycle	resources.Lifecycle	INPUT
        -resources.models.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.models.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.models.*.lifecycle.depends_on[*].resource	string	INPUT
... (193 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.22.1):

acceptance_test.go:1311: Diff:
        --- bundle/refschema/out.fields.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=1685969160/001/out.fields.txt
        @@ -34,9 +34,6 @@
         resources.alerts.*.file_path	string	INPUT
         resources.alerts.*.id	string	ALL
         resources.alerts.*.lifecycle	resources.Lifecycle	INPUT
        -resources.alerts.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.alerts.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.alerts.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.alerts.*.lifecycle.prevent_destroy	bool	INPUT
         resources.alerts.*.lifecycle_state	sql.AlertLifecycleState	ALL
         resources.alerts.*.modified_status	string	INPUT
        @@ -158,9 +155,6 @@
         resources.apps.*.lifecycle	*dresources.StateLifecycle	REMOTE	STATE
         resources.apps.*.lifecycle	*resources.LifecycleWithStarted	INPUT
         resources.apps.*.lifecycle	resources.Lifecycle	INPUT
        -resources.apps.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.apps.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.apps.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.apps.*.lifecycle.prevent_destroy	bool	INPUT
         resources.apps.*.lifecycle.started	*bool	ALL
         resources.apps.*.modified_status	string	INPUT
        @@ -280,9 +274,6 @@
         resources.catalogs.*.id	string	INPUT
         resources.catalogs.*.isolation_mode	catalog.CatalogIsolationMode	REMOTE
         resources.catalogs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.catalogs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.catalogs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.catalogs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.catalogs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.catalogs.*.managed_encryption_settings	*catalog.EncryptionSettings	ALL
         resources.catalogs.*.managed_encryption_settings.azure_encryption_settings	*catalog.AzureEncryptionSettings	ALL
        @@ -340,9 +331,6 @@
         resources.cluster_policies.*.libraries[*].requirements	string	ALL
         resources.cluster_policies.*.libraries[*].whl	string	ALL
         resources.cluster_policies.*.lifecycle	resources.Lifecycle	INPUT
        -resources.cluster_policies.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.cluster_policies.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.cluster_policies.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.cluster_policies.*.lifecycle.prevent_destroy	bool	INPUT
         resources.cluster_policies.*.max_clusters_per_user	int64	ALL
         resources.cluster_policies.*.modified_status	string	INPUT
        @@ -500,9 +488,6 @@
         resources.clusters.*.lifecycle	*dresources.StateLifecycle	REMOTE	STATE
         resources.clusters.*.lifecycle	*resources.LifecycleWithStarted	INPUT
         resources.clusters.*.lifecycle	resources.Lifecycle	INPUT
        -resources.clusters.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.clusters.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.clusters.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.clusters.*.lifecycle.prevent_destroy	bool	INPUT
         resources.clusters.*.lifecycle.started	*bool	ALL
         resources.clusters.*.modified_status	string	INPUT
        @@ -669,9 +654,6 @@
         resources.dashboards.*.file_path	string	INPUT
         resources.dashboards.*.id	string	INPUT
         resources.dashboards.*.lifecycle	resources.Lifecycle	INPUT
        -resources.dashboards.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.dashboards.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.dashboards.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.dashboards.*.lifecycle.prevent_destroy	bool	INPUT
         resources.dashboards.*.lifecycle_state	dashboards.LifecycleState	ALL
         resources.dashboards.*.modified_status	string	INPUT
        @@ -693,9 +675,6 @@
         resources.database_catalogs.*.database_name	string	ALL
         resources.database_catalogs.*.id	string	INPUT
         resources.database_catalogs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.database_catalogs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.database_catalogs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.database_catalogs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.database_catalogs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.database_catalogs.*.modified_status	string	INPUT
         resources.database_catalogs.*.name	string	ALL
        @@ -730,9 +709,6 @@
         resources.database_instances.*.enable_readable_secondaries	bool	ALL
         resources.database_instances.*.id	string	INPUT
         resources.database_instances.*.lifecycle	resources.Lifecycle	INPUT
        -resources.database_instances.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.database_instances.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.database_instances.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.database_instances.*.lifecycle.prevent_destroy	bool	INPUT
         resources.database_instances.*.modified_status	string	INPUT
         resources.database_instances.*.name	string	ALL
        @@ -764,9 +740,6 @@
         resources.experiments.*.id	string	INPUT
         resources.experiments.*.last_update_time	int64	REMOTE
         resources.experiments.*.lifecycle	resources.Lifecycle	INPUT
        -resources.experiments.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.experiments.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.experiments.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.experiments.*.lifecycle.prevent_destroy	bool	INPUT
         resources.experiments.*.lifecycle_stage	string	REMOTE
         resources.experiments.*.modified_status	string	INPUT
        @@ -850,9 +823,6 @@
         resources.external_locations.*.id	string	INPUT
         resources.external_locations.*.isolation_mode	catalog.IsolationMode	REMOTE
         resources.external_locations.*.lifecycle	resources.Lifecycle	INPUT
        -resources.external_locations.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.external_locations.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.external_locations.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.external_locations.*.lifecycle.prevent_destroy	bool	INPUT
         resources.external_locations.*.metastore_id	string	REMOTE
         resources.external_locations.*.modified_status	string	INPUT
        @@ -958,9 +928,6 @@
         resources.features.*.inputs	[]string	ALL
         resources.features.*.inputs[*]	string	ALL
         resources.features.*.lifecycle	resources.Lifecycle	INPUT
        -resources.features.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.features.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.features.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.features.*.lifecycle.prevent_destroy	bool	INPUT
         resources.features.*.lineage_context	*ml.LineageContext	ALL
         resources.features.*.lineage_context.job_context	*ml.JobContext	ALL
        @@ -1000,15 +967,6 @@
         resources.features.*.source.request_source.flat_schema.fields[*]	ml.FieldDefinition	ALL
         resources.features.*.source.request_source.flat_schema.fields[*].data_type	ml.ScalarDataType	ALL
         resources.features.*.source.request_source.flat_schema.fields[*].name	string	ALL
        -resources.features.*.source.sdp_source	*ml.SdpSource	ALL
        -resources.features.*.source.sdp_source.dataframe_schema	string	ALL
        -resources.features.*.source.sdp_source.filter_condition	string	ALL
        -resources.features.*.source.sdp_source.input_tables	[]string	ALL
        -resources.features.*.source.sdp_source.input_tables[*]	string	ALL
        -resources.features.*.source.sdp_source.output_table	string	ALL
        -resources.features.*.source.sdp_source.pipeline_id	string	ALL
        -resources.features.*.source.sdp_source.pipeline_state	ml.SdpSourceState	ALL
        -resources.features.*.source.sdp_source.transformation_sql	string	ALL
         resources.features.*.source.stream_source	*ml.StreamSource	ALL
         resources.features.*.source.stream_source.dataframe_schema	string	ALL
         resources.features.*.source.stream_source.filter_condition	string	ALL
        @@ -1042,9 +1000,6 @@
         resources.genie_spaces.*.file_path	string	INPUT
         resources.genie_spaces.*.id	string	INPUT
         resources.genie_spaces.*.lifecycle	resources.Lifecycle	INPUT
        -resources.genie_spaces.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.genie_spaces.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.genie_spaces.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.genie_spaces.*.lifecycle.prevent_destroy	bool	INPUT
         resources.genie_spaces.*.modified_status	string	INPUT
         resources.genie_spaces.*.parent_path	string	ALL
        @@ -1089,9 +1044,6 @@
         resources.instance_pools.*.instance_pool_id	string	REMOTE
         resources.instance_pools.*.instance_pool_name	string	ALL
         resources.instance_pools.*.lifecycle	resources.Lifecycle	INPUT
        -resources.instance_pools.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.instance_pools.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.instance_pools.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.instance_pools.*.lifecycle.prevent_destroy	bool	INPUT
         resources.instance_pools.*.max_capacity	int	ALL
         resources.instance_pools.*.min_idle_instances	int	ALL
        @@ -1153,9 +1105,6 @@
         resources.job_runs.*.lifecycle	*dresources.JobRunLifecycleState	STATE
         resources.job_runs.*.lifecycle	*resources.JobRunLifecycle	INPUT
         resources.job_runs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.job_runs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.job_runs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.job_runs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.job_runs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.job_runs.*.lifecycle.triggers	[]resources.JobRunTrigger	INPUT
         resources.job_runs.*.lifecycle.triggers[*]	resources.JobRunTrigger	INPUT
        @@ -1402,9 +1351,6 @@
         resources.jobs.*.job_clusters[*].serverless_compute_id	string	ALL
         resources.jobs.*.job_id	int64	REMOTE
         resources.jobs.*.lifecycle	resources.Lifecycle	INPUT
        -resources.jobs.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.jobs.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.jobs.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.jobs.*.lifecycle.prevent_destroy	bool	INPUT
         resources.jobs.*.max_concurrent_runs	int	ALL
         resources.jobs.*.modified_status	string	INPUT
        @@ -2405,9 +2351,6 @@
         resources.mcp_services.*.config.source_connection.options.*	string	ALL
         resources.mcp_services.*.id	string	INPUT
         resources.mcp_services.*.lifecycle	resources.Lifecycle	INPUT
        -resources.mcp_services.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.mcp_services.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.mcp_services.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.mcp_services.*.lifecycle.prevent_destroy	bool	INPUT
         resources.mcp_services.*.mcp_service_id	string	ALL
         resources.mcp_services.*.modified_status	string	INPUT
        @@ -2540,9 +2483,6 @@
         resources.model_provider_services.*.config.targets[*].native_api_types[*]	string	ALL
         resources.model_provider_services.*.id	string	INPUT
         resources.model_provider_services.*.lifecycle	resources.Lifecycle	INPUT
        -resources.model_provider_services.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.model_provider_services.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.model_provider_services.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.model_provider_services.*.lifecycle.prevent_destroy	bool	INPUT
         resources.model_provider_services.*.model_provider_service_id	string	ALL
         resources.model_provider_services.*.modified_status	string	INPUT
        @@ -2608,9 +2548,6 @@
         resources.model_services.*.config.routing.fallback.destinations[*].traffic_percentage	int	ALL
         resources.model_services.*.id	string	INPUT
         resources.model_services.*.lifecycle	resources.Lifecycle	INPUT
        -resources.model_services.*.lifecycle.depends_on	[]resources.DependsOn	INPUT
        -resources.model_services.*.lifecycle.depends_on[*]	resources.DependsOn	INPUT
        -resources.model_services.*.lifecycle.depends_on[*].resource	string	INPUT
         resources.model_services.*.lifecycle.prevent_destroy	bool	INPUT
         resources.model_services.*.model_service_id	string	ALL
         resources.model_services.*.modified_status	string	INPUT
        @@ -3085,9 +3022,6 @@
... (228 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

21 more failure details omitted, see the full report in the run.

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: a0662b8

Run: 40311973152

Env ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 290 27 10:55
✅​ aws-windows-latest-4core-16gb 292 25 4:47
✅​ azure linux-2core-8gb 286 28 7:51
✅​ azure-windows-latest-4core-16gb 288 26 6:11
✅​ gcp linux-2core-8gb 287 28 8:52
✅​ gcp-windows-latest-4core-16gb 289 26 7:34
Top 10 slowest tests (at least 2 minutes):
duration env testname
4:00 azure-windows-latest-4core-16gb TestAccept
3:58 aws linux-2core-8gb TestTelemetryEndpoint
3:55 azure linux-2core-8gb TestAccept
3:48 gcp-windows-latest-4core-16gb TestAccept
3:45 gcp linux-2core-8gb TestAccept
3:38 aws linux-2core-8gb TestAccept
3:38 aws-windows-latest-4core-16gb TestAccept
2:29 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/grants/volumes/DMS=true
2:04 azure-windows-latest-4core-16gb TestAccept/bundle/resources/grants/volumes/DMS=true
2:02 gcp-windows-latest-4core-16gb TestSyncNestedFolderDoesntFailOnNonEmptyDirectory

@denik
denik force-pushed the capture-uc-depends-on branch 2 times, most recently from 9b84e22 to 7092af3 Compare October 26, 2026 10:11
denik and others added 3 commits October 26, 2026 11:55
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
denik and others added 2 commits October 26, 2026 11:59
Dependents keep the literal schema name, and ApplyPresets prefixes it
together with the schema instead of relying on an injected reference.

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
@denik
denik force-pushed the capture-uc-depends-on branch from 7092af3 to a0662b8 Compare October 26, 2026 11:01
Base automatically changed from denik/depends-on to main October 26, 2026 11:11
denik added a commit that referenced this pull request Oct 26, 2026
## Changes
Add `lifecycle.depends_on`, a list of `- resource: <key>` entries (`foo`
or `jobs.foo`) that orders a resource after the listed ones on deploy
and before them on destroy. Edges are saved in state like
reference-derived ones, including by `bundle migrate`. A target that is
skipped from the plan is ignored.

Uses `Resources.ResolveKey` from
#7128. Used by
#7132 to replace the references
injected for implicit schema/catalog dependencies.

## Tests
Acceptance tests for ordering, validation errors, and a config with
`depends_on` migrating from Terraform.

This pull request and its description were written by Isaac.

---------

Co-authored-by: Isaac <no-reply@databricks.com>

This branch has not been deployed

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

Labels

DABs DABs related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants