Skip to content

bundle: load, include and merge the configuration on structs; delete libs/dyn - #7374

Draft
denik wants to merge 4 commits into
denik/structinfo-walkersfrom
denik/struct-only-load
Draft

denik wants to merge 4 commits into
denik/structinfo-walkersfrom
denik/struct-only-load

Conversation

@denik

@denik denik commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Changes

Files decode straight into the typed configuration, includes and targets merge with structvar.Merge, and the load-phase mutators edit the structs. Nothing converts between a dynamic tree and the structs anymore, so libs/dyn is deleted. A target variable written as a value (x: 1) is rewritten to {default: 1} on the YAML before decoding; YAML errors (merge keys, key tags) are reported before that, as before.

Three diagnostics differ, as the comments of their tests say they should: a targets section that is not a map is a warning, resources: null is accepted, and includes after one that fails to merge still report their diagnostics. Their goldens are updated.

Why

It is the alternative to #7203: instead of trimming libs/dyn to what loading needs, loading does not use it. It removes the second representation of the configuration, 16k lines, and the load and merge code that existed twice.

Same speed as #7098 (bundle validate of 1000 jobs: 0.50 s, 11.4 s on main), 186 MB peak memory against 196 MB, and a binary 5 MB smaller than #7098 (+0.15 MB over main).

Stacked on #7373.

Tests

Before libs/dyn was removed, a test merged every pair of YAML files in the same acceptance directory with the dynamic and the typed merge: 1317 pairs gave the same result, the only difference being the target variable shorthand above. TestAccept passes except for the three updated goldens.

This pull request and its description were written by Isaac.

denik and others added 4 commits November 5, 2026 09:09
…oad path

Takes the struct-only load path of the baseline before the hybrid: files decode straight
into the typed configuration with structvar, includes and targets merge with structvar.Merge,
and the load-phase mutators edit the structs. libs/dyn is unused by anything but structvar's
decode_dyn.go.

Co-authored-by: Isaac <no-reply@databricks.com>
The shorthand rewrite of a target's variables follows aliases and merge keys without
changing shared nodes. The YAML is validated first, including values a later duplicate
key shadows, so merge-key and key-tag errors are reported as before.

Co-authored-by: Isaac <no-reply@databricks.com>
A scalar targets section is a warning, resources: null is accepted, and includes after
one that fails to merge still report their diagnostics, as the comments of the tests say.

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

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Commit: 071aaa3b0 | Workflow run

Regression test report

Selected 20 changed tests (limit=20, 1 not selected)

42 tests: regression=28 unreleased=2 coverage=12 failing=0

