From 24a992a05c2ae1b68e0e5ef7c09dbedeb02424c4 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Fri, 15 May 2026 08:25:06 -0400 Subject: [PATCH] chore(3536): add changeset fragment for user-facing surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #3540 was originally labeled `no-changelog` on the premise that it was a pure internal-module refactor. On second look, two surfaces are actually user-facing and warrant a changelog entry: 1. New `gsd-tools migrate-config` CLI subcommand — explicit, opt-in on-disk migration of legacy-key shapes. Idempotent. 2. `mergeDefaults` semantic change — recursive deep-merge instead of spread-per-section. Preserves sibling keys under partial overlays. Strict improvement, but a behavior change. Adds `.changeset/patient-lemurs-sing.md` (`type: Changed`). The `no-changelog` label should be removed in tandem with this commit. --- .changeset/patient-lemurs-sing.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/patient-lemurs-sing.md diff --git a/.changeset/patient-lemurs-sing.md b/.changeset/patient-lemurs-sing.md new file mode 100644 index 000000000..0776caf2f --- /dev/null +++ b/.changeset/patient-lemurs-sing.md @@ -0,0 +1,5 @@ +--- +type: Changed +pr: 3540 +--- +**Configuration Module unifies CJS and SDK config sources** — `CONFIG_DEFAULTS`, `VALID_CONFIG_KEYS`, `DYNAMIC_KEY_PATTERNS`, and the four legacy-key migrations (`branching_strategy`, `sub_repos`, `multiRepo`, `depth`) now derive from two canonical manifests (`sdk/shared/config-{defaults,schema}.manifest.json`) via a generator-emitted mirror, eliminating the parallel-definition drift that caused the #1535/#1542/#2047/#2638/#2653/#2687/#2798/#3055/#3523 bug class. `mergeDefaults` now recursively deep-merges instead of spreading per-section, preserving sibling keys under partial overlays. Adds a new opt-in `gsd-tools migrate-config` subcommand for explicit on-disk canonicalization of legacy-key shapes.