refactor: hard-fork GSD -> MSD (Make Software Done)

Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD
across contents and paths, upstream package/repo coordinates -> @golem15/msd-core
and golem15com/msd-core. Deep links into upstream history, sibling upstream
packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is.

Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line,
package/plugin identity, regenerated lockfile, install-tree fixtures, derived
registries and benchmark baseline; migration checksum baseline re-locked
(MSD keeps its own install state, so no install had applied the old sums);
sort-order and regex-escaped expectations in tests adjusted.
This commit is contained in:
Jakub Zych
2026-10-06 01:47:40 +02:00
parent fe069b2a56
commit a9a7a328e6
2763 changed files with 78465 additions and 78434 deletions

View File

@@ -11,7 +11,7 @@
* test) whose filename happened to match Node's `test-*` collection
* convention. `scripts/run-tests.cjs` — what local `npm test` and GitHub CI
* use — globs only `tests/**\/*.test.cjs`, so CI never saw it. But the
* REMOTE test runner (the push gate; see CLAUDE.md's `gsd-test` section)
* REMOTE test runner (the push gate; see CLAUDE.md's `msd-test` section)
* collects test files the way `node --test` does by default, across the
* whole tree, so it picked the file up and executed it AS a test, where it
* exited 1. Net effect: `next` was green on GitHub CI and red on the push
@@ -42,20 +42,20 @@
*
* ## Scanned (source/shipped) directories
*
* src/, scripts/, hooks/, bin/, gsd-core/bin/ (excluding
* gsd-core/bin/lib/**, see below), eslint-rules/
* src/, scripts/, hooks/, bin/, msd-core/bin/ (excluding
* msd-core/bin/lib/**, see below), eslint-rules/
*
* ## Exempted
*
* - tests/ — files there are SUPPOSED to match; that is the point.
* - node_modules/, .git/ — never source we own.
* - gsd-core/bin/lib/** — build output generated from src/*.cts by
* - msd-core/bin/lib/** — build output generated from src/*.cts by
* `npm run build:lib` (tsc), and gitignored (verified: every file under
* it, including the incident's own post-fix
* `gsd-core/bin/lib/real-home-guard.cjs`, is listed in .gitignore). A
* `msd-core/bin/lib/real-home-guard.cjs`, is listed in .gitignore). A
* generated file inherits its source's basename 1:1, so scanning it
* would double-report the exact same defect `src/` already caught —
* noise, not signal. `gsd-core/bin/shared/*.json` is data, not code,
* noise, not signal. `msd-core/bin/shared/*.json` is data, not code,
* but is harmlessly included since it never matches a JS/TS extension.
*
* Exported pure(ish) function `checkSourceTestNameCollisions({ dirs, root })`
@@ -92,20 +92,20 @@ const BASENAME_PATTERNS = [
/**
* Source/shipped directories this guard checks, relative to repo root.
* Confirmed against the repo layout: src/, scripts/, hooks/, bin/,
* gsd-core/bin/, eslint-rules/ all ship first-party source or shipped
* msd-core/bin/, eslint-rules/ all ship first-party source or shipped
* tooling; nothing else at the top level carries executable source outside
* tests/.
*/
const DEFAULT_SCAN_DIRS = ['src', 'scripts', 'hooks', 'bin', 'gsd-core/bin', 'eslint-rules'];
const DEFAULT_SCAN_DIRS = ['src', 'scripts', 'hooks', 'bin', 'msd-core/bin', 'eslint-rules'];
// Directories to never descend into anywhere in the tree.
const ALWAYS_EXCLUDE_DIR_NAMES = new Set(['node_modules', '.git']);
// Relative dir prefixes (POSIX-joined, relative to repo root) that are
// generated build output and must not be scanned — see the module doc for
// why gsd-core/bin/lib is excluded (it 1:1-inherits src/*.cts basenames, so
// why msd-core/bin/lib is excluded (it 1:1-inherits src/*.cts basenames, so
// scanning it double-reports the same defect src/ already catches).
const GENERATED_OUTPUT_PREFIXES = ['gsd-core/bin/lib'];
const GENERATED_OUTPUT_PREFIXES = ['msd-core/bin/lib'];
function toPosix(p) {
return p.split(path.sep).join('/');