Skip to content

direct: ignore remote-only changes on name-based ID fields#5599

Merged
denik merged 12 commits into
mainfrom
denik/named-id-fields
Jun 17, 2026
Merged

direct: ignore remote-only changes on name-based ID fields#5599
denik merged 12 commits into
mainfrom
denik/named-id-fields

Conversation

@denik

@denik denik commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

In #5531 we fixed spurious recreation of schemas/volumes due to backend lowercasing fields that are part of the id/name. This was fixed by making comparison for those fields case-insensitive.

This is more general fix for all resources that have ID fields configured in bundle config based on the following: if we can fetch the resource by ID, then even if fields come back changed, we should not recreate, because change can only be attributed to normalization, not replacement.

@denik denik force-pushed the denik/named-id-fields branch from de92903 to 380841e Compare June 14, 2026 22:26
@denik denik temporarily deployed to test-trigger-is June 14, 2026 22:26 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 14, 2026 22:26 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 14, 2026 22:50 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 14, 2026 22:50 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jun 14, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: ffb887f

Run: 27658827910

Env 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 7 15 264 994 5:44
💚​ aws windows 7 15 266 992 7:52
💚​ aws-ucws linux 7 15 360 908 6:26
💚​ aws-ucws windows 7 15 362 906 7:58
💚​ azure linux 1 17 267 992 5:29
💚​ azure windows 1 17 269 990 7:39
💚​ azure-ucws linux 1 17 365 904 6:42
🔄​ azure-ucws windows 1 1 17 366 902 9:49
💚​ gcp linux 1 17 263 995 5:48
💚​ gcp windows 1 17 265 993 8:54
23 interesting tests: 15 SKIP, 7 RECOVERED, 1 flaky
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/permissions 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions 💚​R 💚​R 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct 💚​R 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions 💚​R 💚​R 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct 💚​R 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/resources/postgres_branches/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/recreate 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/replace_existing 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/update_protected 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/without_branch_id 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_endpoints/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_endpoints/recreate 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_projects/update_display_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/synced_database_tables/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/grants/select 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🔄​ TestSyncIncrementalFileOverwritesFolder ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f ✅​p ✅​p
Top 25 slowest tests (at least 2 minutes):
duration env testname
4:18 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:08 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:05 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:00 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:34 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:26 azure-ucws windows TestAccept
3:23 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:14 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:09 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:04 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:01 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:57 aws windows TestAccept
2:55 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:51 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:47 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:47 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:43 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:42 azure windows TestAccept
2:41 gcp windows TestAccept
2:40 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:36 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:35 aws-ucws windows TestAccept
2:33 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:33 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:31 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

