Skip to content

Auto-publish PyDABs reference docs to gh-pages on release - #6729

Merged
Sankalp-Mittal merged 7 commits into
sankalp-mittal/automate-pydabs-docsfrom
sankalp-mittal/pydabs-docs-gitworkflow
Sep 23, 2026
Merged

Sankalp-Mittal merged 7 commits into
sankalp-mittal/automate-pydabs-docsfrom
sankalp-mittal/pydabs-docs-gitworkflow

Conversation

@Sankalp-Mittal

@Sankalp-Mittal Sankalp-Mittal commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Stack

Changes

Two related pieces of the PyDABs docs pipeline:

1. Auto-publish the docs to gh-pages on release. A new update-pydabs-docs GitHub Actions workflow rebuilds the PyDABs Python reference docs and publishes the HTML to the gh-pages branch on every release tag (and on demand via workflow_dispatch), replacing the manual copy that had left https://databricks.github.io/cli/python/ stale (5 pages vs. the 32 the build now emits). Modeled on update-schema-docs.yml:

  • Trigger: push tags v[0-9]+.[0-9]+.[0-9]+* + workflow_dispatch.
  • Permissions: contents: write, id-token: write (setup-jfrog GOPROXY exchange).
  • Checkout main, set up JFrog / Go / uv, then git worktree add origin/gh-pages.
  • Build with go tool -modfile=tools/task/go.mod task pydabs-docs.
  • Refresh only the gh-pages python/ directory wholesale from python/docs/_output/, so a dropped resource loses its page; top-level .nojekyll, index.html, and experimental/ are untouched.
  • Commit as github-actions[bot] and push directly to gh-pages, no-op when there is no diff.

2. Make the docs build strict (-W). Add -W to the pydabs-docs sphinx-build command so warnings — e.g. malformed upstream descriptions or unresolved cross-references introduced by an SDK bump — fail the build instead of passing silently. This makes both the existing python_docs CI job (every PR, including SDK bumps) and the new publish workflow strict, surfacing docs breakage at bump time. Fixes the one pre-existing warning this exposes: the Resources docstring referenced add_job with :meth:, but add_job is a generated method Sphinx cannot resolve — changed to an inline literal.

Stacked on top of #6727, so the strict build already includes its generated pages and the override for malformed upstream descriptions.

Tests

