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,5 +1,5 @@
// allow-test-rule: source-text-is-the-product agent .md instruction surface see #1205
// agents/gsd-roadmapper.md is the deployed agent — the Granularity Calibration table
// agents/msd-roadmapper.md is the deployed agent — the Granularity Calibration table
// AND the phase_id_convention instructions ARE the deployed behavior. Asserting on
// their prose asserts what runs in production (#163, #1205).
'use strict';
@@ -37,8 +37,8 @@ function extractBlock(content, tag) {
return content.slice(start + open.length, end);
}
describe('gsd-roadmapper granularity calibration (#163)', () => {
const section = granularitySection(readAgent('gsd-roadmapper'));
describe('msd-roadmapper granularity calibration (#163)', () => {
const section = granularitySection(readAgent('msd-roadmapper'));
test('Coarse bucket is tightened to 2-4', () => {
assert.ok(/\|\s*Coarse\s*\|\s*2-4\s*\|/.test(section), 'Coarse must be 2-4');
@@ -68,8 +68,8 @@ describe('gsd-roadmapper granularity calibration (#163)', () => {
});
});
describe('gsd-roadmapper phase_id_convention support (#1205)', () => {
const content = readAgent('gsd-roadmapper');
describe('msd-roadmapper phase_id_convention support (#1205)', () => {
const content = readAgent('msd-roadmapper');
test('phase_identification section reads phase_id_convention from config', () => {
const section = extractBlock(content, 'phase_identification');
@@ -160,7 +160,7 @@ describe('gsd-roadmapper phase_id_convention support (#1205)', () => {
'use strict';
process.env.GSD_TEST_MODE = '1';
process.env.MSD_TEST_MODE = '1';
const { test, describe, beforeEach, afterEach } = require('node:test');
const assert = require('node:assert/strict');
@@ -170,15 +170,15 @@ const path = require('node:path');
const {
resolveGranularityInternal,
VALID_GRANULARITIES,
} = require('../gsd-core/bin/lib/model-resolver.cjs');
const commands = require('../gsd-core/bin/lib/commands.cjs');
} = require('../msd-core/bin/lib/model-resolver.cjs');
const commands = require('../msd-core/bin/lib/commands.cjs');
const {
VALID_PHASE_TYPES,
} = require('../gsd-core/bin/lib/model-profiles.cjs');
const { isValidConfigKey } = require('../gsd-core/bin/lib/config-schema.cjs');
} = require('../msd-core/bin/lib/model-profiles.cjs');
const { isValidConfigKey } = require('../msd-core/bin/lib/config-schema.cjs');
const { createTempDir, runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
const makeTmp = (prefix) => createTempDir(`gsd-68-${prefix}-`);
const { createTempDir, runMsdTools, createTempProject, cleanup } = require('./helpers.cjs');
const makeTmp = (prefix) => createTempDir(`msd-68-${prefix}-`);
function writeConfig(projectDir, config) {
const planningDir = path.join(projectDir, '.planning');
@@ -429,13 +429,13 @@ describe('#68 resolve-granularity command: CLI behavior', () => {
});
test('(a) missing phase-type arg → command exits with error mentioning phase-type required', () => {
const result = runGsdTools('resolve-granularity', tmpDir);
const result = runMsdTools('resolve-granularity', tmpDir);
assert.ok(!result.success, 'should fail without phase-type');
assert.ok(result.error.includes('phase-type required'), `error should mention phase-type required; got: ${result.error}`);
});
test('(b) unknown phase type → result includes unknown_phase_type: true', () => {
const result = runGsdTools('resolve-granularity nonexistent-phase', tmpDir);
const result = runMsdTools('resolve-granularity nonexistent-phase', tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const output = JSON.parse(result.output);
assert.strictEqual(output.unknown_phase_type, true, 'should flag unknown phase type');
@@ -450,7 +450,7 @@ describe('#68 resolve-granularity command: CLI behavior', () => {
granularities: { planning: 'fine' },
})
);
const result = runGsdTools('resolve-granularity planning', tmpDir, { HOME: tmpDir });
const result = runMsdTools('resolve-granularity planning', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `Command failed: ${result.error}`);
const output = JSON.parse(result.output);
assert.strictEqual(output.granularity, 'fine', 'granularities.planning override should win');
@@ -535,7 +535,7 @@ describe('#703 cmdResolveGranularity: --granularity CLI flag', () => {
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ granularity: 'coarse' })
);
const result = runGsdTools('resolve-granularity planning --granularity fine', tmpDir, { HOME: tmpDir });
const result = runMsdTools('resolve-granularity planning --granularity fine', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `Command failed: ${result.error}`);
const output = JSON.parse(result.output);
assert.strictEqual(output.granularity, 'fine', '--granularity fine must override config coarse');
@@ -549,14 +549,14 @@ describe('#703 cmdResolveGranularity: --granularity CLI flag', () => {
granularities: { planning: 'fine' },
})
);
const result = runGsdTools('resolve-granularity planning --granularity coarse', tmpDir, { HOME: tmpDir });
const result = runMsdTools('resolve-granularity planning --granularity coarse', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `Command failed: ${result.error}`);
const output = JSON.parse(result.output);
assert.strictEqual(output.granularity, 'coarse', '--granularity coarse must beat per-phase fine');
});
test('invalid --granularity value exits with error', () => {
const result = runGsdTools('resolve-granularity planning --granularity ultra', tmpDir);
const result = runMsdTools('resolve-granularity planning --granularity ultra', tmpDir);
assert.ok(!result.success, 'should fail with invalid granularity');
assert.ok(
result.error.includes('ultra') || result.error.includes('invalid'),
@@ -596,7 +596,7 @@ describe('#703 init.plan-phase end-to-end: granularity resolution via CLI', () =
let tmpDir;
beforeEach(() => {
tmpDir = makeInitPlanPhaseFixture('gsd-68-e2e-');
tmpDir = makeInitPlanPhaseFixture('msd-68-e2e-');
});
afterEach(() => {
@@ -608,7 +608,7 @@ describe('#703 init.plan-phase end-to-end: granularity resolution via CLI', () =
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ granularity: 'standard', granularities: { planning: 'coarse' } })
);
const result = runGsdTools('init plan-phase 1 --granularity fine', tmpDir, { HOME: tmpDir });
const result = runMsdTools('init plan-phase 1 --granularity fine', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `init plan-phase failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.granularity, 'fine',
@@ -620,7 +620,7 @@ describe('#703 init.plan-phase end-to-end: granularity resolution via CLI', () =
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ granularity: 'coarse', granularities: { planning: 'fine' } })
);
const result = runGsdTools('init plan-phase 1', tmpDir, { HOME: tmpDir });
const result = runMsdTools('init plan-phase 1', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `init plan-phase failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.granularity, 'fine',
@@ -632,7 +632,7 @@ describe('#703 init.plan-phase end-to-end: granularity resolution via CLI', () =
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ granularity: 'coarse' })
);
const result = runGsdTools('init plan-phase 1', tmpDir, { HOME: tmpDir });
const result = runMsdTools('init plan-phase 1', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `init plan-phase failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.granularity, 'coarse',
@@ -640,7 +640,7 @@ describe('#703 init.plan-phase end-to-end: granularity resolution via CLI', () =
});
test('(4) --granularity ultra → command errors (invalid value rejected on plan-phase path)', () => {
const result = runGsdTools('init plan-phase 1 --granularity ultra', tmpDir, { HOME: tmpDir });
const result = runMsdTools('init plan-phase 1 --granularity ultra', tmpDir, { HOME: tmpDir });
assert.ok(!result.success, 'should fail with invalid granularity ultra');
assert.ok(
result.error.includes('ultra') || result.error.includes('invalid'),