Skip to content

changelog: Prevent merge conflicts on NEXT_CHANGELOG by fragmenting it into files - #5534

Merged
janniklasrose merged 32 commits into
mainfrom
janniklasrose/changelog-merge-conflicts
Jul 10, 2026
Merged

changelog: Prevent merge conflicts on NEXT_CHANGELOG by fragmenting it into files#5534
janniklasrose merged 32 commits into
mainfrom
janniklasrose/changelog-merge-conflicts

Conversation

@janniklasrose

@janniklasrosejanniklasrose commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Changes

  • Added .nextchanges/ scaffolding (one file per entry, grouped by section)
  • Release renders fragments straight into CHANGELOG.md via a repo-owned internal/genkit/release_tagging.py wrapper around the synced tagging.py
  • Release version tracked in .nextchanges/version (auto-bumped each release)
  • New check-changelog Taskfile target; validate_nextchanges.py validates fragment placement + the version file
  • Updated agent PR skill

Why

Prevent common merge conflicts on the file during busy/productive times, requiring manual action to rebase.

Why not merge=union in .gitattributes? Easy quality of life for local, but unfortunately not supported by GitHub.

Tests

  • e925f8d - add dummy entries into .nextchanges/ (mixed * / - / no marker)
  • a339ab0 - simulate the release: render into CHANGELOG.md (blank line after each heading, markers normalized to *), delete fragments, bump version
  • validate_nextchanges.py rejects bad entries (each exits 1):
    • misplaced fragment (unknown section dir) → not in a known section directory
    • empty fragment → empty fragment
    • missing .nextchanges/versionmissing; expected the next release version
    • malformed version → not a valid semver version

Rollout (follow-up)

This PR already renders .nextchanges/ directly into CHANGELOG.md at release. NEXT_CHANGELOG.md is intentionally left in the tree, now unused, to keep this PR focused.

Follow-up cutover PR:#5831git rm NEXT_CHANGELOG.md once nothing references it. It's split out so this PR is easy to review and revert; the deletion is mechanical.

This pull request was written by Isaac, an AI coding agent.

@eng-dev-ecosystem-bot

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

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 47ad6f0

Run: 29106800762

Env💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
💚​aws linux4423010785:01
💚​aws windows4423210767:05
💚​aws-ucws linux443169956:14
💚​aws-ucws windows443189937:03
💚​azure linux4423010775:18
💚​azure windows4423210757:07
💚​azure-ucws linux443189926:25
💚​azure-ucws windows443209907:19
💚​gcp linux4422910795:42
💚​gcp windows4423110777:02
8 interesting tests: 4 RECOVERED, 4 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp 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/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestFetchRepositoryInfoAPI_FromRepo💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/root💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
💚​TestFetchRepositoryInfoAPI_FromRepo/subdir💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
Top 10 slowest tests (at least 2 minutes):
durationenvtestname
6:14azure-ucws windowsTestAccept
6:09gcp windowsTestAccept
6:07aws windowsTestAccept
6:03azure windowsTestAccept
5:59aws-ucws windowsTestAccept
2:59azure-ucws linuxTestAccept
2:56aws-ucws linuxTestAccept
2:56gcp linuxTestAccept
2:51azure linuxTestAccept
2:48aws linuxTestAccept

