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

@@ -4,7 +4,7 @@
// Per CONTRIBUTING.md exception matrix.
/**
* GSD Forensics Tests
* MSD Forensics Tests
*
* Validates the forensics command and workflow files exist,
* follow expected patterns, and cover all anomaly detection types.
@@ -18,17 +18,17 @@ const os = require('os');
const { cleanup } = require('./helpers.cjs');
const repoRoot = path.resolve(__dirname, '..');
const commandPath = path.join(repoRoot, 'commands', 'gsd', 'forensics.md');
const workflowPath = path.join(repoRoot, 'gsd-core', 'workflows', 'forensics.md');
const commandPath = path.join(repoRoot, 'commands', 'msd', 'forensics.md');
const workflowPath = path.join(repoRoot, 'msd-core', 'workflows', 'forensics.md');
describe('forensics command', () => {
test('command file exists', () => {
assert.ok(fs.existsSync(commandPath), 'commands/gsd/forensics.md should exist');
assert.ok(fs.existsSync(commandPath), 'commands/msd/forensics.md should exist');
});
test('command has correct frontmatter', () => {
const content = fs.readFileSync(commandPath, 'utf-8');
assert.ok(content.includes('name: gsd:forensics'), 'should have correct command name');
assert.ok(content.includes('name: msd:forensics'), 'should have correct command name');
assert.ok(content.includes('type: prompt'), 'should have type: prompt');
assert.ok(content.includes('argument-hint'), 'should have argument-hint');
});
@@ -144,25 +144,25 @@ describe('forensics workflow', () => {
);
});
test('workflow submits issues to open-gsd/gsd-core, not the current repo', () => {
test('workflow submits issues to golem15com/msd-core, not the current repo', () => {
const content = fs.readFileSync(workflowPath, 'utf-8');
// Scope check to the gh issue create invocation — a whole-file search would
// pass even if gh issue create lacked --repo, because gh label list also
// contains the repo string.
assert.match(
content,
/gh issue create[\s\S]{0,250}--repo\s+open-gsd\/gsd-core/,
'gh issue create must use --repo open-gsd/gsd-core to avoid submitting to the user\'s current project repo'
/gh issue create[\s\S]{0,250}--repo\s+golem15com\/msd-core/,
'gh issue create must use --repo golem15com/msd-core to avoid submitting to the user\'s current project repo'
);
});
test('workflow checks bug label in open-gsd/gsd-core, not the current repo', () => {
test('workflow checks bug label in golem15com/msd-core, not the current repo', () => {
const content = fs.readFileSync(workflowPath, 'utf-8');
// Regex is more robust than a fixed-length slice to formatting changes
assert.match(
content,
/gh label list[\s\S]{0,250}--repo\s+open-gsd\/gsd-core/,
'gh label list must target open-gsd/gsd-core'
/gh label list[\s\S]{0,250}--repo\s+golem15com\/msd-core/,
'gh label list must target golem15com/msd-core'
);
});
@@ -170,7 +170,7 @@ describe('forensics workflow', () => {
const content = fs.readFileSync(workflowPath, 'utf-8');
assert.ok(
content.includes('state record-session') || content.includes('state.record-session'),
'should update STATE.md via state record-session (CJS or gsd-sdk query)'
'should update STATE.md via state record-session (CJS or msd-sdk query)'
);
});
@@ -217,7 +217,7 @@ describe('forensics fixture-based tests', () => {
let tmpDir;
beforeEach(() => {
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-forensics-test-'));
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-forensics-test-'));
});
afterEach(() => {