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

@@ -7,7 +7,7 @@
* Tests for bug #1587: parallel agents for dependent plans
*
* Validates that:
* 1. gsd-planner.md assign_waves step explicitly checks files_modified overlap
* 1. msd-planner.md assign_waves step explicitly checks files_modified overlap
* and mandates a later wave for any plan that shares files with a prior plan.
* 2. execute-phase.md has a pre-spawn intra-wave files_modified overlap check
* and directs sequential execution when overlap is detected.
@@ -19,11 +19,11 @@ const fc = require('fast-check');
const fs = require('fs');
const path = require('path');
const PLANNER_AGENT_PATH = path.join(__dirname, '..', 'agents', 'gsd-planner.md');
const PLANNER_AGENT_PATH = path.join(__dirname, '..', 'agents', 'msd-planner.md');
const EXECUTE_PHASE_PATH = path.join(
__dirname,
'..',
'gsd-core',
'msd-core',
'workflows',
'execute-phase.md'
);
@@ -32,7 +32,7 @@ const EXECUTE_PHASE_PATH = path.join(
// Anchored same-wave overlap gate (#3761)
//
// The test this replaces accepted six whole-file substrings, five of which have
// never appeared in agents/gsd-planner.md (`validate_waves`, `wave_validation`,
// never appeared in agents/msd-planner.md (`validate_waves`, `wave_validation`,
// `same wave` — the last killing the entire quality-gate arm, since the file has
// no quality_gate block at all). The sixth, `files_modified overlap`, matched one
// incidental pseudocode comment, so deleting the whole gate left the suite green.
@@ -137,19 +137,19 @@ function assignWavesStep(body, eol = '\n') {
return namedStep('assign_waves', body, eol);
}
/** The rule sentence as `agents/gsd-planner.md` currently declares it. */
/** The rule sentence as `agents/msd-planner.md` currently declares it. */
const CANONICAL_RULE =
'**Rule:** Same-wave plans must have zero `files_modified`/`files_deleted` overlap. ' +
'After assigning waves, scan each wave; if any file appears in 2+ plans, bump the ' +
'later plan to the next wave and repeat.';
// ---------------------------------------------------------------------------
// gsd-planner.md — wave assignment must account for files_modified overlap
// msd-planner.md — wave assignment must account for files_modified overlap
// ---------------------------------------------------------------------------
describe('gsd-planner agent: files_modified wave ordering', () => {
describe('msd-planner agent: files_modified wave ordering', () => {
test('planner agent file exists', () => {
assert.ok(fs.existsSync(PLANNER_AGENT_PATH), 'agents/gsd-planner.md should exist');
assert.ok(fs.existsSync(PLANNER_AGENT_PATH), 'agents/msd-planner.md should exist');
});
test('assign_waves step checks files_modified overlap', () => {
@@ -175,7 +175,7 @@ describe('gsd-planner agent: files_modified wave ordering', () => {
// eslint-disable-next-line local/no-unbounded-quantifier -- parses this repo's own agent .md content, fixed-size author-controlled content
/<step name="assign_waves">([\s\S]*?)<\/step>/
);
assert.ok(assignWavesMatch, 'assign_waves step should exist in gsd-planner.md');
assert.ok(assignWavesMatch, 'assign_waves step should exist in msd-planner.md');
const stepContent = assignWavesMatch[1];
@@ -206,7 +206,7 @@ describe('gsd-planner agent: files_modified wave ordering', () => {
test('the real planner declares the same-wave zero-overlap rule inside assign_waves', () => {
const content = fs.readFileSync(PLANNER_AGENT_PATH, 'utf-8');
const stepBody = extractStepBody(content, 'assign_waves');
assert.notEqual(stepBody, null, 'assign_waves step should exist in gsd-planner.md');
assert.notEqual(stepBody, null, 'assign_waves step should exist in msd-planner.md');
assert.deepEqual(
missingSameWaveRuleClauses(stepBody),
[],
@@ -226,7 +226,7 @@ describe('gsd-planner agent: files_modified wave ordering', () => {
// substring, and the gate itself has been removed.
// ---------------------------------------------------------------------------
describe('gsd-planner agent: same-wave overlap gate has teeth', () => {
describe('msd-planner agent: same-wave overlap gate has teeth', () => {
test('a gutted assign_waves step is rejected even when an incidental "files_modified overlap" phrase survives', () => {
const gutted = assignWavesStep(
[
@@ -236,7 +236,7 @@ describe('gsd-planner agent: same-wave overlap gate has teeth', () => {
' plan.wave = 1',
'```',
'',
'Beyond files_modified overlap: @~/.claude/gsd-core/references/planner-coupling.md',
'Beyond files_modified overlap: @~/.claude/msd-core/references/planner-coupling.md',
].join('\n')
);
assert.deepEqual(
@@ -372,7 +372,7 @@ describe('gsd-planner agent: same-wave overlap gate has teeth', () => {
});
test('the right step is extracted when earlier steps precede it', () => {
// gsd-planner.md carries 22 step blocks; the terminator search must start at the
// msd-planner.md carries 22 step blocks; the terminator search must start at the
// TARGET step's body, not at the document head, or every step but the first
// resolves to an empty body.
const document = [