Contributors keep adding entries to the single, append-only NEXT_CHANGELOG.md, so concurrent PRs constantly conflict and force a no-op rebase plus full CI rerun.
Introduce .nextchanges/<section>/<name>.md fragments instead: each PR adds its own file, so two PRs never touch the same path and never conflict. The filename is arbitrary (a feature name or PR number) and an entry is just a sentence — creatable straight from the GitHub UI; the leading bullet and a (#NNNN) reference are both optional. tools/collate_changelog.py folds the fragments into the matching NEXT_CHANGELOG.md sections at release time, leaving the release tooling (internal/genkit/tagging.py) to consume NEXT_CHANGELOG.md unchanged. The directory name matches databricks-sdk-py's .nextchanges/ for cross-repo consistency. 'task changelog-check' validates fragment placement and runs as part of 'task checks'. The bare 'cli' gitignore entry is anchored to '/cli' so it no longer ignores .nextchanges/cli/.
Co-authored-by: Isaac
A manually dispatched workflow that runs tools/collate_changelog.py, expands any (#NNNN) references to links, and opens a single 'Collate changelog fragments' PR via peter-evans/create-pull-request (matching the bump-vuln-deps pattern of opening a PR rather than pushing to main). Run it and merge the PR before dispatching the 'tagging' workflow. With no fragments present the collator is a no-op, so no PR is opened.
Co-authored-by: Isaac
Update the contributor-facing guidance to add a .nextchanges/<section>/<name>.md fragment instead of editing NEXT_CHANGELOG.md: each PR adds its own file so entries never conflict, the filename is arbitrary, the leading bullet and the PR link are optional, and it can be created from the GitHub UI. These are the only two docs that described the old workflow.
Co-authored-by: Isaac
@janniklasrose
janniklasroseforce-pushed the janniklasrose/changelog-merge-conflicts branch from 6d8d52d to 7707dd1CompareJune 11, 2026 23:47
Temporary commit for review (paired with the collation commit that follows, both to be reverted). Adds 8 .nextchanges/ fragments exercising every permutation: all five sections (empty and populated), * / - / no bullet marker, no ref / (#N) / bare #N / pre-expanded link, single / multi-bullet / multi-line continuation, and PR-number vs feature-name filenames.
Co-authored-by: Isaac
… after review)
Temporary commit for review (revert this and the preceding 'add test changelog fragments' commit). Ran 'task changelog-collate', which folds every .nextchanges/ fragment into the matching NEXT_CHANGELOG.md section, expands (#NNNN) references to links, and removes the consumed fragment files.
Co-authored-by: Isaac
Comment thread.github/workflows/changelog-collate.yml Outdated
Comment thread.agent/skills/pr-checklist/SKILL.md Outdated
Comment thread.agent/skills/pr-checklist/SKILL.md Outdated
Addresses review feedback: invoke 'task changelog-collate' (via go tool) instead of duplicating the collate + update_github_links steps inline, so the sequence stays defined in one place (Taskfile.yml). Swaps the uv setup for Go accordingly.
Co-authored-by: Isaac
Addresses review feedback: drop the 'create from the GitHub UI' note (this skill is for agents, which don't use the UI) and clarify that NNNN in (#NNNN) is the PR number.
Co-authored-by: Isaac
@janniklasrose
janniklasrose marked this pull request as ready for review June 12, 2026 13:28
At release time the changelog is built from the per-PR .nextchanges/ fragments
and written straight into CHANGELOG.md. The release script is synced verbatim
from universe (openapi/tagging/tagging.py) and shared across the SDK repos, so
it must stay pristine — editing it in place would be clobbered by the next
`genkit update-sdk` and would diverge a shared file.
Keep it pristine by renaming the synced copy to internal/genkit/tagging_upstream.py
and adding a repo-owned internal/genkit/tagging.py wrapper (despite the name,
it's hand-maintained). The wrapper imports tagging_upstream, rebinds two
module-level seams — get_next_tag_info (render the body from
.nextchanges/<section>/*.md) and clean_next_changelog (delete the consumed
fragments and bump .nextchanges/version) — adds a GitHubRepo.delete_file helper,
then delegates to the untouched process() for all commit/tag/race/recovery
logic. The release version is read from .nextchanges/version (bumped to the next
minor after each release; edit it to cut a patch/major) — the role
NEXT_CHANGELOG.md's "## Release vX.Y.Z" header played upstream.
Because the wrapper is named tagging.py, tagging.yml runs it with the same
`uv run tagging.py` as upstream — the only divergence from the synced workflow
is the internal/genkit/ path. generate-genkit relocates the synced file to
tagging_upstream.py and keeps the wrapper + repo-owned tagging.yml. ruff.toml
excludes tagging_upstream.py (synced) and lints the wrapper.
Co-authored-by: Isaac
With the tagging.py wrapper rendering .nextchanges/ straight into CHANGELOG.md,
the release-time collate step is no longer needed. Removes the changelog-collate
workflow and the collate mode of the tools script — which becomes
tools/validate_nextchanges.py, a PR-time validator (run by `task
changelog-check`) that checks fragment placement and the .nextchanges/version
file. update_github_links.py no longer processes NEXT_CHANGELOG.md.
NEXT_CHANGELOG.md itself is left in the tree for now (unused); a follow-up
cutover PR deletes it.
Co-authored-by: Isaac
The .nextchanges/ README, the pr-checklist skill, and the changelog-guard
message now describe fragments being rendered straight into CHANGELOG.md at
release, and the README documents the .nextchanges/version file.
Co-authored-by: Isaac
…og-merge-conflicts
# Conflicts:
#	Taskfile.yml
#	ruff.toml
@janniklasrose
janniklasroseforce-pushed the janniklasrose/changelog-merge-conflicts branch from 9f0097f to 74f3dddCompareJuly 3, 2026 14:46
Point the rule at the .nextchanges/ fragment workflow instead of
NEXT_CHANGELOG.md, and extend its globs to trigger on .nextchanges/ edits too.
Co-authored-by: Isaac
validate_nextchanges.py now walks every file under .nextchanges/ (not just
*.md) and flags anything that isn't a section fragment or known scaffolding
(version, README.md, .gitkeep): stray root files, non-.md files in a section,
wrong-depth paths, and unknown section directories. This catches misplaced
files up front rather than having them silently ignored by the release render.
Co-authored-by: Isaac
The `links` task now processes .nextchanges/ fragments in addition to
CHANGELOG.md (update_github_links.py's default file set includes both), so raw
PR references in fragments are expanded at PR time and enforced by CI's
`git diff --exit-code`. release_tagging.py no longer carries its own
_expand_pr_links reimplementation — it renders the already-expanded fragments
verbatim. One canonical link-expander, no drift.
Co-authored-by: Isaac
Make explicit that raw `(#5464)` refs must be expanded at PR time (`task fmt` /
`task links`, enforced by CI) — the release renders fragments verbatim and does
not expand links, so a raw ref left in a fragment fails CI rather than being
handled later.
Co-authored-by: Isaac
Comment on lines -77 to +79
uv run --locked internal/genkit/tagging.py --package "$PACKAGES"
uv run --locked internal/genkit/release_tagging.py --package "$PACKAGES"
else
uv run --locked internal/genkit/tagging.py
uv run --locked internal/genkit/release_tagging.py

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

expected and in line with updated tagging.yml rewrite in Taskfile

Comment on lines +167 to +169
tagging.validate_git_root()
tagging.init_github()
tagging.process()

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

consider an upstream change to have a single main()


def install_nextchanges() -> None:
"""Rebind the tagging seams to the CLI's .nextchanges behavior."""
tagging.GitHubRepo.delete_file = _delete_file

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

consider enhancing the upstream tagging.py implementation of GitHubRepo with this method to avoid monkey-patching here

@janniklasrose
janniklasrose marked this pull request as ready for review July 3, 2026 16:10
@janniklasrosejanniklasrose changed the title Prevent merge conflicts on NEXT_CHANGELOG by fragmenting it into fileschangelog: Prevent merge conflicts on NEXT_CHANGELOG by fragmenting it into filesJul 10, 2026
Comment thread.nextchanges/version Outdated
name = "certifi"
version = "2026.2.25"
source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
source = { registry = "https://pypi.org/simple" }

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

local githook overwrote this - will revert during next genkit run until #5830

It injects that behavior by rebinding two module-level seams in the upstream
module (``get_next_tag_info`` and ``clean_next_changelog``, both called by name
from ``process_package``/``preview_tag_infos``) and then delegates to the
untouched ``process()`` for all commit/tag/race/recovery logic.

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.

How do we make sure this doesn't regress?

Comment threadinternal/genkit/release_tagging.py Outdated
fragment and is normalized; continuation lines are left as authored.

Raw PR references (``(#1234)``/``#1234``) in fragments are converted to
markdown links before release by ``tools/update_github_links.py`` (the

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.

Can we remove this script once all of this lands?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

tools/update_github_links.py? No, that's still used in task links / task checks.

Maybe misleading part of the docstring here that can just be omitted entirely - render_nextchanges just takes the fragments verbatim

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.

I think its purpose was only to check NEXT_CHANGELOG.md.

Comment thread.gitignore Outdated
Comment thread.nextchanges/README.md Outdated
fragment and is normalized; continuation lines are left as authored.

Raw PR references (``(#1234)``/``#1234``) in fragments are converted to
markdown links before release by ``tools/update_github_links.py`` (the

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

tools/update_github_links.py? No, that's still used in task links / task checks.

Maybe misleading part of the docstring here that can just be omitted entirely - render_nextchanges just takes the fragments verbatim

Comment threadinternal/genkit/release_tagging.py Outdated
Co-authored-by: Jan N Rose <janniklas.rose@gmail.com>
@janniklasrose
janniklasrose added this pull request to the merge queueJul 10, 2026
Merged via the queue into main with commit b14ffa3Jul 10, 2026
31 checks passed
@janniklasrose
janniklasrose deleted the janniklasrose/changelog-merge-conflicts branch July 10, 2026 16:55
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: b14ffa3

Run: 29109168832

Env❌​FAIL🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
💚​aws linux44529100747:07
💚​aws windows44486102054:58
❌​aws-ucws linux111252990817110:36
❌​aws-ucws windows11152934835132:42
🔄​azure linux224523100840:25
💚​azure windows44480102149:10
💚​azure-ucws linux6289885282:34
🔄​azure-ucws windows352838870103:29
💚​gcp linux44514101342:31
🔄​gcp windows224471102659:25
22 interesting tests: 11 FAIL, 5 flaky, 3 RECOVERED, 2 SKIP, 1 KNOWN
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept💚​R💚​R🟨​K🟨​K💚​R💚​R💚​R🔄​f💚​R💚​R
💚​TestAccept/bundle/invariant/no_drift🙈​S🙈​S💚​R💚​R🙈​S🙈​S💚​R💚​R🙈​S🙈​S
🔄​TestAccept/bundle/resources/dashboards/change-name✅​p✅​p🔄​f✅​p✅​p✅​p✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/resources/dashboards/change-name/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p
❌​TestAccept/bundle/resources/postgres_databases/live_errors/missing_role🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_databases/live_errors/missing_role/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/basic🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/replace_existing🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_endpoints/replace_existing/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/replace_existing/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/update_autoscaling🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_endpoints/update_autoscaling/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/update_autoscaling/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
💚​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S💚​R💚​R🙈​S🙈​S💚​R💚​R🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestFetchRepositoryInfoAPI_FromRepo💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🔄​TestFetchRepositoryInfoAPI_FromRepo/root💚​R💚​R💚​R💚​R🔄​f💚​R💚​R💚​R💚​R🔄​f
🔄​TestFetchRepositoryInfoAPI_FromRepo/subdir💚​R💚​R💚​R💚​R🔄​f💚​R💚​R💚​R💚​R🔄​f
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
19:22aws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
11:59gcp windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
11:06gcp linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
10:56gcp windowsTestAccept/bundle/resources/clusters/deploy/local_ssd_count/DATABRICKS_BUNDLE_ENGINE=direct
9:23aws linuxTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
8:41aws-ucws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:38aws linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:35aws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:26aws-ucws linuxTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
7:56azure-ucws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:52gcp windowsTestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
7:31aws-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:29aws linuxTestAccept/bundle/resources/clusters/resize-terminated-fallback/DATABRICKS_BUNDLE_ENGINE=direct
7:26azure linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:26aws-ucws linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:24aws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:17azure-ucws linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:06gcp windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
7:00gcp linuxTestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
6:59azure windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:47gcp linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
6:43aws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
6:42aws-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
6:30aws linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
6:19aws windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
6:02azure windowsTestAccept
5:59aws windowsTestAccept
5:59aws-ucws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
5:56gcp windowsTestAccept
5:55azure-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform
5:49gcp windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:38aws windowsTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
5:37aws windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:27aws-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:26azure-ucws linuxTestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct
5:20aws windowsTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
5:17gcp linuxTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
5:16azure windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
5:06azure-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
5:06azure linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
5:03azure linuxTestAccept/bundle/resources/clusters/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
4:58aws-ucws linuxTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
4:56azure-ucws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
4:50aws linuxTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
4:47aws linuxTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
4:45aws-ucws windowsTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct
4:45gcp linuxTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
4:38gcp windowsTestAccept/bundle/resources/apps/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
4:35gcp windowsTestAccept/bundle/resources/apps/lifecycle-started-omitted/DATABRICKS_BUNDLE_ENGINE=direct
4:34gcp linuxTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct

janniklasrose added a commit that referenced this pull request Jul 12, 2026
Move the changelog entry from NEXT_CHANGELOG.md into a .nextchanges/ fragment
following the migration on main (#5534).
Co-authored-by: Isaac
shreyas-goenka added a commit that referenced this pull request Jul 13, 2026
…, drop root-bind error
- Bind.Validate now checks resource types against the closed allowlist
from config.SupportedResources() instead of an open blocklist of
*.permissions / *.grants. Only types valid under the resources block
are bindable; anything else (typo, child key, etc.) is rejected with a
"not supported" message. Drops the child-resource terminology.
- Split DeclarativeBind into Bind and BindAndUpdate DeploymentUnit
methods, dispatched from the apply loop like the other action types.
- Remove the special root-level bind error in normalize.go; a root bind
block is just an ignored unknown-field warning now.
- Move the changelog entry from NEXT_CHANGELOG.md to a
.nextchanges/bundles/ fragment (new convention, #5534).
- Regenerate affected acceptance goldens (bind-permissions,
invalid-resource-type, top-level-bind).
Co-authored-by: Isaac
ronaldz-db pushed a commit to ronaldz-db/cli that referenced this pull request Jul 15, 2026
## Changes
- Remove `NEXT_CHANGELOG.md` — the `.nextchanges/` system fully drives
the release now, so nothing reads it anymore.
- Migrate its two pending v1.7.0 entries to `.nextchanges/` fragments
(verified they render identically).
- Update the remaining `NEXT_CHANGELOG` references in the
`onboard-team-area` skill to `.nextchanges/`.
## Why
Follow-up cutover to databricks#5534. That PR left `NEXT_CHANGELOG.md` in the tree
(unused) to stay focused; `release_tagging.py` already renders
`CHANGELOG.md` straight from `.nextchanges/` fragments. This deletes the
now-vestigial file and its last references.
## Tests
- `task check-changelog` passes (fragments + `version` valid).
- Confirmed `release_tagging.py` reads only `.nextchanges/` (fragments +
`version`), never `NEXT_CHANGELOG.md`, so the deletion changes no
release behavior.
- Rendering the two migrated fragments reproduces the original
`NEXT_CHANGELOG.md` body byte-for-byte.
_This pull request was written by Isaac, an AI coding agent._
Sign up for freeto 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

@janniklasrose@eng-dev-ecosystem-bot@pietern