Skip to content

Keep an explicit false on optional bundle config bools - #7412

Open
denik wants to merge 5 commits into
mainfrom
denik/config-force-send-fields
Open

denik wants to merge 5 commits into
mainfrom
denik/config-force-send-fields

Conversation

@denik

@denik denik commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Why

Optional bools in CLI-defined config structs were plain bool with omitempty. The typed-to-dynamic conversion that runs after every mutator drops zero values, so an explicit false was lost unless the struct declared ForceSendFields:

  • it never showed in bundle validate -o json;
  • a target could not override true with false. On main this is broken for artifacts.*.dynamic_version, bundle.deployment.lock.force, workspace.azure_use_msi (auth then fails with "more than one authorization method configured: azure and pat") and replace_existing on postgres endpoints, databases and roles;
  • the bundle bitmap (Add bundle bitmap for per-field telemetry #6104) could not record it.

Changes

These fields become *bool, like lock.enabled already is; readers use config.IsExplicitlyEnabled (or dereference inline in the direct engine):

  • variables.*.sensitive, artifacts.*.dynamic_version, bundle.deployment.lock.force, workspace.azure_use_msi, workspace.experimental_is_unified_host, targets.*.default, experimental.{immutable_folder,python_wheel_wrapper,use_legacy_run_as,skip_artifact_cleanup,skip_name_prefix_for_schema}, experimental.pydabs.enabled;
  • replace_existing on postgres branches, endpoints, databases and roles, and purge_on_delete on postgres projects and branches;
  • bundle.deployment.fail_on_active_runs.

The last two groups already kept an explicit false through ForceSendFields declared for them (postgres projects and branches, Deployment from #7117); with *bool those ForceSendFields go away. The postgres configs keep their MarshalJSON/UnmarshalJSON, which exist because they embed an SDK spec.

Still plain bool: bundle.force (readonly, set from --force), and three fields whose struct's ForceSendFields covers more than the bool (lifecycle.prevent_destroy with depends_on, presets.artifacts_dynamic_version with the other presets, dashboards.*.embed_credentials, which the direct engine passes to the dashboards API). TestConfigBoolsArePointers fails for any other bool in a CLI-defined config struct.

Tests

acceptance/bundle/validate/explicit_false: explicit false values are kept, and a target overrides true with false for every field above that a target can set (on main the broken ones stay true).

This pull request and its description were written by Isaac.

denik and others added 2 commits November 9, 2026 16:28
Thirteen omitempty bool fields of CLI-defined config structs (variables.*.sensitive,
bundle.deployment.lock.force, workspace.azure_use_msi and
experimental_is_unified_host, artifacts.*.dynamic_version, targets.*.default,
experimental.{immutable_folder,python_wheel_wrapper,use_legacy_run_as,
skip_artifact_cleanup,skip_name_prefix_for_schema} and
experimental.pydabs.enabled) become *bool, like lock.enabled already is.

As plain bools, an explicit false was dropped by the typed-to-dynamic
conversion that runs after every mutator: it never showed in the config, and a
target could not override true with false (e.g. dynamic_version: false in a
target lost to true at the root). Readers use config.IsExplicitlyEnabled, so
behavior is otherwise unchanged; PyDABs keeps treating only enabled: true as
configured.

A unit test guards that no CLI-defined struct reintroduces an omitempty bool
without ForceSendFields; bundle.force is skipped since it is readonly (set from
--force, not by users).

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
@github-actions github-actions Bot added DABs DABs related issues PyDABs labels Nov 9, 2026
Co-authored-by: Isaac <no-reply@databricks.com>
@github-actions

github-actions Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Commit: 9a113f766 | Workflow run

Regression test report

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

4 tests: regression=4 unreleased=0 coverage=0 failing=0
test branch main (77950b6) latest (v1.25.0)
TestAccept/bundle/refschema/DMS= ✅ ❌ ❌
TestAccept/bundle/refschema/DMS=true ✅ ❌ ❌
TestAccept/bundle/validate/explicit_false/DMS= ✅ ❌ ❌
TestAccept/bundle/validate/explicit_false/DMS=true ✅ ❌ ❌
TestAccept/bundle/refschema/DMS=: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌

main (77950b6):

acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_databases.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=1242366813/001/output/postgres_databases.txt
        @@ -10,7 +10,7 @@
         resources.postgres_databases.*.name	string	REMOTE
         resources.postgres_databases.*.parent	string	ALL
         resources.postgres_databases.*.postgres_database	string	ALL
        -resources.postgres_databases.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_databases.*.replace_existing	bool	INPUT	STATE
         resources.postgres_databases.*.role	string	ALL
         resources.postgres_databases.*.status	*postgres.DatabaseDatabaseStatus	REMOTE
         resources.postgres_databases.*.status.database_id	string	REMOTE
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=1242366813/001/output/root.txt
        @@ -9,7 +9,7 @@
         artifacts	config.Artifacts	INPUT
         artifacts.*	*config.Artifact	INPUT
         artifacts.*.build	string	INPUT
        -artifacts.*.dynamic_version	*bool	INPUT
        +artifacts.*.dynamic_version	bool	INPUT
         artifacts.*.executable	exec.ExecutableType	INPUT
         artifacts.*.files	[]config.ArtifactFile	INPUT
         artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -29,11 +29,11 @@
         bundle.databricks_cli_version	string	INPUT
         bundle.deployment	config.Deployment	INPUT
         bundle.deployment.deployment_id	string	INPUT
        -bundle.deployment.fail_on_active_runs	*bool	INPUT
        +bundle.deployment.fail_on_active_runs	bool	INPUT
         bundle.deployment.latest_version_id	int	INPUT
         bundle.deployment.lock	config.Lock	INPUT
         bundle.deployment.lock.enabled	*bool	INPUT
        -bundle.deployment.lock.force	*bool	INPUT
        +bundle.deployment.lock.force	bool	INPUT
         bundle.engine	engine.EngineType	INPUT
         bundle.environment	string	INPUT
         bundle.force	bool	INPUT
        @@ -55,7 +52,7 @@
         environments.*.artifacts	config.Artifacts	INPUT
         environments.*.artifacts.*	*config.Artifact	INPUT
         environments.*.artifacts.*.build	string	INPUT
        -environments.*.artifacts.*.dynamic_version	*bool	INPUT
        +environments.*.artifacts.*.dynamic_version	bool	INPUT
         environments.*.artifacts.*.executable	exec.ExecutableType	INPUT
         environments.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         environments.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -75,11 +72,11 @@
         environments.*.bundle.databricks_cli_version	string	INPUT
         environments.*.bundle.deployment	config.Deployment	INPUT
         environments.*.bundle.deployment.deployment_id	string	INPUT
        -environments.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +environments.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         environments.*.bundle.deployment.latest_version_id	int	INPUT
         environments.*.bundle.deployment.lock	config.Lock	INPUT
         environments.*.bundle.deployment.lock.enabled	*bool	INPUT
        -environments.*.bundle.deployment.lock.force	*bool	INPUT
        +environments.*.bundle.deployment.lock.force	bool	INPUT
         environments.*.bundle.engine	engine.EngineType	INPUT
         environments.*.bundle.environment	string	INPUT
         environments.*.bundle.force	bool	INPUT
        @@ -97,7 +91,7 @@
         environments.*.bundle.uuid	string	INPUT
         environments.*.cluster_id	string	INPUT
         environments.*.compute_id	string	INPUT
        -environments.*.default	*bool	INPUT
        +environments.*.default	bool	INPUT
         environments.*.git	config.Git	INPUT
         environments.*.git.actual_branch	string	INPUT
         environments.*.git.branch	string	INPUT
        @@ -148,7 +142,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.*.sensitive	bool	INPUT
         environments.*.variables.*.type	variable.VariableType	INPUT
         environments.*.variables.*.value	any	INPUT
         environments.*.workspace	*config.Workspace	INPUT
        @@ -159,7 +153,7 @@
         environments.*.workspace.azure_environment	string	INPUT
         environments.*.workspace.azure_login_app_id	string	INPUT
         environments.*.workspace.azure_tenant_id	string	INPUT
        -environments.*.workspace.azure_use_msi	*bool	INPUT
        +environments.*.workspace.azure_use_msi	bool	INPUT
         environments.*.workspace.azure_workspace_resource_id	string	INPUT
         environments.*.workspace.client_id	string	INPUT
         environments.*.workspace.current_user	*config.User	INPUT
        @@ -204,7 +198,7 @@
         environments.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         environments.*.workspace.current_user.short_name	string	INPUT
         environments.*.workspace.current_user.userName	string	INPUT
        -environments.*.workspace.experimental_is_unified_host	*bool	INPUT
        +environments.*.workspace.experimental_is_unified_host	bool	INPUT
         environments.*.workspace.file_path	string	INPUT
         environments.*.workspace.google_service_account	string	INPUT
         environments.*.workspace.host	string	INPUT
        @@ -217,19 +211,19 @@
         environments.*.workspace.workspace_id	string	INPUT
         experimental	*config.Experimental	INPUT
         experimental.deployment_history	*bool	INPUT
        -experimental.immutable_folder	*bool	INPUT
        +experimental.immutable_folder	bool	INPUT
         experimental.pydabs	config.PyDABs	INPUT
        -experimental.pydabs.enabled	*bool	INPUT
        +experimental.pydabs.enabled	bool	INPUT
         experimental.python	config.Python	INPUT
         experimental.python.mutators	[]string	INPUT
         experimental.python.mutators[*]	string	INPUT
         experimental.python.venv_path	string	INPUT
        -experimental.python_wheel_wrapper	*bool	INPUT
        +experimental.python_wheel_wrapper	bool	INPUT
         experimental.scripts	map[config.ScriptHook]config.Command	INPUT
         experimental.scripts.*	config.Command	INPUT
        -experimental.skip_artifact_cleanup	*bool	INPUT
        -experimental.skip_name_prefix_for_schema	*bool	INPUT
        -experimental.use_legacy_run_as	*bool	INPUT
        +experimental.skip_artifact_cleanup	bool	INPUT
        +experimental.skip_name_prefix_for_schema	bool	INPUT
        +experimental.use_legacy_run_as	bool	INPUT
         include	[]string	INPUT
         include[*]	string	INPUT
         permissions	[]resources.Permission	INPUT
        @@ -272,7 +259,7 @@
         targets.*.artifacts	config.Artifacts	INPUT
         targets.*.artifacts.*	*config.Artifact	INPUT
         targets.*.artifacts.*.build	string	INPUT
        -targets.*.artifacts.*.dynamic_version	*bool	INPUT
        +targets.*.artifacts.*.dynamic_version	bool	INPUT
         targets.*.artifacts.*.executable	exec.ExecutableType	INPUT
         targets.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         targets.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -292,11 +279,11 @@
         targets.*.bundle.databricks_cli_version	string	INPUT
         targets.*.bundle.deployment	config.Deployment	INPUT
         targets.*.bundle.deployment.deployment_id	string	INPUT
        -targets.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +targets.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         targets.*.bundle.deployment.latest_version_id	int	INPUT
         targets.*.bundle.deployment.lock	config.Lock	INPUT
         targets.*.bundle.deployment.lock.enabled	*bool	INPUT
        -targets.*.bundle.deployment.lock.force	*bool	INPUT
        +targets.*.bundle.deployment.lock.force	bool	INPUT
         targets.*.bundle.engine	engine.EngineType	INPUT
         targets.*.bundle.environment	string	INPUT
         targets.*.bundle.force	bool	INPUT
        @@ -314,7 +298,7 @@
         targets.*.bundle.uuid	string	INPUT
         targets.*.cluster_id	string	INPUT
         targets.*.compute_id	string	INPUT
        -targets.*.default	*bool	INPUT
        +targets.*.default	bool	INPUT
         targets.*.git	config.Git	INPUT
         targets.*.git.actual_branch	string	INPUT
         targets.*.git.branch	string	INPUT
        @@ -365,7 +349,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.*.sensitive	bool	INPUT
         targets.*.variables.*.type	variable.VariableType	INPUT
         targets.*.variables.*.value	any	INPUT
         targets.*.workspace	*config.Workspace	INPUT
        @@ -376,7 +360,7 @@
         targets.*.workspace.azure_environment	string	INPUT
         targets.*.workspace.azure_login_app_id	string	INPUT
         targets.*.workspace.azure_tenant_id	string	INPUT
        -targets.*.workspace.azure_use_msi	*bool	INPUT
        +targets.*.workspace.azure_use_msi	bool	INPUT
         targets.*.workspace.azure_workspace_resource_id	string	INPUT
         targets.*.workspace.client_id	string	INPUT
         targets.*.workspace.current_user	*config.User	INPUT
        @@ -421,7 +405,7 @@
         targets.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         targets.*.workspace.current_user.short_name	string	INPUT
         targets.*.workspace.current_user.userName	string	INPUT
        -targets.*.workspace.experimental_is_unified_host	*bool	INPUT
        +targets.*.workspace.experimental_is_unified_host	bool	INPUT
         targets.*.workspace.file_path	string	INPUT
         targets.*.workspace.google_service_account	string	INPUT
         targets.*.workspace.host	string	INPUT
        @@ -449,7 +433,7 @@
         variables.*.lookup.query	string	INPUT
         variables.*.lookup.service_principal	string	INPUT
         variables.*.lookup.warehouse	string	INPUT
        -variables.*.sensitive	*bool	INPUT
        +variables.*.sensitive	bool	INPUT
         variables.*.type	variable.VariableType	INPUT
         variables.*.value	any	INPUT
         workspace	config.Workspace	INPUT
        @@ -460,7 +444,7 @@
         workspace.azure_environment	string	INPUT
         workspace.azure_login_app_id	string	INPUT
         workspace.azure_tenant_id	string	INPUT
        -workspace.azure_use_msi	*bool	INPUT
        +workspace.azure_use_msi	bool	INPUT
         workspace.azure_workspace_resource_id	string	INPUT
         workspace.client_id	string	INPUT
... (64 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.25.0):

acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_endpoints.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=598763961/001/output/postgres_endpoints.txt
        @@ -18,7 +18,7 @@
         resources.postgres_endpoints.*.name	string	REMOTE
         resources.postgres_endpoints.*.no_suspension	bool	ALL
         resources.postgres_endpoints.*.parent	string	ALL
        -resources.postgres_endpoints.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_endpoints.*.replace_existing	bool	INPUT	STATE
         resources.postgres_endpoints.*.settings	*postgres.EndpointSettings	ALL
         resources.postgres_endpoints.*.settings.pg_settings	map[string]string	ALL
         resources.postgres_endpoints.*.settings.pg_settings.*	string	ALL
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=598763961/001/output/root.txt
        @@ -9,7 +9,7 @@
         artifacts	config.Artifacts	INPUT
         artifacts.*	*config.Artifact	INPUT
         artifacts.*.build	string	INPUT
        -artifacts.*.dynamic_version	*bool	INPUT
        +artifacts.*.dynamic_version	bool	INPUT
         artifacts.*.executable	exec.ExecutableType	INPUT
         artifacts.*.files	[]config.ArtifactFile	INPUT
         artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -29,11 +29,11 @@
         bundle.databricks_cli_version	string	INPUT
         bundle.deployment	config.Deployment	INPUT
         bundle.deployment.deployment_id	string	INPUT
        -bundle.deployment.fail_on_active_runs	*bool	INPUT
        +bundle.deployment.fail_on_active_runs	bool	INPUT
         bundle.deployment.latest_version_id	int	INPUT
         bundle.deployment.lock	config.Lock	INPUT
         bundle.deployment.lock.enabled	*bool	INPUT
        -bundle.deployment.lock.force	*bool	INPUT
        +bundle.deployment.lock.force	bool	INPUT
         bundle.engine	engine.EngineType	INPUT
         bundle.environment	string	INPUT
         bundle.force	bool	INPUT
        @@ -55,7 +52,7 @@
         environments.*.artifacts	config.Artifacts	INPUT
         environments.*.artifacts.*	*config.Artifact	INPUT
         environments.*.artifacts.*.build	string	INPUT
        -environments.*.artifacts.*.dynamic_version	*bool	INPUT
        +environments.*.artifacts.*.dynamic_version	bool	INPUT
         environments.*.artifacts.*.executable	exec.ExecutableType	INPUT
         environments.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         environments.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -75,11 +72,11 @@
         environments.*.bundle.databricks_cli_version	string	INPUT
         environments.*.bundle.deployment	config.Deployment	INPUT
         environments.*.bundle.deployment.deployment_id	string	INPUT
        -environments.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +environments.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         environments.*.bundle.deployment.latest_version_id	int	INPUT
         environments.*.bundle.deployment.lock	config.Lock	INPUT
         environments.*.bundle.deployment.lock.enabled	*bool	INPUT
        -environments.*.bundle.deployment.lock.force	*bool	INPUT
        +environments.*.bundle.deployment.lock.force	bool	INPUT
         environments.*.bundle.engine	engine.EngineType	INPUT
         environments.*.bundle.environment	string	INPUT
         environments.*.bundle.force	bool	INPUT
        @@ -97,7 +91,7 @@
         environments.*.bundle.uuid	string	INPUT
         environments.*.cluster_id	string	INPUT
         environments.*.compute_id	string	INPUT
        -environments.*.default	*bool	INPUT
        +environments.*.default	bool	INPUT
         environments.*.git	config.Git	INPUT
         environments.*.git.actual_branch	string	INPUT
         environments.*.git.branch	string	INPUT
        @@ -148,7 +142,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.*.sensitive	bool	INPUT
         environments.*.variables.*.type	variable.VariableType	INPUT
         environments.*.variables.*.value	any	INPUT
         environments.*.workspace	*config.Workspace	INPUT
        @@ -159,7 +153,7 @@
         environments.*.workspace.azure_environment	string	INPUT
         environments.*.workspace.azure_login_app_id	string	INPUT
         environments.*.workspace.azure_tenant_id	string	INPUT
        -environments.*.workspace.azure_use_msi	*bool	INPUT
        +environments.*.workspace.azure_use_msi	bool	INPUT
         environments.*.workspace.azure_workspace_resource_id	string	INPUT
         environments.*.workspace.client_id	string	INPUT
         environments.*.workspace.current_user	*config.User	INPUT
        @@ -204,7 +198,7 @@
         environments.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         environments.*.workspace.current_user.short_name	string	INPUT
         environments.*.workspace.current_user.userName	string	INPUT
        -environments.*.workspace.experimental_is_unified_host	*bool	INPUT
        +environments.*.workspace.experimental_is_unified_host	bool	INPUT
         environments.*.workspace.file_path	string	INPUT
         environments.*.workspace.google_service_account	string	INPUT
         environments.*.workspace.host	string	INPUT
        @@ -217,19 +211,19 @@
         environments.*.workspace.workspace_id	string	INPUT
         experimental	*config.Experimental	INPUT
         experimental.deployment_history	*bool	INPUT
        -experimental.immutable_folder	*bool	INPUT
        +experimental.immutable_folder	bool	INPUT
         experimental.pydabs	config.PyDABs	INPUT
        -experimental.pydabs.enabled	*bool	INPUT
        +experimental.pydabs.enabled	bool	INPUT
         experimental.python	config.Python	INPUT
         experimental.python.mutators	[]string	INPUT
         experimental.python.mutators[*]	string	INPUT
         experimental.python.venv_path	string	INPUT
        -experimental.python_wheel_wrapper	*bool	INPUT
        +experimental.python_wheel_wrapper	bool	INPUT
         experimental.scripts	map[config.ScriptHook]config.Command	INPUT
         experimental.scripts.*	config.Command	INPUT
        -experimental.skip_artifact_cleanup	*bool	INPUT
        -experimental.skip_name_prefix_for_schema	*bool	INPUT
        -experimental.use_legacy_run_as	*bool	INPUT
        +experimental.skip_artifact_cleanup	bool	INPUT
        +experimental.skip_name_prefix_for_schema	bool	INPUT
        +experimental.use_legacy_run_as	bool	INPUT
         include	[]string	INPUT
         include[*]	string	INPUT
         permissions	[]resources.Permission	INPUT
        @@ -272,7 +259,7 @@
         targets.*.artifacts	config.Artifacts	INPUT
         targets.*.artifacts.*	*config.Artifact	INPUT
         targets.*.artifacts.*.build	string	INPUT
        -targets.*.artifacts.*.dynamic_version	*bool	INPUT
        +targets.*.artifacts.*.dynamic_version	bool	INPUT
         targets.*.artifacts.*.executable	exec.ExecutableType	INPUT
         targets.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         targets.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -292,11 +279,11 @@
         targets.*.bundle.databricks_cli_version	string	INPUT
         targets.*.bundle.deployment	config.Deployment	INPUT
         targets.*.bundle.deployment.deployment_id	string	INPUT
        -targets.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +targets.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         targets.*.bundle.deployment.latest_version_id	int	INPUT
         targets.*.bundle.deployment.lock	config.Lock	INPUT
         targets.*.bundle.deployment.lock.enabled	*bool	INPUT
        -targets.*.bundle.deployment.lock.force	*bool	INPUT
        +targets.*.bundle.deployment.lock.force	bool	INPUT
         targets.*.bundle.engine	engine.EngineType	INPUT
         targets.*.bundle.environment	string	INPUT
         targets.*.bundle.force	bool	INPUT
        @@ -314,7 +298,7 @@
         targets.*.bundle.uuid	string	INPUT
         targets.*.cluster_id	string	INPUT
         targets.*.compute_id	string	INPUT
        -targets.*.default	*bool	INPUT
        +targets.*.default	bool	INPUT
         targets.*.git	config.Git	INPUT
         targets.*.git.actual_branch	string	INPUT
         targets.*.git.branch	string	INPUT
        @@ -365,7 +349,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.*.sensitive	bool	INPUT
         targets.*.variables.*.type	variable.VariableType	INPUT
         targets.*.variables.*.value	any	INPUT
         targets.*.workspace	*config.Workspace	INPUT
        @@ -376,7 +360,7 @@
         targets.*.workspace.azure_environment	string	INPUT
         targets.*.workspace.azure_login_app_id	string	INPUT
         targets.*.workspace.azure_tenant_id	string	INPUT
        -targets.*.workspace.azure_use_msi	*bool	INPUT
        +targets.*.workspace.azure_use_msi	bool	INPUT
         targets.*.workspace.azure_workspace_resource_id	string	INPUT
         targets.*.workspace.client_id	string	INPUT
         targets.*.workspace.current_user	*config.User	INPUT
        @@ -421,7 +405,7 @@
         targets.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         targets.*.workspace.current_user.short_name	string	INPUT
         targets.*.workspace.current_user.userName	string	INPUT
        -targets.*.workspace.experimental_is_unified_host	*bool	INPUT
        +targets.*.workspace.experimental_is_unified_host	bool	INPUT
         targets.*.workspace.file_path	string	INPUT
         targets.*.workspace.google_service_account	string	INPUT
         targets.*.workspace.host	string	INPUT
        @@ -449,7 +433,7 @@
         variables.*.lookup.query	string	INPUT
         variables.*.lookup.service_principal	string	INPUT
         variables.*.lookup.warehouse	string	INPUT
        -variables.*.sensitive	*bool	INPUT
        +variables.*.sensitive	bool	INPUT
         variables.*.type	variable.VariableType	INPUT
         variables.*.value	any	INPUT
         workspace	config.Workspace	INPUT
        @@ -460,7 +444,7 @@
         workspace.azure_environment	string	INPUT
         workspace.azure_login_app_id	string	INPUT
         workspace.azure_tenant_id	string	INPUT
        -workspace.azure_use_msi	*bool	INPUT
        +workspace.azure_use_msi	bool	INPUT
         workspace.azure_workspace_resource_id	string	INPUT
         workspace.client_id	string	INPUT
... (66 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)
TestAccept/bundle/refschema/DMS=true: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌

main (77950b6):

acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_roles.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true395132260/001/output/postgres_roles.txt
        @@ -17,7 +17,7 @@
         resources.postgres_roles.*.name	string	REMOTE
         resources.postgres_roles.*.parent	string	ALL
         resources.postgres_roles.*.postgres_role	string	ALL
        -resources.postgres_roles.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_roles.*.replace_existing	bool	INPUT	STATE
         resources.postgres_roles.*.role_id	string	ALL
         resources.postgres_roles.*.status	*postgres.RoleRoleStatus	REMOTE
         resources.postgres_roles.*.status.attributes	*postgres.RoleAttributes	REMOTE
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_databases.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true395132260/001/output/postgres_databases.txt
        @@ -10,7 +10,7 @@
         resources.postgres_databases.*.name	string	REMOTE
         resources.postgres_databases.*.parent	string	ALL
         resources.postgres_databases.*.postgres_database	string	ALL
        -resources.postgres_databases.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_databases.*.replace_existing	bool	INPUT	STATE
         resources.postgres_databases.*.role	string	ALL
         resources.postgres_databases.*.status	*postgres.DatabaseDatabaseStatus	REMOTE
         resources.postgres_databases.*.status.database_id	string	REMOTE
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true395132260/001/output/root.txt
        @@ -9,7 +9,7 @@
         artifacts	config.Artifacts	INPUT
         artifacts.*	*config.Artifact	INPUT
         artifacts.*.build	string	INPUT
        -artifacts.*.dynamic_version	*bool	INPUT
        +artifacts.*.dynamic_version	bool	INPUT
         artifacts.*.executable	exec.ExecutableType	INPUT
         artifacts.*.files	[]config.ArtifactFile	INPUT
         artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -29,11 +29,11 @@
         bundle.databricks_cli_version	string	INPUT
         bundle.deployment	config.Deployment	INPUT
         bundle.deployment.deployment_id	string	INPUT
        -bundle.deployment.fail_on_active_runs	*bool	INPUT
        +bundle.deployment.fail_on_active_runs	bool	INPUT
         bundle.deployment.latest_version_id	int	INPUT
         bundle.deployment.lock	config.Lock	INPUT
         bundle.deployment.lock.enabled	*bool	INPUT
        -bundle.deployment.lock.force	*bool	INPUT
        +bundle.deployment.lock.force	bool	INPUT
         bundle.engine	engine.EngineType	INPUT
         bundle.environment	string	INPUT
         bundle.force	bool	INPUT
        @@ -55,7 +52,7 @@
         environments.*.artifacts	config.Artifacts	INPUT
         environments.*.artifacts.*	*config.Artifact	INPUT
         environments.*.artifacts.*.build	string	INPUT
        -environments.*.artifacts.*.dynamic_version	*bool	INPUT
        +environments.*.artifacts.*.dynamic_version	bool	INPUT
         environments.*.artifacts.*.executable	exec.ExecutableType	INPUT
         environments.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         environments.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -75,11 +72,11 @@
         environments.*.bundle.databricks_cli_version	string	INPUT
         environments.*.bundle.deployment	config.Deployment	INPUT
         environments.*.bundle.deployment.deployment_id	string	INPUT
        -environments.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +environments.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         environments.*.bundle.deployment.latest_version_id	int	INPUT
         environments.*.bundle.deployment.lock	config.Lock	INPUT
         environments.*.bundle.deployment.lock.enabled	*bool	INPUT
        -environments.*.bundle.deployment.lock.force	*bool	INPUT
        +environments.*.bundle.deployment.lock.force	bool	INPUT
         environments.*.bundle.engine	engine.EngineType	INPUT
         environments.*.bundle.environment	string	INPUT
         environments.*.bundle.force	bool	INPUT
        @@ -97,7 +91,7 @@
         environments.*.bundle.uuid	string	INPUT
         environments.*.cluster_id	string	INPUT
         environments.*.compute_id	string	INPUT
        -environments.*.default	*bool	INPUT
        +environments.*.default	bool	INPUT
         environments.*.git	config.Git	INPUT
         environments.*.git.actual_branch	string	INPUT
         environments.*.git.branch	string	INPUT
        @@ -148,7 +142,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.*.sensitive	bool	INPUT
         environments.*.variables.*.type	variable.VariableType	INPUT
         environments.*.variables.*.value	any	INPUT
         environments.*.workspace	*config.Workspace	INPUT
        @@ -159,7 +153,7 @@
         environments.*.workspace.azure_environment	string	INPUT
         environments.*.workspace.azure_login_app_id	string	INPUT
         environments.*.workspace.azure_tenant_id	string	INPUT
        -environments.*.workspace.azure_use_msi	*bool	INPUT
        +environments.*.workspace.azure_use_msi	bool	INPUT
         environments.*.workspace.azure_workspace_resource_id	string	INPUT
         environments.*.workspace.client_id	string	INPUT
         environments.*.workspace.current_user	*config.User	INPUT
        @@ -204,7 +198,7 @@
         environments.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         environments.*.workspace.current_user.short_name	string	INPUT
         environments.*.workspace.current_user.userName	string	INPUT
        -environments.*.workspace.experimental_is_unified_host	*bool	INPUT
        +environments.*.workspace.experimental_is_unified_host	bool	INPUT
         environments.*.workspace.file_path	string	INPUT
         environments.*.workspace.google_service_account	string	INPUT
         environments.*.workspace.host	string	INPUT
        @@ -217,19 +211,19 @@
         environments.*.workspace.workspace_id	string	INPUT
         experimental	*config.Experimental	INPUT
         experimental.deployment_history	*bool	INPUT
        -experimental.immutable_folder	*bool	INPUT
        +experimental.immutable_folder	bool	INPUT
         experimental.pydabs	config.PyDABs	INPUT
        -experimental.pydabs.enabled	*bool	INPUT
        +experimental.pydabs.enabled	bool	INPUT
         experimental.python	config.Python	INPUT
         experimental.python.mutators	[]string	INPUT
         experimental.python.mutators[*]	string	INPUT
         experimental.python.venv_path	string	INPUT
        -experimental.python_wheel_wrapper	*bool	INPUT
        +experimental.python_wheel_wrapper	bool	INPUT
         experimental.scripts	map[config.ScriptHook]config.Command	INPUT
         experimental.scripts.*	config.Command	INPUT
        -experimental.skip_artifact_cleanup	*bool	INPUT
        -experimental.skip_name_prefix_for_schema	*bool	INPUT
        -experimental.use_legacy_run_as	*bool	INPUT
        +experimental.skip_artifact_cleanup	bool	INPUT
        +experimental.skip_name_prefix_for_schema	bool	INPUT
        +experimental.use_legacy_run_as	bool	INPUT
         include	[]string	INPUT
         include[*]	string	INPUT
         permissions	[]resources.Permission	INPUT
        @@ -272,7 +259,7 @@
         targets.*.artifacts	config.Artifacts	INPUT
         targets.*.artifacts.*	*config.Artifact	INPUT
         targets.*.artifacts.*.build	string	INPUT
        -targets.*.artifacts.*.dynamic_version	*bool	INPUT
        +targets.*.artifacts.*.dynamic_version	bool	INPUT
         targets.*.artifacts.*.executable	exec.ExecutableType	INPUT
         targets.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         targets.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -292,11 +279,11 @@
         targets.*.bundle.databricks_cli_version	string	INPUT
         targets.*.bundle.deployment	config.Deployment	INPUT
         targets.*.bundle.deployment.deployment_id	string	INPUT
        -targets.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +targets.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         targets.*.bundle.deployment.latest_version_id	int	INPUT
         targets.*.bundle.deployment.lock	config.Lock	INPUT
         targets.*.bundle.deployment.lock.enabled	*bool	INPUT
        -targets.*.bundle.deployment.lock.force	*bool	INPUT
        +targets.*.bundle.deployment.lock.force	bool	INPUT
         targets.*.bundle.engine	engine.EngineType	INPUT
         targets.*.bundle.environment	string	INPUT
         targets.*.bundle.force	bool	INPUT
        @@ -314,7 +298,7 @@
         targets.*.bundle.uuid	string	INPUT
         targets.*.cluster_id	string	INPUT
         targets.*.compute_id	string	INPUT
        -targets.*.default	*bool	INPUT
        +targets.*.default	bool	INPUT
         targets.*.git	config.Git	INPUT
         targets.*.git.actual_branch	string	INPUT
         targets.*.git.branch	string	INPUT
        @@ -365,7 +349,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.*.sensitive	bool	INPUT
         targets.*.variables.*.type	variable.VariableType	INPUT
         targets.*.variables.*.value	any	INPUT
         targets.*.workspace	*config.Workspace	INPUT
        @@ -376,7 +360,7 @@
         targets.*.workspace.azure_environment	string	INPUT
         targets.*.workspace.azure_login_app_id	string	INPUT
         targets.*.workspace.azure_tenant_id	string	INPUT
        -targets.*.workspace.azure_use_msi	*bool	INPUT
        +targets.*.workspace.azure_use_msi	bool	INPUT
         targets.*.workspace.azure_workspace_resource_id	string	INPUT
         targets.*.workspace.client_id	string	INPUT
         targets.*.workspace.current_user	*config.User	INPUT
        @@ -421,7 +405,7 @@
         targets.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         targets.*.workspace.current_user.short_name	string	INPUT
         targets.*.workspace.current_user.userName	string	INPUT
        -targets.*.workspace.experimental_is_unified_host	*bool	INPUT
        +targets.*.workspace.experimental_is_unified_host	bool	INPUT
         targets.*.workspace.file_path	string	INPUT
         targets.*.workspace.google_service_account	string	INPUT
         targets.*.workspace.host	string	INPUT
        @@ -449,7 +433,7 @@
         variables.*.lookup.query	string	INPUT
         variables.*.lookup.service_principal	string	INPUT
         variables.*.lookup.warehouse	string	INPUT
... (64 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.25.0):

acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_branches.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true2645831111/001/output/postgres_branches.txt
        @@ -12,8 +12,8 @@
         resources.postgres_branches.*.name	string	REMOTE
         resources.postgres_branches.*.no_expiry	bool	ALL
         resources.postgres_branches.*.parent	string	ALL
        -resources.postgres_branches.*.purge_on_delete	*bool	INPUT	STATE
        -resources.postgres_branches.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_branches.*.purge_on_delete	bool	INPUT	STATE
        +resources.postgres_branches.*.replace_existing	bool	INPUT	STATE
         resources.postgres_branches.*.source_branch	string	ALL
         resources.postgres_branches.*.source_branch_lsn	string	ALL
         resources.postgres_branches.*.source_branch_time	*time.Time	ALL
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_databases.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true2645831111/001/output/postgres_databases.txt
        @@ -10,7 +10,7 @@
         resources.postgres_databases.*.name	string	REMOTE
         resources.postgres_databases.*.parent	string	ALL
         resources.postgres_databases.*.postgres_database	string	ALL
        -resources.postgres_databases.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_databases.*.replace_existing	bool	INPUT	STATE
         resources.postgres_databases.*.role	string	ALL
         resources.postgres_databases.*.status	*postgres.DatabaseDatabaseStatus	REMOTE
         resources.postgres_databases.*.status.database_id	string	REMOTE
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/postgres_roles.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true2645831111/001/output/postgres_roles.txt
        @@ -17,7 +17,7 @@
         resources.postgres_roles.*.name	string	REMOTE
         resources.postgres_roles.*.parent	string	ALL
         resources.postgres_roles.*.postgres_role	string	ALL
        -resources.postgres_roles.*.replace_existing	*bool	INPUT	STATE
        +resources.postgres_roles.*.replace_existing	bool	INPUT	STATE
         resources.postgres_roles.*.role_id	string	ALL
         resources.postgres_roles.*.status	*postgres.RoleRoleStatus	REMOTE
         resources.postgres_roles.*.status.attributes	*postgres.RoleAttributes	REMOTE
        
    acceptance_test.go:1345: Diff:
        --- bundle/refschema/output/root.txt
        +++ /tmp/TestAcceptbundlerefschemaDMS=true2645831111/001/output/root.txt
        @@ -9,7 +9,7 @@
         artifacts	config.Artifacts	INPUT
         artifacts.*	*config.Artifact	INPUT
         artifacts.*.build	string	INPUT
        -artifacts.*.dynamic_version	*bool	INPUT
        +artifacts.*.dynamic_version	bool	INPUT
         artifacts.*.executable	exec.ExecutableType	INPUT
         artifacts.*.files	[]config.ArtifactFile	INPUT
         artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -29,11 +29,11 @@
         bundle.databricks_cli_version	string	INPUT
         bundle.deployment	config.Deployment	INPUT
         bundle.deployment.deployment_id	string	INPUT
        -bundle.deployment.fail_on_active_runs	*bool	INPUT
        +bundle.deployment.fail_on_active_runs	bool	INPUT
         bundle.deployment.latest_version_id	int	INPUT
         bundle.deployment.lock	config.Lock	INPUT
         bundle.deployment.lock.enabled	*bool	INPUT
        -bundle.deployment.lock.force	*bool	INPUT
        +bundle.deployment.lock.force	bool	INPUT
         bundle.engine	engine.EngineType	INPUT
         bundle.environment	string	INPUT
         bundle.force	bool	INPUT
        @@ -55,7 +52,7 @@
         environments.*.artifacts	config.Artifacts	INPUT
         environments.*.artifacts.*	*config.Artifact	INPUT
         environments.*.artifacts.*.build	string	INPUT
        -environments.*.artifacts.*.dynamic_version	*bool	INPUT
        +environments.*.artifacts.*.dynamic_version	bool	INPUT
         environments.*.artifacts.*.executable	exec.ExecutableType	INPUT
         environments.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         environments.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -75,11 +72,11 @@
         environments.*.bundle.databricks_cli_version	string	INPUT
         environments.*.bundle.deployment	config.Deployment	INPUT
         environments.*.bundle.deployment.deployment_id	string	INPUT
        -environments.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +environments.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         environments.*.bundle.deployment.latest_version_id	int	INPUT
         environments.*.bundle.deployment.lock	config.Lock	INPUT
         environments.*.bundle.deployment.lock.enabled	*bool	INPUT
        -environments.*.bundle.deployment.lock.force	*bool	INPUT
        +environments.*.bundle.deployment.lock.force	bool	INPUT
         environments.*.bundle.engine	engine.EngineType	INPUT
         environments.*.bundle.environment	string	INPUT
         environments.*.bundle.force	bool	INPUT
        @@ -97,7 +91,7 @@
         environments.*.bundle.uuid	string	INPUT
         environments.*.cluster_id	string	INPUT
         environments.*.compute_id	string	INPUT
        -environments.*.default	*bool	INPUT
        +environments.*.default	bool	INPUT
         environments.*.git	config.Git	INPUT
         environments.*.git.actual_branch	string	INPUT
         environments.*.git.branch	string	INPUT
        @@ -148,7 +142,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.*.sensitive	bool	INPUT
         environments.*.variables.*.type	variable.VariableType	INPUT
         environments.*.variables.*.value	any	INPUT
         environments.*.workspace	*config.Workspace	INPUT
        @@ -159,7 +153,7 @@
         environments.*.workspace.azure_environment	string	INPUT
         environments.*.workspace.azure_login_app_id	string	INPUT
         environments.*.workspace.azure_tenant_id	string	INPUT
        -environments.*.workspace.azure_use_msi	*bool	INPUT
        +environments.*.workspace.azure_use_msi	bool	INPUT
         environments.*.workspace.azure_workspace_resource_id	string	INPUT
         environments.*.workspace.client_id	string	INPUT
         environments.*.workspace.current_user	*config.User	INPUT
        @@ -204,7 +198,7 @@
         environments.*.workspace.current_user.schemas[*]	iam.UserSchema	INPUT
         environments.*.workspace.current_user.short_name	string	INPUT
         environments.*.workspace.current_user.userName	string	INPUT
        -environments.*.workspace.experimental_is_unified_host	*bool	INPUT
        +environments.*.workspace.experimental_is_unified_host	bool	INPUT
         environments.*.workspace.file_path	string	INPUT
         environments.*.workspace.google_service_account	string	INPUT
         environments.*.workspace.host	string	INPUT
        @@ -217,19 +211,19 @@
         environments.*.workspace.workspace_id	string	INPUT
         experimental	*config.Experimental	INPUT
         experimental.deployment_history	*bool	INPUT
        -experimental.immutable_folder	*bool	INPUT
        +experimental.immutable_folder	bool	INPUT
         experimental.pydabs	config.PyDABs	INPUT
        -experimental.pydabs.enabled	*bool	INPUT
        +experimental.pydabs.enabled	bool	INPUT
         experimental.python	config.Python	INPUT
         experimental.python.mutators	[]string	INPUT
         experimental.python.mutators[*]	string	INPUT
         experimental.python.venv_path	string	INPUT
        -experimental.python_wheel_wrapper	*bool	INPUT
        +experimental.python_wheel_wrapper	bool	INPUT
         experimental.scripts	map[config.ScriptHook]config.Command	INPUT
         experimental.scripts.*	config.Command	INPUT
        -experimental.skip_artifact_cleanup	*bool	INPUT
        -experimental.skip_name_prefix_for_schema	*bool	INPUT
        -experimental.use_legacy_run_as	*bool	INPUT
        +experimental.skip_artifact_cleanup	bool	INPUT
        +experimental.skip_name_prefix_for_schema	bool	INPUT
        +experimental.use_legacy_run_as	bool	INPUT
         include	[]string	INPUT
         include[*]	string	INPUT
         permissions	[]resources.Permission	INPUT
        @@ -272,7 +259,7 @@
         targets.*.artifacts	config.Artifacts	INPUT
         targets.*.artifacts.*	*config.Artifact	INPUT
         targets.*.artifacts.*.build	string	INPUT
        -targets.*.artifacts.*.dynamic_version	*bool	INPUT
        +targets.*.artifacts.*.dynamic_version	bool	INPUT
         targets.*.artifacts.*.executable	exec.ExecutableType	INPUT
         targets.*.artifacts.*.files	[]config.ArtifactFile	INPUT
         targets.*.artifacts.*.files[*]	config.ArtifactFile	INPUT
        @@ -292,11 +279,11 @@
         targets.*.bundle.databricks_cli_version	string	INPUT
         targets.*.bundle.deployment	config.Deployment	INPUT
         targets.*.bundle.deployment.deployment_id	string	INPUT
        -targets.*.bundle.deployment.fail_on_active_runs	*bool	INPUT
        +targets.*.bundle.deployment.fail_on_active_runs	bool	INPUT
         targets.*.bundle.deployment.latest_version_id	int	INPUT
         targets.*.bundle.deployment.lock	config.Lock	INPUT
         targets.*.bundle.deployment.lock.enabled	*bool	INPUT
        -targets.*.bundle.deployment.lock.force	*bool	INPUT
        +targets.*.bundle.deployment.lock.force	bool	INPUT
         targets.*.bundle.engine	engine.EngineType	INPUT
         targets.*.bundle.environment	string	INPUT
         targets.*.bundle.force	bool	INPUT
        @@ -314,7 +298,7 @@
         targets.*.bundle.uuid	string	INPUT
         targets.*.cluster_id	string	INPUT
         targets.*.compute_id	string	INPUT
        -targets.*.default	*bool	INPUT
        +targets.*.default	bool	INPUT
         targets.*.git	config.Git	INPUT
         targets.*.git.actual_branch	string	INPUT
         targets.*.git.branch	string	INPUT
        @@ -365,7 +349,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.*.sensitive	bool	INPUT
         targets.*.variables.*.type	variable.VariableType	INPUT
         targets.*.variables.*.value	any	INPUT
         targets.*.workspace	*config.Workspace	INPUT
        @@ -376,7 +360,7 @@
         targets.*.workspace.azure_environment	string	INPUT
         targets.*.workspace.azure_login_app_id	string	INPUT
         targets.*.workspace.azure_tenant_id	string	INPUT
        -targets.*.workspace.azure_use_msi	*bool	INPUT
        +targets.*.workspace.azure_use_msi	bool	INPUT
         targets.*.workspace.azure_workspace_resource_id	string	INPUT
... (64 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)
TestAccept/bundle/validate/explicit_false/DMS=: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌

main (77950b6):

acceptance_test.go:1345: Diff:
        --- bundle/validate/explicit_false/output.txt
        +++ /tmp/TestAcceptbundlevalidateexplicit_falseDMS=2018230948/002/output.txt
        @@ -1,25 +1,27 @@
         
         >>> [CLI] bundle validate -o json
        +Error: cannot resolve bundle auth configuration: validate: more than one authorization method configured: azure and pat. Config: host=[DATABRICKS_URL], token=***, azure_use_msi=true, databricks_cli_path=[CLI]. Env: DATABRICKS_HOST, DATABRICKS_TOKEN, DATABRICKS_CLI_PATH
        +
         {
           "fail_on_active_runs": false,
        -  "lock_force": false,
        +  "lock_force": true,
           "workspace": {
        -    "azure_use_msi": false
        +    "azure_use_msi": true
           },
           "presets": {
             "artifacts_dynamic_version": false
           },
           "variables": {
             "plain": {
        -      "sensitive": false
        +      "sensitive": null
             }
           },
           "artifacts": {
             "overridden": {
        -      "dynamic_version": false
        +      "dynamic_version": true
             },
             "whl": {
        -      "dynamic_version": false
        +      "dynamic_version": null
             }
           },
           "resources": {
        @@ -36,12 +23,12 @@
             },
             "postgres_databases": {
               "db": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             },
             "postgres_endpoints": {
               "e": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             },
             "postgres_projects": {
        @@ -51,14 +34,11 @@
             },
             "postgres_roles": {
               "r": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             }
           },
        -  "experimental": {
        -    "python_wheel_wrapper": false,
        -    "skip_artifact_cleanup": false,
        -    "skip_name_prefix_for_schema": false,
        -    "use_legacy_run_as": false
        -  }
        +  "experimental": {}
         }
        +
        +Exit code: 1

latest (v1.25.0): same output as main (77950b6)

TestAccept/bundle/validate/explicit_false/DMS=true: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌

main (77950b6):

acceptance_test.go:1345: Diff:
        --- bundle/validate/explicit_false/output.txt
        +++ /tmp/TestAcceptbundlevalidateexplicit_falseDMS=true1678116427/002/output.txt
        @@ -1,25 +1,27 @@
         
         >>> [CLI] bundle validate -o json
        +Error: cannot resolve bundle auth configuration: validate: more than one authorization method configured: azure and pat. Config: host=[DATABRICKS_URL], token=***, azure_use_msi=true, databricks_cli_path=[CLI]. Env: DATABRICKS_HOST, DATABRICKS_TOKEN, DATABRICKS_CLI_PATH
        +
         {
           "fail_on_active_runs": false,
        -  "lock_force": false,
        +  "lock_force": true,
           "workspace": {
        -    "azure_use_msi": false
        +    "azure_use_msi": true
           },
           "presets": {
             "artifacts_dynamic_version": false
           },
           "variables": {
             "plain": {
        -      "sensitive": false
        +      "sensitive": null
             }
           },
           "artifacts": {
             "overridden": {
        -      "dynamic_version": false
        +      "dynamic_version": true
             },
             "whl": {
        -      "dynamic_version": false
        +      "dynamic_version": null
             }
           },
           "resources": {
        @@ -36,12 +23,12 @@
             },
             "postgres_databases": {
               "db": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             },
             "postgres_endpoints": {
               "e": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             },
             "postgres_projects": {
        @@ -51,14 +34,11 @@
             },
             "postgres_roles": {
               "r": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             }
           },
        -  "experimental": {
        -    "python_wheel_wrapper": false,
        -    "skip_artifact_cleanup": false,
        -    "skip_name_prefix_for_schema": false,
        -    "use_legacy_run_as": false
        -  }
        +  "experimental": {}
         }
        +
        +Exit code: 1
        
