gsxdsm
8c3758584b
refactor(engine): peel merger glob, test-command, and file-scope satellites (#2143)
## Summary
Wave 2 of package code organization (follows merged #2139): peel
pure/satellite clusters out of `packages/engine/src/merger.ts` while
keeping `merger.js` import paths stable for tests and production.
- **`merger-glob.ts`** — `ConflictType`, `LOCKFILE_PATTERNS`,
`GENERATED_PATTERNS`, `matchGlob`
- **`merger-workspace-test-commands.ts`** — pnpm workspace package
mapping + `inferDefaultTestCommand` / scoped + file-scoped test command
derivation
- **`merger-file-scope.ts`** — `parseDiffStat`, `extractFileScope` /
`matchesScope`, squash file-scope invariant (`FileScopeViolationError`,
assert/enforce with main’s `status` audit semantics and merge-trait
modes)
- Re-exports from `merger.ts`; baseline ratchet for `merger.ts` (~12.5k
→ ~11.8k)
## Test plan
- [x] `pnpm --filter @fusion/engine exec tsc --noEmit`
- [x] eslint on merger + satellites
- [x] `merger-file-scope-invariant.test.ts` (18 tests)
- [x] focused conflict-resolution pattern tests
- [ ] CI merge gate
## Plan
Continues
`docs/plans/2026-07-14-001-refactor-package-code-organization-plan.md`
(U6 merger satellites).
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added file-scope validation for merge operations, with strict and
warning-only enforcement options.
* Added automatic classification of lockfile and generated-file
conflicts.
* Added workspace-aware test selection based on changed packages and
files.
* Added support for inferring test commands across pnpm, Yarn, Bun, and
npm projects.
* **Refactor**
* Organized merge, conflict-resolution, file-scope, and test-inference
functionality into dedicated modules without changing existing public
access paths.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-15 14:44:35 -07:00
..
2026-07-15 08:44:11 -07:00
2026-07-14 23:18:55 -07:00
2026-06-03 17:36:35 -07:00
2026-07-13 19:07:58 -07:00
2026-04-27 08:21:48 -07:00
2026-05-12 07:47:11 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 23:18:55 -07:00
2026-07-13 19:07:58 -07:00
2026-07-08 04:24:30 -07:00
2026-07-15 08:44:11 -07:00
2026-07-14 23:18:55 -07:00
2026-06-23 23:30:32 -07:00
2026-06-25 23:34:08 -07:00
2026-07-13 07:10:14 -07:00
2026-05-23 19:51:36 -07:00
2026-07-14 08:16:42 -07:00
2026-06-14 15:29:35 -07:00
2026-07-12 21:21:10 -07:00
2026-06-14 15:29:35 -07:00
2026-04-27 08:21:48 -07:00
2026-06-13 19:22:00 -07:00
2026-07-13 01:21:33 -07:00
2026-06-13 15:44:28 -07:00
2026-04-27 08:21:48 -07:00
2026-05-11 09:52:23 +02:00
2026-07-10 13:26:23 -07:00
2026-07-12 14:42:09 -07:00
2026-04-27 08:21:48 -07:00
2026-07-12 14:42:09 -07:00
2026-06-19 20:47:32 -07:00
2026-06-18 16:47:09 -07:00
2026-07-15 14:44:35 -07:00
2026-06-16 18:03:41 -07:00
2026-07-14 23:18:55 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 23:18:55 -07:00
2026-07-13 19:07:58 -07:00
2026-07-13 19:07:58 -07:00
2026-04-27 08:21:48 -07:00
2026-07-13 23:00:25 -07:00
2026-07-14 23:18:55 -07:00
2026-06-24 19:25:44 -07:00
2026-06-21 10:53:08 -07:00
2026-05-27 21:31:12 -07:00
2026-03-30 23:56:01 -07:00
2026-03-26 01:03:16 -04:00
2026-07-15 08:44:11 -07:00
2026-07-14 23:18:55 -07:00
2026-04-27 08:21:48 -07:00
2026-06-30 08:04:12 -07:00
2026-04-29 08:15:38 -07:00
2026-06-25 22:56:10 -07:00
2026-07-03 07:47:03 -07:00
2026-07-02 11:38:31 -07:00
2026-06-25 17:04:30 -07:00
2026-06-24 23:32:52 -07:00
2026-07-08 11:19:47 -07:00
2026-05-03 05:47:11 -07:00
2026-07-15 14:41:05 -07:00
2026-07-03 22:04:45 -07:00
2026-06-19 05:13:39 -07:00