From repo root, ./task pydabs-codegen then ./task pydabs-docs both exit 0 under -W (the add_job fix + #6727's override clear the only warnings). YAML validated locally.

This pull request and its description were written by Isaac.

Add an update-pydabs-docs workflow that rebuilds the PyDABs Python
reference docs and publishes the HTML to the gh-pages branch on each
release tag (and via workflow_dispatch), replacing the manual copy.
Modeled on update-schema-docs.yml: same runner group, JFrog/Go/uv
setup, and gh-pages worktree + github-actions[bot] commit + direct
push pattern.

Co-authored-by: Isaac <no-reply@databricks.com>
@Sankalp-Mittal
Sankalp-Mittal added this pull request to stack #6730 September 17, 2026 10:08
@Sankalp-Mittal Sankalp-Mittal changed the title sankalp mittal/pydabs docs gitworkflow Auto-publish PyDABs reference docs to gh-pages on release Sep 17, 2026
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 4db1247

Run: 35596482270

Env ✅​pass 🙈​skip Time
✅​ aws linux 276 15 5:42
✅​ aws windows 278 13 4:05
✅​ azure linux 275 15 5:46
✅​ azure windows 277 13 4:22
✅​ gcp linux 276 15 5:28
✅​ gcp windows 278 13 4:07
Top 6 slowest tests (at least 2 minutes):
duration env testname
3:58 azure linux TestAccept
3:58 aws linux TestAccept
3:54 gcp linux TestAccept
3:43 azure windows TestAccept
2:28 aws windows TestAccept
2:05 gcp windows TestAccept

@Sankalp-Mittal
Sankalp-Mittal marked this pull request as ready for review September 17, 2026 10:43
@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Waiting for approval

Based on git history, these people are best suited to review:

  • @janniklasrose -- recent work in .github/workflows/
  • @pietern -- recent work in .github/workflows/, python/
  • @denik -- recent work in .github/workflows/, python/

Eligible reviewers: @andrewnester, @anton-107, @lennartkats-db, @rclarey, @renaudhartert-db, @rugpanov, @shreyas-goenka, @simonfaltum

Suggestions based on git history. See OWNERS for ownership rules.

Sankalp-Mittal and others added 2 commits September 17, 2026 15:11
…ocs' into sankalp-mittal/pydabs-docs-gitworkflow
Add -W to the pydabs-docs sphinx-build command so warnings (e.g.
malformed upstream descriptions or unresolved cross-references
introduced by an SDK bump) fail the build instead of passing
silently. This makes both the existing python_docs CI job and the
new gh-pages publish workflow strict, surfacing docs breakage at
bump time.

Fix the one pre-existing warning this exposes: the Resources
docstring referenced add_job with :meth:, but add_job is a generated
method Sphinx cannot resolve. Use an inline literal instead.

Co-authored-by: Isaac <no-reply@databricks.com>
Refer to the generated per-resource adders as ``add_<resource>`` rather
than singling out add_job, which was only an example among add_cluster,
add_app, etc.

Co-authored-by: Isaac <no-reply@databricks.com>
Comment thread .github/workflows/update-pydabs-docs.yml Outdated
- name: Setup JFrog
uses: ./.github/actions/setup-jfrog

- name: Setup Go

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

do we need go here? you can just call uv and then we also don't need jfrog

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 can run uv here but then this would be a secondary source of truth for the flags, the first one being in the Taskfile, over time I think that could cause divergence

Comment thread .github/workflows/update-pydabs-docs.yml Outdated
Comment thread python/Taskfile.yml
- docs/_output/**
cmds:
- "uv run --python 3.12 sphinx-build docs docs/_output --show-traceback --nitpicky --fresh-env --keep-going"
- "uv run --python 3.12 sphinx-build docs docs/_output --show-traceback --nitpicky --fresh-env --keep-going -W"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this will fail .github/workflows/python_push.yml on PRs and main (which is a good signal to gain) - could you please double check?

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.

Since this PR is based on the PR in which I updated the docs, so this passes on CI here

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean it will fail main, I meant to please check that python_push does run on PRs and on main (so if e.g. SDK bump brings in a breaking change, we get a failed CI run).

Checked this run and yes it does run.

Comment on lines +9 to +12
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+*"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

what if this workflow fails, will it be retried? How will we know docs aren't updated?

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.

it won't be autoretried (can be done manually), if the docs aren't updated (push to gh-docs fails) this should fail, and if the docs itself on main are not updated (shouldn't happen as check on each PR) then the stale content is published. But this shouldn't happen as all PR merged would have to check for the updated docs

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

workflows can fail for all sorts of reasons (timeouts, etc). this workflow is not self-healing though, only runs once per release and if it fails we don't know. maybe you can make this a step in the release runbook for on-call to check that docs got updated?

Comment thread .github/workflows/update-pydabs-docs.yml Outdated
Sankalp-Mittal and others added 3 commits September 21, 2026 10:59
Align with the release-* workflow family that runs post-release, and
update the internal name: to match.

Co-authored-by: Isaac <no-reply@databricks.com>
PyDABs doc generation is a lightweight Sphinx build, so the -large
protected runner is overkill. Drop to the standard protected runner
(matching tagging.yml, which is also tag-triggered and pushes to the
repo).

Co-authored-by: Isaac <no-reply@databricks.com>
Full history is not needed: the build reads only the current main tree,
and the release-tag lookup uses tag refs (fetch-tags), not file content
at historical tags. Full history was inherited from update-schema-docs,
whose since_version.go reads `git show <tag>:...` per release.

Co-authored-by: Isaac <no-reply@databricks.com>
Comment thread python/Taskfile.yml
- docs/_output/**
cmds:
- "uv run --python 3.12 sphinx-build docs docs/_output --show-traceback --nitpicky --fresh-env --keep-going"
- "uv run --python 3.12 sphinx-build docs docs/_output --show-traceback --nitpicky --fresh-env --keep-going -W"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean it will fail main, I meant to please check that python_push does run on PRs and on main (so if e.g. SDK bump brings in a breaking change, we get a failed CI run).

Checked this run and yes it does run.

Comment on lines +9 to +12
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+*"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

workflows can fail for all sorts of reasons (timeouts, etc). this workflow is not self-healing though, only runs once per release and if it fails we don't know. maybe you can make this a step in the release runbook for on-call to check that docs got updated?

@Sankalp-Mittal
Sankalp-Mittal added this pull request to the merge queue Sep 23, 2026
An error occurred while trying to automatically change base from sankalp-mittal/automate-pydabs-docs to main September 23, 2026 09:28
Merged via the queue into main with commit c4b2348 Sep 23, 2026
32 checks passed
@Sankalp-Mittal
Sankalp-Mittal deleted the sankalp-mittal/pydabs-docs-gitworkflow branch September 23, 2026 09:29
deelaka pushed a commit to deelaka/databricks-cli that referenced this pull request Sep 23, 2026
…s#6727)

## Stack

- databricks#6727 — generate the PyDABs `.rst` doc pages from the generated
modules (base) ← **this PR**
- databricks#6729 — publish the built HTML to `gh-pages` + make the docs build
strict

## Why

The PyDABs Python reference docs
(https://databricks.github.io/cli/python/) went stale. Codegen now emits
**31** resource modules under `python/databricks/bundles/*/`, but the
Sphinx `.rst` pages were hand-written and listed only 5 (`core`, `jobs`,
`pipelines`, `schemas`, `volumes`).

## What

Generate the per-resource `.rst` pages and the `index.rst` toctree
inside `pydabs-codegen`:

- New `python/codegen/codegen/generated_docs.py` — `write_docs()` scans
the generated `databricks/bundles/*/` package dirs (decoupled from
`RESOURCE_NAMESPACE`, robust to future renames), writes one page per
resource, and regenerates the `index.rst` toctree. Called from `main.py`
after the existing generation.
- Stale generated pages are removed on each run so a dropped resource
loses its page.
- `core.rst` stays hand-written. The 4 previously hand-written resource
pages (`jobs`, `pipelines`, `schemas`, `volumes`) regenerate
**byte-identical** — no diff. `index.rst`'s prose header is preserved
verbatim; only its toctree grows.
- Acronym titles (`SQL Warehouses`, `MCP Services`) handled via a small
override map.
- The doc structure lives in `doc_page.rst.tmpl` and
`doc_index.rst.tmpl` (loaded via `string.Template`, like the existing
`*.py.tmpl` codegen templates) so it can be reviewed separately from the
generation code.
- `python/Taskfile.yml`: added the generated doc outputs to the task's
`generates:` list.

Also fold in a related fix surfaced in review: some upstream API
descriptions aren't valid reStructuredText and break the Sphinx build
(e.g. `sql.SpotInstancePolicy`, whose comment is a hard-wrapped ASCII
grid table docutils rejects as malformed).

- New burn-down override list `jsonschema_patch.override_descriptions`
rewrites such descriptions into valid RST until the proto comment is
fixed upstream (see
`sqlgateway/scheduler/api/proto/endpoint_common.proto`). The override
raises if it becomes a no-op, flagging entries to remove once upstream
lands.
- The strict `-W` docs gate that surfaces any *new* such breakage (at
PR/SDK-bump time) lands in databricks#6729.

CI's `generate-check` + `git diff --exit-code` now enforces the
documented resource list can never drift from the generated modules.

## Testing

- `./task pydabs-codegen` — regenerates code + 31 `.rst` pages +
`index.rst`; the 4 existing pages show no diff; idempotent on re-run.
- `./task pydabs-docs` — Sphinx build succeeds and now emits all 32
`databricks.bundles.*.html` pages; the `sql_warehouses` page renders a
proper table instead of the malformed one.

This pull request and its description were written by Isaac.

---------

Co-authored-by: Isaac <no-reply@databricks.com>
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: c4b2348

Run: 35843245289

Env ❌​FAIL 🤯​MISS ✅​pass 🙈​skip Time
❌​ aws linux 121 1545 1084 320:35
❌​ aws windows 97 48 1424 1107 345:34
❌​ azure linux 117 1358 1135 297:43
❌​ azure windows 97 1279 1160 327:12
❌​ gcp linux 119 1342 1139 302:38
❌​ gcp windows 101 1261 1164 322:49
173 interesting tests: 127 FAIL, 46 MISS
Test Name aws linux aws windows azure linux azure windows gcp linux gcp windows
❌​ TestAccept ❌​F 🤯​M ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/cli_defaults ❌​F 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/job_pipeline_task ❌​F 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/pipeline_fields ❌​F 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/resolve_variables ❌​F 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/skip_deployment ❌​F 🙈​s ❌​F 🙈​s ❌​F 🙈​s
❌​ TestAccept/bundle/config-remote-sync/skip_deployment/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/skip_deployment/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/config-remote-sync/skip_deployment/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/deployment/bind/pipelines/recreate ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/destroy/jobs-and-pipeline ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/dms/no-drift ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/dms/no-drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/continue_293 ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/continue_293/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=schema_empty_grants.yml.tmpl ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent ✅​p ✅​p ✅​p ✅​p ❌​F ❌​F
❌​ TestAccept/bundle/invariant/destroy_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/invariant/destroy_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_permission_ref.yml.tmpl/READPLAN= ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/invariant/migrate ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/migrate/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline.yml.tmpl ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/migrate/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_allow_duplicate_names.yml.tmpl ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/migrate/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/migrate/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_config_dots.yml.tmpl ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift ❌​F 🤯​M ❌​F ❌​F ❌​F ❌​F
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=app.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=catalog.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=catalog.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_policy.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_policy.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=dashboard.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=dashboard.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=experiment.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=experiment.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=genie_space.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=instance_pool.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=instance_pool.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_apply_policy_default_values_for_each_task.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_apply_policy_default_values_job_cluster.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_apply_policy_default_values_task_cluster.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_pydabs_1000_tasks.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=job_pydabs_10_tasks.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_allow_duplicate_names.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_allow_duplicate_names.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=volume_uppercase_name.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=app.yml.tmpl/READPLAN= ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=app.yml.tmpl/READPLAN=1 ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline_allow_duplicate_names.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline_allow_duplicate_names.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline_apply_policy_default_values.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=pipeline_config_dots.yml.tmpl/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/dashboards/change-name ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/pipelines/auto-approve ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/auto-approve/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/cluster_policy ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/cluster_policy/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/cluster_policy/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/recreate ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_synced_tables/recreate ❌​F ❌​F 🙈​s 🙈​s 🙈​s 🙈​s
❌​ TestAccept/bundle/resources/postgres_synced_tables/recreate/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ✅​p
❌​ TestAccept/bundle/resources/postgres_synced_tables/recreate/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ✅​p ❌​F
❌​ TestAccept/bundle/resources/schemas/auto-approve ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/schemas/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/schemas/auto-approve/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/schemas/auto-approve/DATABRICKS_BUNDLE_ENGINE=terraform/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=direct/DLT=yes/DMS=/NBOOK=yes/PY=yes/READPLAN=1 ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=no/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=no/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=no/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_BUNDLE_ENGINE=terraform/DLT=yes/DMS=/NBOOK=yes/PY=yes/READPLAN= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
🤯​ TestCIUniqueName ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestDbrAcceptance 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🙈​s
🤯​ TestInprocessMode 🙈​s 🤯​M 🙈​s 🙈​s 🙈​s 🙈​s
🤯​ TestInvariantConfigsCoverage ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetApproximatesPct ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetChangedAlwaysRuns ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetChangedVariantFilter ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetChangedVariantFilterAlternatives ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetDisabled ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetPctBoundaries ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetSeedChangesSelection ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetSeedDeterministic ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
🤯​ TestSubsetVariantsIndependent ✅​p 🤯​M ✅​p ✅​p ✅​p ✅​p
Top 50 slowest tests (at least 2 minutes):
duration env testname
15:05 gcp windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
13:09 gcp linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
12:46 gcp windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
11:23 aws windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
11:19 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
10:51 gcp linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
10:15 aws windows TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
10:02 gcp windows TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
9:25 aws linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
9:10 aws windows TestAccept/bundle/resources/clusters/deploy/data_security_mode/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
9:04 azure linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:51 aws linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:29 aws windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
8:27 gcp linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:23 azure windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:21 gcp windows TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:16 aws linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:16 gcp linux TestAccept/bundle/resources/clusters/resize-terminated-fallback/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:12 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
8:12 gcp linux TestAccept/bundle/resources/clusters/resize-terminated-fallback/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
8:11 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
8:03 azure windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:55 aws windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:53 aws linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:52 azure linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:48 azure windows TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:46 azure linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:43 gcp windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:42 gcp windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:37 gcp linux TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:37 gcp linux TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:11 azure linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:09 aws windows TestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:08 aws linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:08 aws windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:06 aws windows TestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
7:06 aws linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:05 gcp linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
7:02 azure linux TestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
7:02 gcp linux TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
6:58 azure windows TestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
6:52 azure windows TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
6:52 gcp windows TestAccept/bundle/resources/apps/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
6:50 gcp windows TestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
6:28 azure linux TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform/DMS=
6:19 aws windows TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=true
6:17 aws linux TestAccept/bundle/invariant/delete_idempotent/DATABRICKS_BUNDLE_ENGINE=direct/DMS=/INPUT_CONFIG=app.yml.tmpl/READPLAN=1
6:08 aws windows TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
6:07 aws linux TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=
6:00 gcp windows TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct/DMS=

deelaka pushed a commit to deelaka/databricks-cli that referenced this pull request Sep 24, 2026
## What

The `databricks-bundles` Python reference landing page
(https://databricks.github.io/cli/python/) linked "What is Python
support for Declarative Automation Bundles? (TBD)" to `#` — a dead
placeholder. Point it at the published docs page instead and drop the
"(TBD)" marker.

```diff
-See `What is Python support for Declarative Automation Bundles? (TBD) <#>`_.
+See `Bundle configuration in Python <https://docs.databricks.com/aws/en/dev-tools/bundles/python>`_.
```

The target, [Bundle configuration in
Python](https://docs.databricks.com/aws/en/dev-tools/bundles/python), is
live and covers Python support for bundles.

## Testing

Text-only change to a hand-written docs page. It's a well-formed
reStructuredText external hyperlink (no cross-reference, no malformed
RST), so the strict (`-W`) Sphinx build introduced in databricks#6729 is
unaffected.

This pull request and its description were written by Isaac.

---------

Co-authored-by: Isaac <no-reply@databricks.com>
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