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:
@@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user