FAIL

latest (v1.25.0):

acceptance_test.go:1345: Diff:
        --- bundle/validate/explicit_false/output.txt
        +++ /tmp/TestAcceptbundlevalidateexplicit_falseDMS=true1585545558/002/output.txt
        @@ -1,25 +1,27 @@
         
         >>> [CLI] bundle validate -o json
        +Error: cannot resolve bundle auth configuration: validate: more than one authorization method configured: azure and pat. Config: host=[DATABRICKS_URL], token=***, azure_use_msi=true, databricks_cli_path=[CLI]. Env: DATABRICKS_HOST, DATABRICKS_TOKEN, DATABRICKS_CLI_PATH
        +
         {
           "fail_on_active_runs": false,
        -  "lock_force": false,
        +  "lock_force": true,
           "workspace": {
        -    "azure_use_msi": false
        +    "azure_use_msi": true
           },
           "presets": {
             "artifacts_dynamic_version": false
           },
           "variables": {
             "plain": {
        -      "sensitive": false
        +      "sensitive": null
             }
           },
           "artifacts": {
             "overridden": {
        -      "dynamic_version": false
        +      "dynamic_version": true
             },
             "whl": {
        -      "dynamic_version": false
        +      "dynamic_version": null
             }
           },
           "resources": {
        @@ -36,12 +23,12 @@
             },
             "postgres_databases": {
               "db": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             },
             "postgres_endpoints": {
               "e": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             },
             "postgres_projects": {
        @@ -51,14 +34,11 @@
             },
             "postgres_roles": {
               "r": {
        -        "replace_existing": false
        +        "replace_existing": true
               }
             }
           },
        -  "experimental": {
        -    "python_wheel_wrapper": false,
        -    "skip_artifact_cleanup": false,
        -    "skip_name_prefix_for_schema": false,
        -    "use_legacy_run_as": false
        -  }
        +  "experimental": {}
         }
        +
        +Exit code: 1

