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

@@ -1,7 +1,7 @@
// Guards the responsive-separator convention defined in
// gsd-core/references/ui-brand.md § "Separators and Banners".
// msd-core/references/ui-brand.md § "Separators and Banners".
//
// Shipped content (gsd-core/, agents/, commands/) is runtime-loaded text: an
// Shipped content (msd-core/, agents/, commands/) is runtime-loaded text: an
// agent reads it and emits the banners it describes. A fixed-width run of
// box-drawing characters is ordinary text to a Markdown-rendering host, so in a
// narrower pane it wraps and leaves orphan glyphs on a second line, coming apart
@@ -31,7 +31,7 @@ const { createTempDir, cleanup } = require('./helpers.cjs');
const REPO_ROOT = path.join(__dirname, '..');
// Runtime-loaded text: an agent reads these and emits what they describe.
const SHIPPED_ROOTS = ['gsd-core', 'agents', 'commands'];
const SHIPPED_ROOTS = ['msd-core', 'agents', 'commands'];
// A shorter run than MIN_RULE_RUN is a glyph fragment, not a rule.
const MIN_RULE_RUN = 3;
@@ -100,7 +100,7 @@ function scan(files, predicate) {
}
const REMEDY =
'\n\nPer gsd-core/references/ui-brand.md "Separators and Banners":\n' +
'\n\nPer msd-core/references/ui-brand.md "Separators and Banners":\n' +
' - a stage banner is an ATX heading with no rule lines;\n' +
' - a panel becomes a heading followed by its rows as plain lines;\n' +
' - a divider between sections is --- with a blank line above and below.\n' +
@@ -187,7 +187,7 @@ describe('responsive-separators', () => {
'Progress: ████░░ 80%',
'| --- | --- |',
'---',
'### GSD ► EXECUTING WAVE 8',
'### MSD ► EXECUTING WAVE 8',
'',
' \t ',
`a${HEAVY.repeat(3)}`,
@@ -225,7 +225,7 @@ describe('responsive-separators', () => {
test('the scan flags a heavy fixed-width rule line, with path and line number', () => {
const filePath = tempFile(
'banner.md',
['Display banner:', '', HEAVY.repeat(53), ' GSD ► PLANNING', ''].join('\n')
['Display banner:', '', HEAVY.repeat(53), ' MSD ► PLANNING', ''].join('\n')
);
const violations = scan([filePath], isFixedWidthRuleLine);
assert.equal(violations.length, 1);
@@ -254,7 +254,7 @@ describe('responsive-separators', () => {
test('a file with no separators produces no violations', () => {
const filePath = tempFile(
'clean.md',
['# Title', '', '### GSD ► PLANNING', '', '---', '', 'Body.'].join('\n')
['# Title', '', '### MSD ► PLANNING', '', '---', '', 'Body.'].join('\n')
);
assert.deepStrictEqual(scan([filePath], isFixedWidthRuleLine), []);
assert.deepStrictEqual(scan([filePath], hasPanelCharacter), []);