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

@@ -22,7 +22,7 @@ const assert = require('node:assert/strict');
const fs = require('fs');
const path = require('path');
const WORKFLOWS_DIR = path.join(__dirname, '..', 'gsd-core', 'workflows');
const WORKFLOWS_DIR = path.join(__dirname, '..', 'msd-core', 'workflows');
const HOOKS_DIR = path.join(__dirname, '..', 'hooks');
/**
@@ -179,7 +179,7 @@ describe('hook stdin timeout patterns', () => {
// ─── @file: Handoff ─────────────────────────────────────────────────────────
describe('@file: handoff in workflows', () => {
test('all workflows calling gsd-tools init have @file: handler', () => {
test('all workflows calling msd-tools init have @file: handler', () => {
const workflowFiles = fs.readdirSync(WORKFLOWS_DIR)
.filter(f => f.endsWith('.md'));
@@ -187,8 +187,8 @@ describe('@file: handoff in workflows', () => {
for (const wf of workflowFiles) {
const content = fs.readFileSync(path.join(WORKFLOWS_DIR, wf), 'utf-8');
// Check if this workflow calls gsd-tools.cjs init
if (/INIT=\$\(node.*gsd-tools.*\binit\b/.test(content)) {
// Check if this workflow calls msd-tools.cjs init
if (/INIT=\$\(node.*msd-tools.*\binit\b/.test(content)) {
// Must have @file: handler
if (!content.includes('@file:')) {
missing.push(wf);
@@ -198,7 +198,7 @@ describe('@file: handoff in workflows', () => {
assert.strictEqual(
missing.length, 0,
`Workflows calling gsd-tools init without @file: handler (large output will be truncated):\n ${missing.join('\n ')}`
`Workflows calling msd-tools init without @file: handler (large output will be truncated):\n ${missing.join('\n ')}`
);
});
});
@@ -214,7 +214,7 @@ describe('@file: handoff in workflows', () => {
// These spawn/exec sites cannot be behaviourally tested for windowsHide
// off-Windows; the source text is the runtime contract (issue #685). Without
// windowsHide:true a detached or shell:true child allocates a visible console
// window on Windows (the "gsd-core" flash).
// window on Windows (the "msd-core" flash).
'use strict';
const { describe, test } = require('node:test');
@@ -236,8 +236,8 @@ function regionBetween(src, startAnchor, endAnchor) {
}
describe('bug #685: Windows spawns must set windowsHide:true (no console-window flash)', () => {
test('gsd-context-monitor record-session spawn sets windowsHide', () => {
const region = regionBetween(read('hooks/gsd-context-monitor.js'), "'record-session'", '.unref()');
test('msd-context-monitor record-session spawn sets windowsHide', () => {
const region = regionBetween(read('hooks/msd-context-monitor.js'), "'record-session'", '.unref()');
assert.match(region, /windowsHide:\s*true/, 'record-session spawn must set windowsHide: true');
});
@@ -254,14 +254,14 @@ describe('bug #685: Windows spawns must set windowsHide:true (no console-window
});
}
test('gsd-worktree-path-guard SPAWNOPT sets windowsHide', () => {
const region = regionBetween(read('hooks/gsd-worktree-path-guard.js'), 'const SPAWNOPT', '};');
assert.match(region, /windowsHide:\s*true/, 'gsd-worktree-path-guard SPAWNOPT must set windowsHide: true');
test('msd-worktree-path-guard SPAWNOPT sets windowsHide', () => {
const region = regionBetween(read('hooks/msd-worktree-path-guard.js'), 'const SPAWNOPT', '};');
assert.match(region, /windowsHide:\s*true/, 'msd-worktree-path-guard SPAWNOPT must set windowsHide: true');
});
test('gsd-workflow-guard currentBranch spawnSync sets windowsHide', () => {
const region = regionBetween(read('hooks/gsd-workflow-guard.js'), "spawnSync('git', ['branch'", '});');
assert.match(region, /windowsHide:\s*true/, 'gsd-workflow-guard git-branch spawn must set windowsHide: true');
test('msd-workflow-guard currentBranch spawnSync sets windowsHide', () => {
const region = regionBetween(read('hooks/msd-workflow-guard.js'), "spawnSync('git', ['branch'", '});');
assert.match(region, /windowsHide:\s*true/, 'msd-workflow-guard git-branch spawn must set windowsHide: true');
});
test('check-command-router recentCommitMessages execFileSync sets windowsHide', () => {
@@ -280,9 +280,9 @@ describe('bug #685: Windows spawns must set windowsHide:true (no console-window
assert.deepEqual(missing, [], `execSync without windowsHide:\n${missing.join('\n')}`);
});
test('gsd-check-update spawn retains windowsHide (precedent guard)', () => {
assert.match(read('hooks/gsd-check-update.js'), /windowsHide:\s*true/,
'gsd-check-update.js must keep windowsHide: true');
test('msd-check-update spawn retains windowsHide (precedent guard)', () => {
assert.match(read('hooks/msd-check-update.js'), /windowsHide:\s*true/,
'msd-check-update.js must keep windowsHide: true');
});
// Durable invariant: ANY external-binary process spawn in the runtime source