Skip to content

Detect notebooks with the workspace's first-line rule - #7290

Merged
Sankalp-Mittal merged 6 commits into
mainfrom
sankalp-mittal/notebook-deletion-badness
Nov 3, 2026
Merged

Sankalp-Mittal merged 6 commits into
mainfrom
sankalp-mittal/notebook-deletion-badness

Conversation

@Sankalp-Mittal

@Sankalp-Mittal Sankalp-Mittal commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Changes

libs/notebook now classifies a source file the way the workspace's import-file endpoint does (NotebookUtils.checkSourceFileNotebook in universe): a .py, .sql, .scala or .r file is a notebook when the first line of its leading 200 bytes contains Databricks notebook source. Previously the CLI required the first line to equal the language-specific header exactly, so a leading byte order mark, or a different comment prefix, made the CLI treat a file the workspace imports as a notebook as a plain file.

The CLI only uses this classification to predict the remote name the workspace will give a file: in the sync snapshot, translate_paths, deployment state and workspace import-dir. When the prediction disagrees with the server, the snapshot tracks bom.sql while the workspace stored notebook bom. Removing the file locally then deletes a path that doesn't exist, which sync tolerates, and the notebook is orphaned. This is the badness documented in #7247.

Why

Since #7218 the server classifies uploads again, so the CLI's local rule has to match the server's for the snapshot to address the right remote object.