@denik denik force-pushed the denik/named-id-fields branch from 4f7b7ab to b99237b Compare June 15, 2026 13:43
@denik denik temporarily deployed to test-trigger-is June 15, 2026 13:43 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 13:43 — with GitHub Actions Inactive
@denik denik force-pushed the denik/named-id-fields branch from f99e1b4 to 042a58e Compare June 15, 2026 16:38
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:38 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:38 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:46 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:46 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:52 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:52 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:55 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 16:55 — with GitHub Actions Inactive
@denik denik requested review from janniklasrose and pietern June 15, 2026 17:44
@denik denik temporarily deployed to test-trigger-is June 15, 2026 18:10 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 18:10 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 18:33 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 15, 2026 18:33 — with GitHub Actions Inactive
}
}
for _, p := range a.resourceConfig.ProvidedIDFields {
if path.HasPatternPrefix(p.Field) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: why prefix and not exact match?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We always use prefix for declarative fields config. Does not matter for top level scalar fields of course.

func (a *Adapter) IsFieldInRecreateOnChanges(path *structpath.PathNode) bool {
// FieldTriggersRecreate reports whether a local change to the field forces a
// delete + create. Both recreate_on_changes and provided_id_fields do this, so a
// caller that knows the ID is preserved can conclude the field is unchanged.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sentence is hard to parse. How would a caller know the ID is preserved?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caller is bundle_plan.go which knows action

bundle/direct/bundle_plan.go:           if targetAction.KeepsID() {
bundle/direct/bundle_plan.go:   canReadRemoteCache := targetAction == deployplan.Skip || (targetAction.KeepsID() && adapter.FieldTriggersRecreate(fieldPath))

Comment thread bundle/direct/dresources/config.go Outdated
// A change is skipped when local and remote differ only by case.
NormalizeCase []FieldRule `yaml:"normalize_case,omitempty"`
// ProvidedIDFields: field patterns that compose the resource's ID — a name the
// user provides (not a server-generated id), which DoRead fetches by. Local

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: DoRead never fetches by these fields, only by the ID.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, it's not directly used right now. We typically use ID from the response even when we have it in request. I think we should change it and actually use ID from the config. But for now I'll fix the comment.

schemas:
recreate_on_changes:
provided_id_fields:
# UC lowercases identifier names; remote returns "myschema" for config "MySchema".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inline comment still relevant?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, it gives specific example why this matters.

denik added 4 commits June 16, 2026 18:04
Resources fetched by a name-based ID (schemas, volumes, registered models,
apps, secret scopes, postgres resources, etc.) cannot exhibit real remote
drift on the fields composing that ID: a successful get-by-ID means a
differing remote value can only be backend normalization (e.g. UC
lowercasing), since an out-of-band rename would 404 and is already handled
as resource-gone. Reacting with recreate or rename is therefore never
correct for remote-only diffs on these fields.

Encode this declaratively:
- named_id_fields: ID components; local changes recreate, remote-only
  diffs are skipped. Replaces their recreate_on_changes entries.
- update_id_on_local_changes (renamed from update_id_on_changes): same
  skip for remote-only diffs; local changes still rename via DoUpdateWithID.

normalize_case is unchanged: it covers local case-only edits, which the
get-by-ID argument does not, and which would otherwise recreate a resource
UC considers unchanged.

Co-authored-by: Isaac
Revert the cosmetic update_id_on_changes -> update_id_on_local_changes rename
to minimize the diff (catalogs, external_locations, volumes,
secret_scopes.permissions keep their existing key). The semantics shift is
explained in comments instead: update_id_on_changes now only governs local
changes, since remote-only diffs on these ID fields are skipped by
shouldSkipIDField.

Co-authored-by: Isaac
The fields hold a user-provided name that forms the resource ID (as opposed to
a server-generated id); "provided" makes clear why a remote-only difference can
only be backend normalization. Source-only rename; reason strings (id_field)
are unchanged.

Also regenerate volumes/uppercase-name/out.deploy.direct.txt, whose id_field
reasons were reverted to the stale uc_case by the rebase auto-merge.

Co-authored-by: Isaac
provided_id_fields already skips the remote-only diffs that normalize_case was
added for (the no-op-redeploy bug), so normalize_case only guarded a local
case-only edit — an untested corner, gated by the destructive-action prompt for
schemas/volumes, and inconsistent with the other provided_id_fields resources
that never had it. Remove the field, its shouldSkipNormalized branch, and the
schemas/volumes yaml blocks. normalize_slash is unaffected.

Also regenerate model_serving_endpoints/basic/out.second-plan.direct.json
(immutable -> id_field), a cloud-only golden carrying the reason change from
moving name to provided_id_fields; local task test skips it, so CI integration
caught it.

Co-authored-by: Isaac
denik added 8 commits June 16, 2026 18:04
The method now also covers provided_id_fields (both categories recreate on a
local change), so the recreate_on_changes-specific name was inaccurate.

Co-authored-by: Isaac
The provided_id_fields / update_id_on_changes logic was split across
shouldSkipIDField (remote-only -> skip) and shouldUpdateOrRecreate (local ->
recreate/rename), so correctness depended on the first running before the second
in the ladder. Fold both into classifyIDField, which decides skip vs
recreate/UpdateWithID in one place from Old==New. The leftover
shouldUpdateOrRecreate then only matched recreate_on_changes, so inline it as a
direct findMatchingRule call (cfg is never nil here). Pure refactor; no behavior
or golden changes.

Co-authored-by: Isaac
recreate_on_changes, provided_id_fields, and update_id_on_changes each decide a
field's action, and classifyIDField runs before recreate_on_changes in the
ladder, so a field in more than one would have dead entries and the categories
disagree on remote-only diffs. Add a test that a field appears in at most one.

Co-authored-by: Isaac
Pairs with provided_id_fields: both compose the resource's user-provided ID and
are handled by classifyIDField (remote-only diffs skipped), differing only in the
local-change action — provided_id_fields recreates, updatable_id_fields renames
via UpdateWithID. The *_id_fields naming makes the family explicit and is more
accurate than "update_id_on_changes", which post-refactor also governs the
remote-only skip. Source-only; the per-field reason (id_changes) is unchanged so
no golden churn.

Co-authored-by: Isaac
Co-authored-by: Isaac
Co-authored-by: Isaac
The comment said DoRead fetches by these config fields. It actually fetches by
the ID recorded in state (the value the backend returned, e.g. a lowercased
full_name). Clarify that the get-by-ID invariant rests on the stored ID, not the
config fields: the resource is found at its ID, so a remote-only difference is
backend normalization, and a real rename changes the ID and 404s.

Co-authored-by: Isaac
@denik denik force-pushed the denik/named-id-fields branch from 66684c6 to ffb887f Compare June 17, 2026 01:06
@denik denik temporarily deployed to test-trigger-is June 17, 2026 01:07 — with GitHub Actions Inactive
@denik denik temporarily deployed to test-trigger-is June 17, 2026 01:07 — with GitHub Actions Inactive
@denik denik enabled auto-merge June 17, 2026 01:08
@denik denik added this pull request to the merge queue Jun 17, 2026
Merged via the queue into main with commit a4a2560 Jun 17, 2026
23 checks passed
@denik denik deleted the denik/named-id-fields branch June 17, 2026 02:00
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: a4a2560

Run: 27660772303

Env 💥​PANIC ❌​FAIL 🟨​KNOWN 🤯​MISS 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 7 15 545 927 77:24
💥​ aws-ucws linux 1 16 1 153 36 2 773 747 120:00
❌​ azure linux 19 1 17 535 923 73:40
❌​ azure-ucws linux 8 1 8 6 12 885 761 226:06
❌​ gcp linux 2 1 4 17 530 931 200:51
232 interesting tests: 152 MISS, 35 FAIL, 32 RECOVERED, 8 flaky, 2 KNOWN, 2 SKIP, 1 PANIC
Test Name aws linux aws-ucws linux azure linux azure-ucws linux gcp linux
🟨​ TestAccept 💚​R 🤯​M 🟨​K 🟨​K 🟨​K
🤯​ TestAccept/bundle/apps/job_permissions 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/formatting_preserved ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_fields 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_files ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_json ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_no_changes ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/pipeline_fields 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/resolve_variables 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/config-remote-sync/target_override ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/task_rename_revert ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/task_rename_revert/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/task_rename_revert/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/snapshot-comparison ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/snapshot-comparison/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/catalog 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/catalog/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/cluster/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/experiment/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-abort-bind/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/job/job-spark-python-task/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/model-serving-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/bind/registered-model 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/registered-model/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/registered-model/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/schema 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/secret-scope 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/vector_search_endpoint/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/vector_search_index 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/vector_search_index/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/volume 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/unbind/grants 🙈​s 🤯​M 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/deployment/unbind/grants/DATABRICKS_BUNDLE_ENGINE=direct 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/unbind/grants/DATABRICKS_BUNDLE_ENGINE=terraform 🤯​M ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deployment/unbind/permissions/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/alert ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/alert/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/alert/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/auto-bind ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/auto-bind/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/pipeline_and_deploy ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/pipeline_and_deploy/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/pipeline_and_deploy/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/python_job_and_deploy ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/python_job_and_deploy/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/generate/python_job_and_deploy/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/base ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/custom_params ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/interactive_cluster ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct ✅​p 🤯​M ✅​p ✅​p ✅​p
💥​ TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p 💥​P ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER ✅​p 🤯​M ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/continue_293 🙈​s ❌​F 🙈​s ✅​p 🙈​s
❌​ TestAccept/bundle/invariant/continue_293/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl ❌​F ✅​p
💚​ TestAccept/bundle/invariant/no_drift 🙈​S 💚​R 🙈​S 💚​R 🙈​S
💚​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl 💚​R 💚​R
🔄​ TestAccept/bundle/resources/clusters/lifecycle-started ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ✅​p ✅​p 🔄​f
❌​ TestAccept/bundle/resources/dashboards/change-name ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ❌​F ✅​p ✅​p
🙈​ TestAccept/bundle/resources/permissions 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
❌​ TestAccept/bundle/resources/permissions/jobs/current_can_manage_run ✅​p ✅​p ❌​F ✅​p 🙈​s
❌​ TestAccept/bundle/resources/permissions/jobs/current_can_manage_run/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p ❌​F ✅​p
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions 💚​R 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct 💚​R 💚​R
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R 💚​R
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions 💚​R 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct 💚​R 💚​R
💚​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R 💚​R
❌​ TestAccept/bundle/resources/pipelines/allow-duplicate-names ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/allow-duplicate-names/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/allow-duplicate-names/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/auto-approve ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/auto-approve/DATABRICKS_BUNDLE_ENGINE=terraform ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/lakeflow-pipeline ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/lakeflow-pipeline/DATABRICKS_BUNDLE_ENGINE=direct ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/pipelines/recreate 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/resources/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=terraform ❌​F ❌​F
💚​ TestAccept/bundle/resources/postgres_branches/basic 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=direct 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/recreate 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=direct 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/replace_existing 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_branches/replace_existing/DATABRICKS_BUNDLE_ENGINE=direct 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/replace_existing/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/update_protected 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=direct 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/without_branch_id 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=direct 💚​R
💚​ TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
💚​ TestAccept/bundle/resources/postgres_endpoints/basic 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
💚​ TestAccept/bundle/resources/postgres_endpoints/recreate 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_endpoints/recreate/DATABRICKS_BUNDLE_ENGINE=direct 💚​R
💚​ TestAccept/bundle/resources/postgres_projects/update_display_name 🙈​S 💚​R 🙈​S 🙈​S 🙈​S
💚​ TestAccept/bundle/resources/postgres_projects/update_display_name/DATABRICKS_BUNDLE_ENGINE=terraform 💚​R
❌​ TestAccept/bundle/resources/schemas/auto-approve 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/resources/schemas/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct ❌​F ❌​F
Top 50 slowest tests (at least 2 minutes):
duration env testname
30:04 aws-ucws linux TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
24:48 aws-ucws linux TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
23:43 aws-ucws linux TestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
23:43 gcp linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
22:42 aws-ucws linux TestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
20:32 azure-ucws linux TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
16:35 azure-ucws linux TestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
15:32 aws linux TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
15:20 aws-ucws linux TestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
15:06 gcp linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
14:54 azure-ucws linux TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
14:54 azure-ucws linux TestAccept/bundle/invariant/continue_293/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
14:29 azure-ucws linux TestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
13:45 aws-ucws linux TestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
12:52 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
12:33 aws linux TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
12:13 aws linux TestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=terraform
11:57 azure linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
11:54 gcp linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
11:50 aws-ucws linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
10:31 aws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
10:19 aws linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:17 aws linux TestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=direct
9:49 aws-ucws linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
9:24 azure-ucws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:13 gcp linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
9:12 azure-ucws linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
9:09 gcp linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
8:31 gcp linux TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
8:29 azure linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
8:29 gcp linux TestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
8:13 aws linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:12 aws linux TestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
8:05 aws-ucws linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:02 gcp linux TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:58 aws linux TestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
7:51 gcp linux TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
7:46 aws-ucws linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:36 aws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:36 azure linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:33 aws-ucws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:31 azure-ucws linux TestAccept/bundle/resources/sql_warehouses/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
7:26 gcp linux TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:22 aws linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:22 azure-ucws linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:20 aws linux TestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:16 aws linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:09 gcp linux TestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
6:59 gcp linux TestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
6:54 gcp linux TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
(29 table rows omitted to keep the report under 60000 bytes)

pietern added a commit that referenced this pull request Jun 17, 2026
Only NEXT_CHANGELOG.md conflicted (kept the postgres_databases entry alongside
main's #5599 entry). main's #5599 added provided_id_fields/updatable_id_fields
for name-based IDs to schemas/volumes only — postgres resources keep
recreate_on_changes, so no realignment was needed. Generated schema artifacts
(#5611 codegen change) are consistent; regeneration produced no drift.

Co-authored-by: Isaac
deco-sdk-tagging Bot added a commit that referenced this pull request Jun 17, 2026
## Release v1.4.0

### CLI
* Improved error messages for `ssh connect`: when an SSH connection attempt fails, the client now fetches and prints the server's recent error logs ([#5555](#5555)).
* Increase the SSH server startup timeout from 10 to 45 minutes when a GPU accelerator is requested via `databricks ssh connect --accelerator` ([#5569](#5569)).
* Fix authentication falling back to the default profile in `.databrickscfg` when a host is already configured via the environment (e.g. `DATABRICKS_HOST` with `DATABRICKS_TOKEN`) ([#5616](#5616)).
* ssh: fix opening remote environment in Cursor, which previously hung on default-extension install and never opened the editor ([#5619](#5619)).
* Improve the error shown when `databricks labs install` cannot find a project's `labs.yml`: the message now explains that either the requested version does not exist or the project is not installable with the CLI, and links to the repository ([#5559](#5559)).

### Bundles
* Remove API enum values and types that are still in development from the `databricks-bundles` Python package; these were never accepted by the backend ([#5484](#5484)).
* direct: Fix resolving a resource reference that is used more than once within the same field ([#5558](#5558)).
* Bundle variable references now accept Unicode letters in path segments (e.g. `${var.变量}`). ([#5532](#5532))
* Ignore remote changes for vector search direct_access_index_spec.schema_json to prevent drift when the backend normalizes the schema ([#5481](#5481)).
* Remove hidden, never-functional `--existing-dashboard-id`, `--existing-dashboard-path`, `--existing-alert-id`, and `--existing-genie-space-id` alias flags from `bundle generate`; use the documented `--existing-id` / `--existing-path` flags instead ([#5591](#5591)).
* engine/direct: Fix WAL corruption after two consecutive failed deploys ([#5606](#5606)).
* engine/direct: Don't open the deployment state WAL when a deploy's plan fails ([#5607](#5607)).
* Ignore unity catalog managed schema property defaults to avoid unnecessary drift ([#5195](#5195)).
* Add `postgres_roles` and `postgres_databases` resources to create Postgres roles and databases on a Lakebase branch ([#5467](#5467), [#5627](#5627)).
* direct: Stop spurious recreate/rename on redeploy when the backend normalizes a resource's name-based ID (e.g. Unity Catalog lowercasing a schema or volume name) ([#5599](#5599)).
* Fix the generated pipeline README to suggest `databricks bundle run <pipeline> --refresh <table>` for running a single transformation; the previously documented `--select` flag is not supported by `bundle run` ([#5252](#5252)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants