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

@@ -19,8 +19,8 @@ const {
learningsDelete,
learningsCopyFromProject,
learningsPrune,
} = require('../gsd-core/bin/lib/learnings.cjs');
const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
} = require('../msd-core/bin/lib/learnings.cjs');
const { runMsdTools, createTempProject, cleanup } = require('./helpers.cjs');
// ─── Test Helpers ────────────────────────────────────────────────────────────
@@ -29,7 +29,7 @@ const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
* @returns {string}
*/
function makeTempDir() {
return fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-learnings-test-'));
return fs.mkdtempSync(path.join(os.tmpdir(), 'msd-learnings-test-'));
}
/**
@@ -496,7 +496,7 @@ describe('CLI integration', () => {
afterEach(() => { cleanup(tmpDir); });
test('learnings list returns valid JSON', () => {
const res = runGsdTools(['learnings', 'list'], tmpDir, { HOME: tmpDir });
const res = runMsdTools(['learnings', 'list'], tmpDir, { HOME: tmpDir });
assert.strictEqual(res.success, true);
const parsed = JSON.parse(res.output);
assert.ok(Array.isArray(parsed.learnings));
@@ -504,20 +504,20 @@ describe('CLI integration', () => {
});
test('learnings query --tag succeeds', () => {
const res = runGsdTools(['learnings', 'query', '--tag', 'auth'], tmpDir, { HOME: tmpDir });
const res = runMsdTools(['learnings', 'query', '--tag', 'auth'], tmpDir, { HOME: tmpDir });
assert.strictEqual(res.success, true);
const parsed = JSON.parse(res.output);
assert.ok(Array.isArray(parsed.learnings));
});
test('learnings prune with bad format exits non-zero', () => {
const res = runGsdTools(['learnings', 'prune', '--older-than', 'badformat'], tmpDir, { HOME: tmpDir });
const res = runMsdTools(['learnings', 'prune', '--older-than', 'badformat'], tmpDir, { HOME: tmpDir });
assert.strictEqual(res.success, false);
assert.ok(res.error.includes('Invalid duration format'));
});
test('learnings unknown subcommand exits non-zero', () => {
const res = runGsdTools(['learnings', 'unknown'], tmpDir, { HOME: tmpDir });
const res = runMsdTools(['learnings', 'unknown'], tmpDir, { HOME: tmpDir });
assert.strictEqual(res.success, false);
assert.ok(res.error.includes('Unknown learnings subcommand'));
});
@@ -749,8 +749,8 @@ describe('#3683 learnings copy source resolution', () => {
});
describe('#3683 completion wiring and registry pins', () => {
const EXECUTE_PHASE = path.join(__dirname, '..', 'gsd-core', 'workflows', 'execute-phase.md');
const REGISTRY = path.join(__dirname, '..', 'gsd-core', 'templates', 'README.md');
const EXECUTE_PHASE = path.join(__dirname, '..', 'msd-core', 'workflows', 'execute-phase.md');
const REGISTRY = path.join(__dirname, '..', 'msd-core', 'templates', 'README.md');
const FEATURES = path.join(__dirname, '..', 'docs', 'FEATURES.md');
test('execute-phase completion wires gated extraction', () => {
@@ -776,7 +776,7 @@ describe('#3683 completion wiring and registry pins', () => {
test('registry producer attribution is gated', () => {
const registry = fs.readFileSync(REGISTRY, 'utf-8');
const splitLines = require('../gsd-core/bin/lib/text-lines.cjs').splitLines;
const splitLines = require('../msd-core/bin/lib/text-lines.cjs').splitLines;
const row = splitLines(registry).find((l) => l.includes('LEARNINGS.md'));
assert.ok(row, 'registry must carry a LEARNINGS.md row');
assert.ok(