test branch main (3aa5c96) latest (v1.24.0)
TestAccept/bundle/python/pipeline-development-deprecated/DMS=/PYDAB_VERSION=0.266.0 ✅ ❌ ❌
TestAccept/bundle/python/pipeline-development-deprecated/DMS=/PYDAB_VERSION=current ✅ ❌ ❌
TestAccept/bundle/python/pipeline-development-deprecated/DMS=true/PYDAB_VERSION=0.266.0 ✅ ❌ ❌
TestAccept/bundle/python/pipeline-development-deprecated/DMS=true/PYDAB_VERSION=current ✅ ❌ ❌
TestAccept/bundle/refschema/DMS= ✅ ❌ ❌
TestAccept/bundle/refschema/DMS=true ✅ ❌ ❌
TestAccept/bundle/strict_profile_match/default_profile/host/DMS= ✅ ❌ ❌
TestAccept/bundle/strict_profile_match/default_profile/host/DMS=true ✅ ❌ ❌
TestAccept/bundle/strict_profile_match/host/DMS= ✅ ❌ ❌
TestAccept/bundle/strict_profile_match/host/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/app_resource_duplicate_name_location/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/app_resource_duplicate_name_location/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/includes/merge_failure_short_circuits_diagnostics/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/includes/merge_failure_short_circuits_diagnostics/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/nulls/resources_container/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/nulls/resources_container/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/references/resolved_invalid_map_value/DMS= ✅ ✅ ✅
TestAccept/bundle/validate/references/resolved_invalid_map_value/DMS=true ✅ ✅ ✅
TestAccept/bundle/validate/references/resolved_invalid_sequence_item/DMS= ✅ ✅ ✅
TestAccept/bundle/validate/references/resolved_invalid_sequence_item/DMS=true ✅ ✅ ✅
TestAccept/bundle/validate/references/resolved_invalid_sequence_items/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/references/resolved_invalid_sequence_items/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/references/to_omitted_struct_defaults/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/references/to_omitted_struct_defaults/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/required/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/required/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/targets/scalar_rewrite_diagnostic/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/targets/scalar_rewrite_diagnostic/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/variables/complex_default_nested_timestamp/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/variables/complex_default_nested_timestamp/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/variables/complex_unknown_field_location/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/variables/complex_unknown_field_location/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/variables/target_timestamp_shorthand/DMS= ✅ ✅ ✅
TestAccept/bundle/validate/variables/target_timestamp_shorthand/DMS=true ✅ ✅ ✅
TestAccept/bundle/validate/yaml_anchors/duplicate_merge_keys/DMS= ✅ ✅ ✅
TestAccept/bundle/validate/yaml_anchors/duplicate_merge_keys/DMS=true ✅ ✅ ✅
TestAccept/bundle/validate/yaml_anchors/inline_merge_mapping/DMS= ✅ ✅ ❌
TestAccept/bundle/validate/yaml_anchors/inline_merge_mapping/DMS=true ✅ ✅ ❌
TestAccept/bundle/validate/yaml_anchors/invalid_merge_sequence_member/DMS= ✅ ✅ ✅
TestAccept/bundle/validate/yaml_anchors/invalid_merge_sequence_member/DMS=true ✅ ✅ ✅
TestAccept/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/DMS= ✅ ✅ ✅
TestAccept/bundle/validate/yaml_duplicate_keys/shadowed_invalid_subtree/DMS=true ✅ ✅ ✅
TestAccept/bundle/python/pipeline-development-deprecated/DMS=/PYDAB_VERSION=0.266.0: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1341
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1082
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nValidation OK!\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	actual  : "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nFound 1 warning\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -2,2 +2,6 @@
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 Name: my_project
        	            	@@ -8,5 +12,9 @@
        	            	 
        	            	-Validation OK!
        	            	+Found 1 warning
        	            	 
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate --output json
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 {
        	Test:       	TestAccept/bundle/python/pipeline-development-deprecated/DMS=/PYDAB_VERSION=0.266.0
        	Messages:   	bundle/python/pipeline-development-deprecated/output.txt vs /tmp/TestAcceptbundlepythonpipeline-development-deprecatedDMS=PY2091863137/002/output.txt

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/python/pipeline-development-deprecated/DMS=/PYDAB_VERSION=current: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1341
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1082
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nValidation OK!\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	actual  : "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nFound 1 warning\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -2,2 +2,6 @@
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 Name: my_project
        	            	@@ -8,5 +12,9 @@
        	            	 
        	            	-Validation OK!
        	            	+Found 1 warning
        	            	 
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate --output json
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 {
        	Test:       	TestAccept/bundle/python/pipeline-development-deprecated/DMS=/PYDAB_VERSION=current
        	Messages:   	bundle/python/pipeline-development-deprecated/output.txt vs /tmp/TestAcceptbundlepythonpipeline-development-deprecatedDMS=PY2375392889/002/output.txt

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/python/pipeline-development-deprecated/DMS=true/PYDAB_VERSION=0.266.0: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1341
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1082
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nValidation OK!\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	actual  : "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nFound 1 warning\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -2,2 +2,6 @@
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 Name: my_project
        	            	@@ -8,5 +12,9 @@
        	            	 
        	            	-Validation OK!
        	            	+Found 1 warning
        	            	 
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate --output json
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 {
        	Test:       	TestAccept/bundle/python/pipeline-development-deprecated/DMS=true/PYDAB_VERSION=0.266.0
        	Messages:   	bundle/python/pipeline-development-deprecated/output.txt vs /tmp/TestAcceptbundlepythonpipeline-development-deprecatedDMS=tru262300359/002/output.txt

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/python/pipeline-development-deprecated/DMS=true/PYDAB_VERSION=current: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1341
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1082
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nValidation OK!\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	actual  : "\n>>> uv run [UV_ARGS] -q [CLI] bundle validate\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\nName: my_project\nTarget: dev\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/my_project/dev\n\nFound 1 warning\n\n>>> uv run [UV_ARGS] -q [CLI] bundle validate --output json\nWarning: The \"development\" property of pipelines is deprecated. Use \"mode: development\" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.\n  at resources.pipelines.with_development.development\n  in resources.py:7:1\n\n{\n  \"with_development\": true,\n  \"without_development\": true\n}\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -2,2 +2,6 @@
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 Name: my_project
        	            	@@ -8,5 +12,9 @@
        	            	 
        	            	-Validation OK!
        	            	+Found 1 warning
        	            	 
        	            	 >>> uv run [UV_ARGS] -q [CLI] bundle validate --output json
        	            	+Warning: The "development" property of pipelines is deprecated. Use "mode: development" in your databricks.yml instead. See https://docs.databricks.com/dev-tools/bundles/deployment-modes.
        	            	+  at resources.pipelines.with_development.development
        	            	+  in resources.py:7:1
        	            	+
        	            	 {
        	Test:       	TestAccept/bundle/python/pipeline-development-deprecated/DMS=true/PYDAB_VERSION=current
        	Messages:   	bundle/python/pipeline-development-deprecated/output.txt vs /tmp/TestAcceptbundlepythonpipeline-development-deprecatedDMS=tru277647996/002/output.txt

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/refschema/DMS=: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=3474549989/001/output/root.txt
        @@ -1,4 +1,4 @@
        -__locations	*loctable.Locations	INPUT
        +__locations	*dynloc.Locations	INPUT
         __locations.files	[]string	INPUT
         __locations.files[*]	string	INPUT
         __locations.locations	map[string][][]int	INPUT

latest (v1.24.0):

acceptance_test.go:1341: Diff:
        --- bundle/refschema/output/jobs.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=2186793210/001/output/jobs.txt
        @@ -193,6 +193,8 @@
         resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients	compute.ClientsTypes	ALL
         resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.jobs	bool	ALL
         resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.notebooks	bool	ALL
        +resources.jobs.*.job_clusters[*].serverless_compute	*jobs.JobClusterServerlessCompute	ALL
        +resources.jobs.*.job_clusters[*].serverless_compute.policy_id	string	ALL
         resources.jobs.*.job_clusters[*].serverless_compute_id	string	ALL
         resources.jobs.*.job_id	int64	REMOTE
         resources.jobs.*.lifecycle	resources.Lifecycle	INPUT
        @@ -231,6 +233,42 @@
         resources.jobs.*.tags.*	string	ALL
         resources.jobs.*.tasks	[]jobs.Task	ALL
         resources.jobs.*.tasks[*]	jobs.Task	ALL
        +resources.jobs.*.tasks[*].ai_function_task	*jobs.AiFunctionTask	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify	*jobs.AiClassifyFunction	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.enable_rationales	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels	*jobs.AiClassifyFunctionInlineLabels	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels	[]jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*]	jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*].description	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*].name	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.instructions	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.multilabel	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.version	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract	*jobs.AiExtractFunction	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.enable_citations	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.instructions	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.mode	jobs.AiExtractFunctionMode	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.schema	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.version	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document	*jobs.AiParseDocumentFunction	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types	[]jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types[*]	jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.image_output_path	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.page_range	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.version	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table	*jobs.DeltaTableSource	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.input_column	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.merge_key_columns	[]string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.merge_key_columns[*]	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.table_name	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output	jobs.QualifiedName	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output.catalog	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output.schema	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output.table	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.volume	*jobs.VolumeSource	ALL
        +resources.jobs.*.tasks[*].ai_function_task.volume.volume_path	string	ALL
         resources.jobs.*.tasks[*].ai_runtime_task	*jobs.AiRuntimeTask	ALL
         resources.jobs.*.tasks[*].ai_runtime_task.code_source_path	string	ALL
         resources.jobs.*.tasks[*].ai_runtime_task.deployments	[]jobs.DeploymentSpec	ALL
        @@ -339,6 +377,42 @@
         resources.jobs.*.tasks[*].for_each_task.concurrency	int	ALL
         resources.jobs.*.tasks[*].for_each_task.inputs	string	ALL
         resources.jobs.*.tasks[*].for_each_task.task	jobs.Task	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task	*jobs.AiFunctionTask	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify	*jobs.AiClassifyFunction	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.enable_rationales	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels	*jobs.AiClassifyFunctionInlineLabels	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels	[]jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*]	jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*].description	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*].name	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.instructions	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.multilabel	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.version	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract	*jobs.AiExtractFunction	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.enable_citations	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.instructions	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.mode	jobs.AiExtractFunctionMode	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.schema	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.version	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document	*jobs.AiParseDocumentFunction	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types	[]jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types[*]	jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.image_output_path	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.page_range	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.version	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table	*jobs.DeltaTableSource	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.input_column	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.merge_key_columns	[]string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.merge_key_columns[*]	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.table_name	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output	jobs.QualifiedName	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.catalog	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.schema	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.table	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume	*jobs.VolumeSource	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume.volume_path	string	ALL
         resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task	*jobs.AiRuntimeTask	ALL
         resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.code_source_path	string	ALL
         resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments	[]jobs.DeploymentSpec	ALL
        @@ -1043,6 +1117,12 @@
         resources.jobs.*.trigger.file_arrival.min_time_between_triggers_seconds	int	ALL
         resources.jobs.*.trigger.file_arrival.url	string	ALL
         resources.jobs.*.trigger.file_arrival.wait_after_last_change_seconds	int	ALL
        +resources.jobs.*.trigger.job_completion	*jobs.JobCompletionTriggerConfiguration	ALL
        +resources.jobs.*.trigger.job_completion.if_status	jobs.JobCompletionTriggerConfigurationIfStatus	ALL
        +resources.jobs.*.trigger.job_completion.jobs	[]jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.trigger.job_completion.jobs[*]	jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.trigger.job_completion.jobs[*].job_id	string	ALL
        +resources.jobs.*.trigger.job_completion.jobs[*].workspace_id	string	ALL
         resources.jobs.*.trigger.model	*jobs.ModelTriggerConfiguration	ALL
         resources.jobs.*.trigger.model.aliases	[]string	ALL
         resources.jobs.*.trigger.model.aliases[*]	string	ALL
        @@ -1086,6 +1166,17 @@
         resources.jobs.*.trigger_details[*].state.continuous.next_attempt_ms	int64	REMOTE
         resources.jobs.*.trigger_details[*].state.file_arrival	*jobs.FileArrivalTriggerState	REMOTE
         resources.jobs.*.trigger_details[*].state.file_arrival.using_file_events	bool	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion	*jobs.JobCompletionTriggerState	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states	[]jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*]	jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].has_seen_completion	bool	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].is_deleted	bool	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].job_id	string	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_completion_time	*time.Time	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_run_id	string	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].latest_non_matching_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].workspace_id	string	REMOTE
         resources.jobs.*.trigger_details[*].state.model	*jobs.ModelTriggerState	REMOTE
         resources.jobs.*.trigger_details[*].state.pause_status	jobs.PauseStatus	REMOTE
         resources.jobs.*.trigger_details[*].state.periodic	*jobs.PeriodicTriggerState	REMOTE
        @@ -1104,6 +1195,17 @@
         resources.jobs.*.trigger_state	*jobs.TriggerStateProto	REMOTE
         resources.jobs.*.trigger_state.file_arrival	*jobs.FileArrivalTriggerState	REMOTE
         resources.jobs.*.trigger_state.file_arrival.using_file_events	bool	REMOTE
        +resources.jobs.*.trigger_state.job_completion	*jobs.JobCompletionTriggerState	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states	[]jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*]	jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].has_seen_completion	bool	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].is_deleted	bool	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].job_id	string	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_completion_time	*time.Time	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_run_id	string	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].latest_non_matching_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].workspace_id	string	REMOTE
         resources.jobs.*.trigger_state.pause_status	jobs.PauseStatus	REMOTE
         resources.jobs.*.trigger_state.sql_condition	*jobs.SqlConditionState	REMOTE
         resources.jobs.*.trigger_state.sql_condition.latest_condition_evaluation_satisfied	bool	REMOTE
        @@ -1127,6 +1229,12 @@
         resources.jobs.*.triggers[*].file_arrival.min_time_between_triggers_seconds	int	ALL
         resources.jobs.*.triggers[*].file_arrival.url	string	ALL
         resources.jobs.*.triggers[*].file_arrival.wait_after_last_change_seconds	int	ALL
        +resources.jobs.*.triggers[*].job_completion	*jobs.JobCompletionTriggerConfiguration	ALL
        +resources.jobs.*.triggers[*].job_completion.if_status	jobs.JobCompletionTriggerConfigurationIfStatus	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs	[]jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs[*]	jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs[*].job_id	string	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs[*].workspace_id	string	ALL
         resources.jobs.*.triggers[*].model	*jobs.ModelTriggerConfiguration	ALL
         resources.jobs.*.triggers[*].model.aliases	[]string	ALL
         resources.jobs.*.triggers[*].model.aliases[*]	string	ALL
        
    acceptance_test.go:1341: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=2186793210/001/output/root.txt
        @@ -1,4 +1,4 @@
        -__locations	*loctable.Locations	INPUT
        +__locations	*dynloc.Locations	INPUT
         __locations.files	[]string	INPUT
         __locations.files[*]	string	INPUT
         __locations.locations	map[string][][]int	INPUT
        @@ -148,6 +148,7 @@
         environments.*.variables.*.lookup.query	string	INPUT
         environments.*.variables.*.lookup.service_principal	string	INPUT
         environments.*.variables.*.lookup.warehouse	string	INPUT
        +environments.*.variables.*.sensitive	bool	INPUT
         environments.*.variables.*.type	variable.VariableType	INPUT
         environments.*.variables.*.value	any	INPUT
         environments.*.workspace	*config.Workspace	INPUT
        @@ -364,6 +365,7 @@
         targets.*.variables.*.lookup.query	string	INPUT
         targets.*.variables.*.lookup.service_principal	string	INPUT
         targets.*.variables.*.lookup.warehouse	string	INPUT
        +targets.*.variables.*.sensitive	bool	INPUT
         targets.*.variables.*.type	variable.VariableType	INPUT
         targets.*.variables.*.value	any	INPUT
         targets.*.workspace	*config.Workspace	INPUT
        @@ -447,6 +449,7 @@
         variables.*.lookup.query	string	INPUT
         variables.*.lookup.service_principal	string	INPUT
         variables.*.lookup.warehouse	string	INPUT
        +variables.*.sensitive	bool	INPUT
         variables.*.type	variable.VariableType	INPUT
         variables.*.value	any	INPUT
         workspace	config.Workspace	INPUT
        
    acceptance_test.go:1323: Unexpected output file: output/data_quality_monitors.txt
        pathRef: bundle/refschema/output/data_quality_monitors.txt
        pathNew: /tmp/TestAcceptbundlerefschemaDMS=2186793210/001/output/data_quality_monitors.txt
    acceptance_test.go:1323: Unexpected output file: output/materialization_sets.txt
        pathRef: bundle/refschema/output/materialization_sets.txt