Tests

  • bundle/sync/replace-node-type now also removes both local files and syncs again; both bom and plain.sql are deleted. Passes locally and on aws-cli in both DMS variants. On the real workspace the old code's bom.sql delete 404'd and left bom behind. Add acceptance coverage for BOM notebook deletion badness #7247 added this step with a Badness entry recording the orphaned notebook; this PR removes that entry and the "BUG" section title now that the step passes.
  • TestDetectBytes gains cases for the marker mid-line, another language's comment prefix, the marker on the second line, and the marker past the 200-byte buffer.
  • Unit tests pass for every consumer of libs/notebook: libs/sync, libs/fileset, libs/filer, bundle/config/mutator, bundle/deploy, bundle/generate, cmd/workspace/workspace.
  • Full local acceptance suite: 1491 of 1494 directories run. The only failures are the 25 Python wheel builds (templates/default-python/*, templates/pydabs/deploy-classic, artifacts/issue_3109, migrate/command/default-python), all because uv can't resolve hatchling through the internal proxy in my environment. CI covers them.

This pull request and its description were written by Isaac.

Sankalp-Mittal and others added 2 commits November 2, 2026 15:39
The CLI classifies a local source file as a notebook only to predict the
remote name the workspace will give it (sync snapshot, translate_paths,
deployment state, workspace import-dir). It required the first line to
equal the language-specific header exactly, while the import-file endpoint
only requires the first line of the leading 200 bytes to contain
"Databricks notebook source" (NotebookUtils.checkSourceFileNotebook).

A BOM-prefixed SQL notebook therefore landed as notebook "bom" while the
sync snapshot tracked "bom.sql"; removing it locally deleted a path that
did not exist and left the notebook behind. detectSource now applies the
server's rule.

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

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Commit: d8b0d6557 | Workflow run

Regression test report

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

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

test branch main (050b89d) latest (v1.23.0)
TestAccept/bundle/sync/replace-node-type/DMS= ✅ ❌ ❌
TestAccept/bundle/sync/replace-node-type/DMS=true ✅ ❌ ❌
TestAccept/bundle/sync/replace-node-type/DMS=: branch ✅ | main (050b89d) ❌ | latest (v1.23.0) ❌

main (050b89d):

acceptance_test.go:1342: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1342
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1083
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:660
        	Error:      	Not equal: 
        	            	expected: "\n=== A file holds the name of notebook bom.sql, a notebook holds the name of file plain.sql\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/bom.sql --file bom.sql --format RAW\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/plain --file plain.sql --format SOURCE --language SQL\n\n>>> list\nFILE bom.sql\nNOTEBOOK plain\n\n=== Sync replaces both\n\n>>> [CLI] bundle sync --output text\nAction: PUT: bom.sql, plain.sql\nInitial Sync Complete\nUploaded bom.sql\nUploaded plain.sql\n\n>>> list\nNOTEBOOK bom\nFILE plain.sql\n\n=== Remove both local files and sync again\n\n>>> [CLI] bundle sync --output text\nAction: DELETE: bom, plain.sql\nDeleted bom\nDeleted plain.sql\nInitial Sync Complete\n\n>>> list\n"
        	            	actual  : "\n=== A file holds the name of notebook bom.sql, a notebook holds the name of file plain.sql\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/bom.sql --file bom.sql --format RAW\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/plain --file plain.sql --format SOURCE --language SQL\n\n>>> list\nFILE bom.sql\nNOTEBOOK plain\n\n=== Sync replaces both\n\n>>> [CLI] bundle sync --output text\nAction: PUT: bom.sql, plain.sql\nInitial Sync Complete\nUploaded bom.sql\nUploaded plain.sql\n\n>>> list\nNOTEBOOK bom\nFILE plain.sql\n\n=== Remove both local files and sync again\n\n>>> [CLI] bundle sync --output text\nAction: DELETE: bom.sql, plain.sql\nDeleted bom.sql\nDeleted plain.sql\nInitial Sync Complete\n\n>>> list\nNOTEBOOK bom\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -26,4 +26,4 @@
        	            	 >>> [CLI] bundle sync --output text
        	            	-Action: DELETE: bom, plain.sql
        	            	-Deleted bom
        	            	+Action: DELETE: bom.sql, plain.sql
        	            	+Deleted bom.sql
        	            	 Deleted plain.sql
        	            	@@ -32,2 +32,3 @@
        	            	 >>> list
        	            	+NOTEBOOK bom
        	            	 
        	Test:       	TestAccept/bundle/sync/replace-node-type/DMS=
        	Messages:   	bundle/sync/replace-node-type/output.txt vs /tmp/TestAcceptbundlesyncreplace-node-typeDMS=3309595125/002/output.txt

latest (v1.23.0): same output as main (050b89d)

TestAccept/bundle/sync/replace-node-type/DMS=true: branch ✅ | main (050b89d) ❌ | latest (v1.23.0) ❌

main (050b89d):

acceptance_test.go:1342: 
        	Error Trace:	/home/runner/work/cli/cli/libs/testdiff/testdiff.go:22
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1342
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:1083
        	            				/home/runner/work/cli/cli/acceptance/acceptance_test.go:660
        	Error:      	Not equal: 
        	            	expected: "\n=== A file holds the name of notebook bom.sql, a notebook holds the name of file plain.sql\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/bom.sql --file bom.sql --format RAW\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/plain --file plain.sql --format SOURCE --language SQL\n\n>>> list\nFILE bom.sql\nNOTEBOOK plain\n\n=== Sync replaces both\n\n>>> [CLI] bundle sync --output text\nAction: PUT: bom.sql, plain.sql\nInitial Sync Complete\nUploaded bom.sql\nUploaded plain.sql\n\n>>> list\nNOTEBOOK bom\nFILE plain.sql\n\n=== Remove both local files and sync again\n\n>>> [CLI] bundle sync --output text\nAction: DELETE: bom, plain.sql\nDeleted bom\nDeleted plain.sql\nInitial Sync Complete\n\n>>> list\n"
        	            	actual  : "\n=== A file holds the name of notebook bom.sql, a notebook holds the name of file plain.sql\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/bom.sql --file bom.sql --format RAW\n\n>>> [CLI] workspace import /Workspace/Users/[USERNAME]/.bundle/replace-node-type-[UNIQUE_NAME]/default/files/plain --file plain.sql --format SOURCE --language SQL\n\n>>> list\nFILE bom.sql\nNOTEBOOK plain\n\n=== Sync replaces both\n\n>>> [CLI] bundle sync --output text\nAction: PUT: bom.sql, plain.sql\nInitial Sync Complete\nUploaded bom.sql\nUploaded plain.sql\n\n>>> list\nNOTEBOOK bom\nFILE plain.sql\n\n=== Remove both local files and sync again\n\n>>> [CLI] bundle sync --output text\nAction: DELETE: bom.sql, plain.sql\nDeleted bom.sql\nDeleted plain.sql\nInitial Sync Complete\n\n>>> list\nNOTEBOOK bom\n"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -26,4 +26,4 @@
        	            	 >>> [CLI] bundle sync --output text
        	            	-Action: DELETE: bom, plain.sql
        	            	-Deleted bom
        	            	+Action: DELETE: bom.sql, plain.sql
        	            	+Deleted bom.sql
        	            	 Deleted plain.sql
        	            	@@ -32,2 +32,3 @@
        	            	 >>> list
        	            	+NOTEBOOK bom
        	            	 
        	Test:       	TestAccept/bundle/sync/replace-node-type/DMS=true
        	Messages:   	bundle/sync/replace-node-type/output.txt vs /tmp/TestAcceptbundlesyncreplace-node-typeDMS=true244502815/002/output.txt
FAIL

latest (v1.23.0): same output as main (050b89d)

@eng-dev-ecosystem-bot

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

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: d8b0d65

Run: 41633244028

Env ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 284 15 8:50
✅​ aws-windows-latest-4core-16gb 286 13 5:38
✅​ azure linux-2core-8gb 283 15 8:27
✅​ azure-windows-latest-4core-16gb 285 13 6:31
✅​ gcp linux-2core-8gb 284 15 8:24
✅​ gcp-windows-latest-4core-16gb 286 13 4:30
Top 6 slowest tests (at least 2 minutes):
duration env testname
4:18 azure linux-2core-8gb TestAccept
4:12 gcp linux-2core-8gb TestAccept
4:10 aws linux-2core-8gb TestAccept
3:21 aws-windows-latest-4core-16gb TestAccept
3:11 gcp-windows-latest-4core-16gb TestAccept
3:08 azure-windows-latest-4core-16gb TestAccept

@Sankalp-Mittal
Sankalp-Mittal marked this pull request as ready for review November 2, 2026 16:15
@Sankalp-Mittal
Sankalp-Mittal requested review from a team as code owners November 2, 2026 16:15
Sankalp-Mittal and others added 4 commits November 3, 2026 11:57
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Resolves the replace-node-type conflict with #7247: keep the fixed deletion
output and drop the Badness entry, since this branch fixes the bug it recorded.

Co-authored-by: Isaac <no-reply@databricks.com>
@Sankalp-Mittal
Sankalp-Mittal added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 4b902e8 Nov 3, 2026
29 checks passed
@Sankalp-Mittal
Sankalp-Mittal deleted the sankalp-mittal/notebook-deletion-badness branch November 3, 2026 16:39
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 4b902e8

Run: 41676580311

Env ❌​FAIL 🤯​MISS 🔄​flaky ✅​pass 🙈​skip Time
❌​ aws linux-2core-8gb 64 216 1221 1233 355:58
❌​ aws-windows-latest-4core-16gb 58 155 1213 1258 349:13
🔄​ azure linux-2core-8gb 9 1337 1287 337:49
🔄​ azure-windows-latest-4core-16gb 14 1257 1312 340:06
🔄​ gcp linux-2core-8gb 6 1327 1292 355:40
❌​ gcp-windows-latest-4core-16gb 22 1236 1317 344:46
485 interesting tests: 339 MISS, 130 FAIL, 16 flaky
Test Name aws linux-2core-8gb aws-windows-latest-4core-16gb azure linux-2core-8gb azure-windows-latest-4core-16gb gcp linux-2core-8gb gcp-windows-latest-4core-16gb
❌​ TestAccept 🤯​M 🤯​M ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/apps/job_permissions ✅​p 🤯​M ✅​p ✅​p ✅​p ❌​F
🤯​ TestAccept/bundle/apps/job_permissions/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/apps/job_permissions/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ❌​F
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/debug/fetch-repository-info 🤯​M 🤯​M ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/debug/fetch-repository-info/DMS= 🤯​M 🤯​M ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/debug/fetch-repository-info/DMS=true 🤯​M 🤯​M ✅​p ✅​p ✅​p ❌​F
🤯​ TestAccept/bundle/deploy/empty-bundle ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/basic ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/basic/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/breakglass ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/breakglass/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/can-manage ✅​p 🤯​M ✅​p ✅​p 🙈​s 🙈​s
🤯​ TestAccept/bundle/deploy/immutable/can-manage/DMS= ✅​p 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/destroy-redeploy ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/destroy-redeploy/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/dev-mode ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/dev-mode/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/legacy-state ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/legacy-state/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/missing-snapshot ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/missing-snapshot/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/no-artifacts ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/no-artifacts/DMS=/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/no-artifacts/DMS=/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/permissions-change ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/permissions-change/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/select ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/immutable/select/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deploy/spark-jar-task ❌​F 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deploy/spark-jar-task/DMS= ❌​F 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/alert ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/alert/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/alert/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/catalog ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/catalog/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/catalog/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/DMS=/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/DMS=/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/DMS=true/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/DMS=true/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DMS=/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DMS=/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DMS=true/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DMS=true/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/registered-model ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/registered-model/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/registered-model/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/schema ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/schema/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/schema/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/secret-scope ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/secret-scope/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/secret-scope/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/volume ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/volume/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/volume/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/grants ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/grants/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/grants/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/root-path-name-target ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/root-path-name-target/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/root-path-name-target/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/root-path-not-scoped ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/root-path-not-scoped/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/root-path-not-scoped/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/sibling-target ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/sibling-target/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/sibling-target/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/declined-deploy ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/declined-deploy/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/depends-on ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/depends-on/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/deployment-metadata-change ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/deployment-metadata-change/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/existing-state ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/existing-state/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/multiple-resources ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/multiple-resources/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/no-drift ❌​F 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/no-drift/DMS=true ❌​F 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/no-resources ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/no-resources/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/provenance ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/provenance/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/record-failure ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/record-failure/DMS=true ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/stale-local-state ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/dms/stale-local-state/DMS= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/state-features ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/state-features/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/successful-recreate ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/successful-recreate/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/generate/auto-bind ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/generate/auto-bind/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/generate/pipeline_and_deploy ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/generate/pipeline_and_deploy/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/generate/python_job_and_deploy ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/generate/python_job_and_deploy/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
🔄​ TestAccept/bundle/invariant/destroy_idempotent ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
🔄​ TestAccept/bundle/invariant/destroy_idempotent/DMS=/INPUT_CONFIG=vector_search_endpoint.yml.tmpl/READPLAN= ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=catalog.yml.tmpl/READPLAN= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/python/mutator-permissions-owner-5682 ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/python/mutator-permissions-owner-5682/DMS=true/PYDAB_VERSION=0.266.0 ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/python/mutator-permissions-owner-5682/DMS=true/PYDAB_VERSION=current ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/catalogs/basic ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
Top 50 slowest tests (at least 2 minutes):
duration env testname
24:07 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
17:36 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
15:54 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
13:37 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=true
13:29 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
12:09 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=true
11:53 aws-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
11:24 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
11:05 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
10:52 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
10:39 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/resize-terminated-fallback/DMS=true
10:38 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
10:28 aws linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
10:14 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
9:52 aws-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:44 aws linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:33 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:09 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
9:02 aws linux-2core-8gb TestAccept/bundle/deploy/spark-jar-task/DMS=true
8:59 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
8:56 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
8:53 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
8:44 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
8:38 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=
8:33 aws-windows-latest-4core-16gb TestAccept/bundle/templates/default-python/combinations/serverless/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN=1
8:25 azure-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
8:24 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
8:23 aws-windows-latest-4core-16gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
8:23 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=true
8:20 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
8:18 aws-windows-latest-4core-16gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
8:16 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
8:08 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
8:07 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
8:07 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
7:58 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
7:46 aws linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
7:44 aws-windows-latest-4core-16gb TestAccept/bundle/templates/default-python/combinations/serverless/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN=1
7:40 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=
7:40 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=true
7:34 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
7:33 aws linux-2core-8gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1
7:23 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=true
7:21 aws linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=
7:16 azure linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
7:15 azure linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
7:14 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=true
7:13 aws-windows-latest-4core-16gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
7:10 azure-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
7:05 aws-windows-latest-4core-16gb TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
(327 table rows omitted to keep the report under 60000 bytes)

deco-sdk-tagging Bot added a commit that referenced this pull request Nov 4, 2026
## Release v1.24.0

### Notable Changes

 * A variable used as the value of a secret is now sensitive: referencing it from any other field, such as a job parameter or a secret's `comment`, is an error because the value would be used in plain text. Mark other secret-holding variables with `sensitive: true` to get the same protection. ([#7288](#7288))

### CLI

 * Fix `databricks auth login` and `databricks configure` overwriting the parent profile's host and token when saving a profile with a dotted name such as `team.prod` next to an existing `[team]`. ([#7266](#7266))
 * `databricks auth login` and `databricks auth token` now reject the name of an existing profile after "Create a new profile" instead of logging in to that profile. ([#7196](#7196))
 * `databricks auth login` and `databricks auth token` now reject a host that is not a URL with a hostname, such as `/`, `?o=123` or `https://`, instead of falling back to `DATABRICKS_HOST` or failing later. An empty host after "Enter a host URL manually" in the login profile picker no longer starts discovery login. ([#7195](#7195))
 * Prompts that validate their input, such as the `databricks configure` host prompt, no longer open with a red cross before anything is typed. ([#7314](#7314))
 * `databricks ssh connect` now documents `--environment-version` for choosing the serverless environment version, starts a separate default-named server for each version, and rejects the flag together with `--cluster`. Default connection names also include the environment version in their hash, so the default name when `--environment-version` is not specified changes with this release. Configuration associated with the old connection name (secret scope, SSH keys and known hosts in your local `.databricks` folder) will no longer be used and can be safely removed. ([#7310](#7310))

### AI Runtime

 * Show workspace-supported accelerator types in `databricks air run -h config.compute.accelerator_type`. ([#7275](#7275))
 * `air list` now reports `No active runs found.` for an empty active-only result. ([#7276](#7276))
 * Stop printing a retry notice on every `air run --watch`; retries are still reported when they happen. ([#7270](#7270))

### Bundles

 * Fix `bundle plan` reporting an update to an app's `config.env` values on every run, which also redeployed the app on every `bundle deploy`. The Apps API returns environment variable names only, so `value` and `value_from` are no longer compared against the remote deployment. ([#7326](#7326))
 * Add the `data_quality_monitors` resource for data quality monitors on Unity Catalog schemas and tables (direct engine only). ([#7094](#7094))
 * `bundle deploy` now asks for confirmation before recreating or deleting a Feature View, and `bundle deploy` and `bundle destroy` warn that FeatureSpecs using a Feature View are not checked. ([#7164](#7164))
 * Accept grant `privileges` values that the SDK enum does not list yet: `bundle validate` no longer warns (or errors under `--strict`) on them, and the PyDABs `Privilege` enum accepts unknown strings instead of raising. The JSON schema and PyDABs still advertise the known values for completion. ([#7315](#7315))
 * Add the `materialization_sets` resource, which materializes Feature Store Feature Views to offline and online stores. ([#7164](#7164))
 * Detect notebooks with the same rule as the workspace: a `.py`, `.sql`, `.scala` or `.r` file is a notebook when its first line contains `Databricks notebook source`, for example after a byte order mark. Previously such a file was tracked as a plain file, so removing it locally left the remote notebook behind. ([#7290](#7290))
 * Add `sensitive: true` for bundle variables. A variable used as the value of a secret is sensitive by default. `bundle validate -o json` redacts only sensitive variables instead of every string variable, and a sensitive variable can only be referenced from a sensitive resource field (such as a secret's `value`) or from another sensitive variable. ([#7288](#7288))

### Dependency Updates

 * Bump dependencies with known vulnerabilities. ([#7305](#7305))
 * Bump dependencies with known vulnerabilities. ([#7327](#7327))
 * Update the Go SDK to [v0.191.1](https://github.com/databricks/databricks-sdk-go/releases/tag/v0.191.1). ([#7277](#7277))
 * Update the Go SDK to [v0.193.0](https://github.com/databricks/databricks-sdk-go/releases/tag/v0.193.0). ([#7303](#7303))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DABs DABs related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants