Files
msd-core/.changeset/patient-lemurs-sing.md
Tom Boucher 24a992a05c chore(3536): add changeset fragment for user-facing surfaces
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.
2026-05-15 08:25:06 -04:00

743 B

type, pr
type pr
Changed 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.