... (4 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)
TestAccept/bundle/refschema/DMS=true: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true1238787611/001/output/root.txt
        @@ -1,4 +1,4 @@
        -__locations	*loctable.Locations	INPUT
        +__locations	*dynloc.Locations	INPUT
         __locations.files	[]string	INPUT
         __locations.files[*]	string	INPUT
         __locations.locations	map[string][][]int	INPUT

latest (v1.24.0):

acceptance_test.go:1341: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true855918538/001/output/root.txt
        @@ -1,4 +1,4 @@
        -__locations	*loctable.Locations	INPUT
        +__locations	*dynloc.Locations	INPUT
         __locations.files	[]string	INPUT
         __locations.files[*]	string	INPUT
         __locations.locations	map[string][][]int	INPUT
        @@ -148,6 +148,7 @@
         environments.*.variables.*.lookup.query	string	INPUT
         environments.*.variables.*.lookup.service_principal	string	INPUT
         environments.*.variables.*.lookup.warehouse	string	INPUT
        +environments.*.variables.*.sensitive	bool	INPUT
         environments.*.variables.*.type	variable.VariableType	INPUT
         environments.*.variables.*.value	any	INPUT
         environments.*.workspace	*config.Workspace	INPUT
        @@ -364,6 +365,7 @@
         targets.*.variables.*.lookup.query	string	INPUT
         targets.*.variables.*.lookup.service_principal	string	INPUT
         targets.*.variables.*.lookup.warehouse	string	INPUT
        +targets.*.variables.*.sensitive	bool	INPUT
         targets.*.variables.*.type	variable.VariableType	INPUT
         targets.*.variables.*.value	any	INPUT
         targets.*.workspace	*config.Workspace	INPUT
        @@ -447,6 +449,7 @@
         variables.*.lookup.query	string	INPUT
         variables.*.lookup.service_principal	string	INPUT
         variables.*.lookup.warehouse	string	INPUT
        +variables.*.sensitive	bool	INPUT
         variables.*.type	variable.VariableType	INPUT
         variables.*.value	any	INPUT
         workspace	config.Workspace	INPUT
        
    acceptance_test.go:1341: Diff:
        --- bundle/refschema/output/jobs.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true855918538/001/output/jobs.txt
        @@ -193,6 +193,8 @@
         resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients	compute.ClientsTypes	ALL
         resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.jobs	bool	ALL
         resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.notebooks	bool	ALL
        +resources.jobs.*.job_clusters[*].serverless_compute	*jobs.JobClusterServerlessCompute	ALL
        +resources.jobs.*.job_clusters[*].serverless_compute.policy_id	string	ALL
         resources.jobs.*.job_clusters[*].serverless_compute_id	string	ALL
         resources.jobs.*.job_id	int64	REMOTE
         resources.jobs.*.lifecycle	resources.Lifecycle	INPUT
        @@ -231,6 +233,42 @@
         resources.jobs.*.tags.*	string	ALL
         resources.jobs.*.tasks	[]jobs.Task	ALL
         resources.jobs.*.tasks[*]	jobs.Task	ALL
        +resources.jobs.*.tasks[*].ai_function_task	*jobs.AiFunctionTask	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify	*jobs.AiClassifyFunction	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.enable_rationales	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels	*jobs.AiClassifyFunctionInlineLabels	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels	[]jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*]	jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*].description	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.inline_labels.labels[*].name	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.instructions	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.multilabel	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_classify.version	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract	*jobs.AiExtractFunction	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.enable_citations	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.instructions	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.mode	jobs.AiExtractFunctionMode	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.schema	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_extract.version	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document	*jobs.AiParseDocumentFunction	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types	[]jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.description_element_types[*]	jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.image_output_path	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.page_range	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.ai_parse_document.version	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table	*jobs.DeltaTableSource	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.input_column	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.merge_key_columns	[]string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.merge_key_columns[*]	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.delta_table.table_name	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output	jobs.QualifiedName	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output.catalog	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output.schema	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.output.table	string	ALL
        +resources.jobs.*.tasks[*].ai_function_task.volume	*jobs.VolumeSource	ALL
        +resources.jobs.*.tasks[*].ai_function_task.volume.volume_path	string	ALL
         resources.jobs.*.tasks[*].ai_runtime_task	*jobs.AiRuntimeTask	ALL
         resources.jobs.*.tasks[*].ai_runtime_task.code_source_path	string	ALL
         resources.jobs.*.tasks[*].ai_runtime_task.deployments	[]jobs.DeploymentSpec	ALL
        @@ -339,6 +377,42 @@
         resources.jobs.*.tasks[*].for_each_task.concurrency	int	ALL
         resources.jobs.*.tasks[*].for_each_task.inputs	string	ALL
         resources.jobs.*.tasks[*].for_each_task.task	jobs.Task	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task	*jobs.AiFunctionTask	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify	*jobs.AiClassifyFunction	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.enable_rationales	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels	*jobs.AiClassifyFunctionInlineLabels	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels	[]jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*]	jobs.AiClassifyFunctionLabel	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*].description	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.inline_labels.labels[*].name	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.instructions	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.multilabel	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_classify.version	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract	*jobs.AiExtractFunction	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.enable_citations	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.enable_confidence_scores	bool	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.instructions	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.mode	jobs.AiExtractFunctionMode	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.schema	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_extract.version	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document	*jobs.AiParseDocumentFunction	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types	[]jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.description_element_types[*]	jobs.AiParseDocumentFunctionDescriptionElementType	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.image_output_path	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.page_range	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.ai_parse_document.version	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table	*jobs.DeltaTableSource	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.input_column	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.merge_key_columns	[]string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.merge_key_columns[*]	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.delta_table.table_name	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output	jobs.QualifiedName	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.catalog	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.schema	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.output.table	string	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume	*jobs.VolumeSource	ALL
        +resources.jobs.*.tasks[*].for_each_task.task.ai_function_task.volume.volume_path	string	ALL
         resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task	*jobs.AiRuntimeTask	ALL
         resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.code_source_path	string	ALL
         resources.jobs.*.tasks[*].for_each_task.task.ai_runtime_task.deployments	[]jobs.DeploymentSpec	ALL
        @@ -1043,6 +1117,12 @@
         resources.jobs.*.trigger.file_arrival.min_time_between_triggers_seconds	int	ALL
         resources.jobs.*.trigger.file_arrival.url	string	ALL
         resources.jobs.*.trigger.file_arrival.wait_after_last_change_seconds	int	ALL
        +resources.jobs.*.trigger.job_completion	*jobs.JobCompletionTriggerConfiguration	ALL
        +resources.jobs.*.trigger.job_completion.if_status	jobs.JobCompletionTriggerConfigurationIfStatus	ALL
        +resources.jobs.*.trigger.job_completion.jobs	[]jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.trigger.job_completion.jobs[*]	jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.trigger.job_completion.jobs[*].job_id	string	ALL
        +resources.jobs.*.trigger.job_completion.jobs[*].workspace_id	string	ALL
         resources.jobs.*.trigger.model	*jobs.ModelTriggerConfiguration	ALL
         resources.jobs.*.trigger.model.aliases	[]string	ALL
         resources.jobs.*.trigger.model.aliases[*]	string	ALL
        @@ -1086,6 +1166,17 @@
         resources.jobs.*.trigger_details[*].state.continuous.next_attempt_ms	int64	REMOTE
         resources.jobs.*.trigger_details[*].state.file_arrival	*jobs.FileArrivalTriggerState	REMOTE
         resources.jobs.*.trigger_details[*].state.file_arrival.using_file_events	bool	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion	*jobs.JobCompletionTriggerState	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states	[]jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*]	jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].has_seen_completion	bool	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].is_deleted	bool	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].job_id	string	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_completion_time	*time.Time	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].last_seen_run_id	string	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].latest_non_matching_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_details[*].state.job_completion.monitored_job_states[*].workspace_id	string	REMOTE
         resources.jobs.*.trigger_details[*].state.model	*jobs.ModelTriggerState	REMOTE
         resources.jobs.*.trigger_details[*].state.pause_status	jobs.PauseStatus	REMOTE
         resources.jobs.*.trigger_details[*].state.periodic	*jobs.PeriodicTriggerState	REMOTE
        @@ -1104,6 +1195,17 @@
         resources.jobs.*.trigger_state	*jobs.TriggerStateProto	REMOTE
         resources.jobs.*.trigger_state.file_arrival	*jobs.FileArrivalTriggerState	REMOTE
         resources.jobs.*.trigger_state.file_arrival.using_file_events	bool	REMOTE
        +resources.jobs.*.trigger_state.job_completion	*jobs.JobCompletionTriggerState	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states	[]jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*]	jobs.JobCompletionTriggerStateMonitoredJobState	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].has_seen_completion	bool	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].is_deleted	bool	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].job_id	string	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_completion_time	*time.Time	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].last_seen_run_id	string	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].latest_non_matching_result	jobs.TerminationCodeCode	REMOTE
        +resources.jobs.*.trigger_state.job_completion.monitored_job_states[*].workspace_id	string	REMOTE
         resources.jobs.*.trigger_state.pause_status	jobs.PauseStatus	REMOTE
         resources.jobs.*.trigger_state.sql_condition	*jobs.SqlConditionState	REMOTE
         resources.jobs.*.trigger_state.sql_condition.latest_condition_evaluation_satisfied	bool	REMOTE
        @@ -1127,6 +1229,12 @@
         resources.jobs.*.triggers[*].file_arrival.min_time_between_triggers_seconds	int	ALL
         resources.jobs.*.triggers[*].file_arrival.url	string	ALL
         resources.jobs.*.triggers[*].file_arrival.wait_after_last_change_seconds	int	ALL
        +resources.jobs.*.triggers[*].job_completion	*jobs.JobCompletionTriggerConfiguration	ALL
        +resources.jobs.*.triggers[*].job_completion.if_status	jobs.JobCompletionTriggerConfigurationIfStatus	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs	[]jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs[*]	jobs.JobCompletionTriggerConfigurationMonitoredJob	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs[*].job_id	string	ALL
        +resources.jobs.*.triggers[*].job_completion.jobs[*].workspace_id	string	ALL
         resources.jobs.*.triggers[*].model	*jobs.ModelTriggerConfiguration	ALL
         resources.jobs.*.triggers[*].model.aliases	[]string	ALL
         resources.jobs.*.triggers[*].model.aliases[*]	string	ALL
        
    acceptance_test.go:1323: Unexpected output file: output/data_quality_monitors.txt
        pathRef: bundle/refschema/output/data_quality_monitors.txt
        pathNew: /tmp/TestAcceptbundlerefschemaDMS=true855918538/001/output/data_quality_monitors.txt
    acceptance_test.go:1323: Unexpected output file: output/materialization_sets.txt
        pathRef: bundle/refschema/output/materialization_sets.txt