…overrides

TestConfigBoolsArePointers now fails for any bool field of a CLI-defined
config struct, not only omitempty ones in structs without ForceSendFields.
The fields that predate it are listed with the reason they stay bool, and
the test also fails if a listed field goes away.

The acceptance test now overrides lock.force and azure_use_msi from a
target too, and the changelog entry covers every affected field.

Co-authored-by: Isaac <no-reply@databricks.com>
@denik denik changed the title Fix targets not being able to set optional bundle bools to false Keep an explicit false on optional bundle config bools Nov 9, 2026
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: 9a113f7

Run: 42716510100

Env 🔄​flaky ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 271 17 4:02
✅​ aws-windows-latest-4core-16gb 273 15 3:17
✅​ azure linux-2core-8gb 270 17 4:01
✅​ azure-windows-latest-4core-16gb 272 15 3:16
✅​ gcp linux-2core-8gb 271 17 3:58
🔄​ gcp-windows-latest-4core-16gb 2 271 15 3:26
Test Name gcp-windows-latest-4core-16gb
🔄​ TestFilerReadDir 🔄​f
🔄​ TestFilerReadDir/dbfs 🔄​f
Top 3 slowest tests (at least 2 minutes):
duration env testname
3:11 aws-windows-latest-4core-16gb TestAccept
3:09 azure-windows-latest-4core-16gb TestAccept
3:08 gcp-windows-latest-4core-16gb TestAccept

replace_existing on postgres endpoints, databases and roles lost an explicit
false like the other plain bools did: their configs declare no
ForceSendFields. They become *bool.

replace_existing/purge_on_delete on postgres branches and purge_on_delete on
postgres projects kept it only through the ForceSendFields those configs
declared for these fields; bundle.deployment.fail_on_active_runs likewise
(#7117). They become *bool and those ForceSendFields go away; the postgres
configs keep their MarshalJSON/UnmarshalJSON, which exist because they embed
an SDK spec. The direct engine reads them when building the create and delete
requests, and RemapState leaves them unset.

Lifecycle, Presets and DashboardConfig keep their ForceSendFields: it covers
more than their bool (depends_on, the other presets, the dashboards API).

The acceptance test overrides every one of these fields from a target.

Co-authored-by: Isaac <no-reply@databricks.com>
@denik
denik marked this pull request as ready for review November 10, 2026 10:53
@denik
denik requested review from a team as code owners November 10, 2026 10:53
@denik
denik requested a review from janniklasrose November 10, 2026 10:53
@denik
denik enabled stacked auto-merge November 10, 2026 10:57

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 PyDABs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants