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,7 +19,7 @@ const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { createImperativeAdapter } = require('../gsd-core/bin/lib/adapter-imperative.cjs');
const { createImperativeAdapter } = require('../msd-core/bin/lib/adapter-imperative.cjs');
const {
profileOf,
negotiateHostCapabilities,
@@ -27,7 +27,7 @@ const {
extensionEventSurfaceFor,
PROFILE_BASELINES,
UNDOCUMENTED,
} = require('../gsd-core/bin/lib/host-integration.cjs');
} = require('../msd-core/bin/lib/host-integration.cjs');
const OC_CAP = JSON.parse(
fs.readFileSync(path.join(__dirname, '..', 'capabilities', 'opencode', 'capability.json'), 'utf8'),
@@ -71,7 +71,7 @@ test('synchronous dispatch force-flattens; the retracted axes would not have', (
// negotiation is built to fail CLOSED, so an unavailable concurrency
// capability must serialize rather than be trusted.
assert.equal(shouldFlattenDispatch(OC_AXES.dispatch), true,
'with background:false, GSD must force-flatten opencode dispatch (fail closed)');
'with background:false, MSD must force-flatten opencode dispatch (fail closed)');
// #2939: pin the retracted contract so a silent re-flip is caught. Under the depth-aware
// rule, flipping ONLY the two background booleans is no longer sufficient to background —
// opencode's axes lack nested:true + subagentToolkit:"full" + a depth budget > 1, so even
@@ -114,10 +114,10 @@ test('opencode descriptor declares runtime.hostBehaviors (the folded-in behavior
const hb = OC_CAP.runtime.hostBehaviors;
assert.ok(hb && typeof hb === 'object');
assert.equal(hb.combinedFamilyInstall, true, 'commands+skills+plugin install runs through the engine (adapter)');
assert.equal(hb.reapplyCommand, '/gsd-update --reapply');
assert.equal(hb.reapplyCommand, '/msd-update --reapply');
assert.equal(hb.attributionConfigResolver, 'opencode');
// #2329: OpenCode discovers commands from the PLURAL `commands/` dir; the
// singular `command/` made all /gsd-* commands invisible to OpenCode.
// singular `command/` made all /msd-* commands invisible to OpenCode.
assert.equal(hb.flatCommandDir, 'commands');
assert.equal(hb.frontmatterDialect, 'opencode');
assert.equal(hb.skipHomePrefixSubstitution, true);
@@ -128,8 +128,8 @@ test('opencode descriptor declares runtime.hostBehaviors (the folded-in behavior
// verbatim from a pre-skills-layout era and flagged every staged skill as
// user-added on every update).
assert.equal(hb.skipCodexSkillsManifest, undefined);
assert.equal(hb.nativePlugin.file, 'gsd-core.js');
assert.equal(hb.nativePlugin.source, '.opencode/plugins/gsd-core.js');
assert.equal(hb.nativePlugin.file, 'msd-core.js');
assert.equal(hb.nativePlugin.source, '.opencode/plugins/msd-core.js');
});
test('no `runtime === "opencode"` string-equality branch remains in the install source (AC2)', () => {
@@ -146,7 +146,7 @@ test('no `runtime === "opencode"` string-equality branch remains in the install
// ─── #4738: the opencode manifest must record the skills it stages ───────────
const { cleanup, runGsdTools, createTempDir } = require('./helpers.cjs');
const { cleanup, runMsdTools, createTempDir } = require('./helpers.cjs');
const { writeManifest } = require(path.join(__dirname, '..', 'bin', 'install.js'));
const { runMinimalInstall } = require('./helpers/install-shared.cjs');
@@ -154,34 +154,34 @@ describe('#4738: writeManifest records staged skills for opencode', () => {
let tmpDir;
beforeEach(() => {
tmpDir = createTempDir('gsd-4738-manifest-');
tmpDir = createTempDir('msd-4738-manifest-');
});
afterEach(() => {
cleanup(tmpDir);
});
test('manifest includes skills/gsd-xxx/SKILL.md entries for opencode (mirrors the kilo sibling)', () => {
test('manifest includes skills/msd-xxx/SKILL.md entries for opencode (mirrors the kilo sibling)', () => {
// Stage the structure an opencode install creates: converted skills under
// skills/gsd-*/SKILL.md (convertClaudeCommandToOpencodeSkill) plus the
// gsd-core directory writeManifest always records.
const skillDir = path.join(tmpDir, 'skills', 'gsd-next');
// skills/msd-*/SKILL.md (convertClaudeCommandToOpencodeSkill) plus the
// msd-core directory writeManifest always records.
const skillDir = path.join(tmpDir, 'skills', 'msd-next');
fs.mkdirSync(skillDir, { recursive: true });
fs.writeFileSync(path.join(skillDir, 'SKILL.md'), 'skill content');
const gsdDir = path.join(tmpDir, 'gsd-core');
fs.mkdirSync(gsdDir, { recursive: true });
fs.writeFileSync(path.join(gsdDir, 'test.md'), 'test');
const msdDir = path.join(tmpDir, 'msd-core');
fs.mkdirSync(msdDir, { recursive: true });
fs.writeFileSync(path.join(msdDir, 'test.md'), 'test');
writeManifest(tmpDir, 'opencode');
const manifest = JSON.parse(
fs.readFileSync(path.join(tmpDir, 'gsd-file-manifest.json'), 'utf8'),
fs.readFileSync(path.join(tmpDir, 'msd-file-manifest.json'), 'utf8'),
);
const skillEntries = Object.keys(manifest.files).filter((k) => k.startsWith('skills/'));
assert.ok(skillEntries.length > 0, 'manifest has skills/ entries for opencode');
assert.ok(
skillEntries.includes('skills/gsd-next/SKILL.md'),
'manifest records the staged skills/gsd-next/SKILL.md',
skillEntries.includes('skills/msd-next/SKILL.md'),
'manifest records the staged skills/msd-next/SKILL.md',
);
});
});
@@ -201,7 +201,7 @@ describe('#4738: a clean opencode install is invisible to detect-custom-files',
assert.ok(fs.existsSync(path.join(configDir, rel)), `staged file exists: ${rel}`);
}
const result = runGsdTools(['detect-custom-files', '--config-dir', configDir], root);
const result = runMsdTools(['detect-custom-files', '--config-dir', configDir], root);
assert.ok(result.success, `detector failed: ${result.error}`);
const json = JSON.parse(result.output);
assert.ok(Array.isArray(json.custom_files), 'the detector must emit a custom_files array');