... (4 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)
TestAccept/bundle/strict_profile_match/default_profile/host/DMS=: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: Diff:
        --- bundle/strict_profile_match/default_profile/host/output.txt
        +++ /tmp/TestAcceptbundlestrict_profile_matchdefault_profilehostDMS=3674389450/002/output.txt
        @@ -18,7 +18,7 @@
         Name: strict-profile-match
         Target: classic_other_workspace
         Workspace:
        -  Host: [DATABRICKS_URL]/?o=2222222222
        +  Host: [DATABRICKS_URL]
         
         Found 1 error

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/strict_profile_match/default_profile/host/DMS=true: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: Diff:
        --- bundle/strict_profile_match/default_profile/host/output.txt
        +++ /tmp/TestAcceptbundlestrict_profile_matchdefault_profilehostDMS=2320329554/002/output.txt
        @@ -18,7 +18,7 @@
         Name: strict-profile-match
         Target: classic_other_workspace
         Workspace:
        -  Host: [DATABRICKS_URL]/?o=2222222222
        +  Host: [DATABRICKS_URL]
         
         Found 1 error

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/strict_profile_match/host/DMS=: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: Diff:
        --- bundle/strict_profile_match/host/output.txt
        +++ /tmp/TestAcceptbundlestrict_profile_matchhostDMS=1761551023/002/output.txt
        @@ -22,7 +22,7 @@
         Name: strict-profile-match
         Target: classic_other_workspace
         Workspace:
        -  Host: [DATABRICKS_URL]/?o=2222222222
        +  Host: [DATABRICKS_URL]
         
         Found 1 error
         
        @@ -48,7 +48,7 @@
         Name: strict-profile-match
         Target: custom_host_other_workspace
         Workspace:
        -  Host: [CUSTOM_HOST]/?o=2222222222
        +  Host: [CUSTOM_HOST]
         
         Found 1 error

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/strict_profile_match/host/DMS=true: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: Diff:
        --- bundle/strict_profile_match/host/output.txt
        +++ /tmp/TestAcceptbundlestrict_profile_matchhostDMS=true2630127407/002/output.txt
        @@ -22,7 +22,7 @@
         Name: strict-profile-match
         Target: classic_other_workspace
         Workspace:
        -  Host: [DATABRICKS_URL]/?o=2222222222
        +  Host: [DATABRICKS_URL]
         
         Found 1 error
         
        @@ -48,7 +48,7 @@
         Name: strict-profile-match
         Target: custom_host_other_workspace
         Workspace:
        -  Host: [CUSTOM_HOST]/?o=2222222222
        +  Host: [CUSTOM_HOST]
         
         Found 1 error

latest (v1.24.0): same output as main (3aa5c96)

TestAccept/bundle/validate/app_resource_duplicate_name_location/DMS=: branch ✅ | main (3aa5c96) ❌ | latest (v1.24.0) ❌

main (3aa5c96):

acceptance_test.go:1341: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1341
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1082
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:659
        	Error:      	Not equal: 
        	            	expected: "\n>>> [CLI] bundle validate\nWarning: invalid value \"INVALID\" for enum field. Valid values are [CAN_MANAGE CAN_MANAGE_RUN CAN_VIEW IS_OWNER]\n  at resources.apps.app.resources[0].job.permission\n  in databricks.yml:17:25\n\nName: test-bundle\nTarget: default\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default\n\nFound 1 warning\n\n>>> [CLI] bundle validate -o json\nWarning: invalid value \"INVALID\" for enum field. Valid values are [CAN_MANAGE CAN_MANAGE_RUN CAN_VIEW IS_OWNER]\n  at resources.apps.app.resources[0].job.permission\n  in databricks.yml:17:25\n\n[\n  {\n    \"job\": {\n      \"id\": \"2\",\n      \"permission\": \"INVALID\"\n    },\n    \"name\": \"job\"\n  }\n]\n"
        	            	actual  : "\n>>> [CLI] bundle validate\nWarning: invalid value \"INVALID\" for enum field. Valid values are [CAN_MANAGE CAN_MANAGE_RUN CAN_VIEW IS_OWNER]\n  at resources.apps.app.resources[0].job.permission\n  in databricks.yml:13:25\n\nName: test-bundle\nTarget: default\nWorkspace:\n  User: [USERNAME]\n  Path: /Workspace/Users/[USERNAME]/.bundle/test-bundle/default\n\nFound 1 warning\n\n>>> [CLI] bundle validate -o json\nWarning: invalid value \"INVALID\" for enum field. Valid values are [CAN_MANAGE CAN_MANAGE_RUN CAN_VIEW IS_OWNER]\n  at resources.apps.app.resources[0].job.permission\n  in databricks.yml:13:25\n\n[\n  {\n    \"job\": {\n      \"id\": \"2\",\n      \"permission\": \"INVALID\"\n    },\n    \"name\": \"job\"\n  }\n]\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -4,3 +4,3 @@
        	            	   at resources.apps.app.resources[0].job.permission
        	            	-  in databricks.yml:17:25
        	            	+  in databricks.yml:13:25
        	            	 
        	            	@@ -17,3 +17,3 @@
        	            	   at resources.apps.app.resources[0].job.permission
        	            	-  in databricks.yml:17:25
        	            	+  in databricks.yml:13:25
        	            	 
        	Test:       	TestAccept/bundle/validate/app_resource_duplicate_name_location/DMS=
        	Messages:   	bundle/validate/app_resource_duplicate_name_location/output.txt vs /tmp/TestAcceptbundlevalidateapp_resource_duplicate_name_location486177984/002/output.txt

latest (v1.24.0): same output as main (3aa5c96)

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

@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 071aaa3

Run: 41992706050

Env ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 281 36 5:21
✅​ aws-windows-latest-4core-16gb 283 34 7:22
✅​ azure linux-2core-8gb 280 36 5:22
✅​ azure-windows-latest-4core-16gb 282 34 7:21
✅​ gcp linux-2core-8gb 281 36 5:21
✅​ gcp-windows-latest-4core-16gb 283 34 7:29
Top 6 slowest tests (at least 2 minutes):
duration env testname
7:22 gcp-windows-latest-4core-16gb TestAccept
7:15 aws-windows-latest-4core-16gb TestAccept
7:15 azure-windows-latest-4core-16gb TestAccept
3:57 aws linux-2core-8gb TestAccept
3:55 gcp linux-2core-8gb TestAccept
3:54 azure linux-2core-8gb TestAccept

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants