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

@@ -14,7 +14,7 @@
* Trae has NO hook surface at all (`hooksSurface: "none"`,
* `extendedHookEvents: []`, `installSurface: "profile-marker-only"`) — its
* `hookBus` axis is `'engine'` (VSCode-fork extension-host lifecycle, not a
* GSD-managed hook dialect), so unlike qwen/kilo this file does not assert an
* MSD-managed hook dialect), so unlike qwen/kilo this file does not assert an
* extendedHookEvents surface. Four of Trae's six dispatch sub-axes
* (`nested`, `maxDepth`, `subagentToolkit`, `backgroundDispatch`) are
* `'undocumented'` — no authoritative Trae doc states them — which is what
@@ -29,19 +29,19 @@ const fs = require('node:fs');
const path = require('node:path');
const fc = require('fast-check');
process.env['GSD_TEST_MODE'] = '1';
process.env['MSD_TEST_MODE'] = '1';
const { createImperativeAdapter } = require('../gsd-core/bin/lib/adapter-imperative.cjs');
const { createImperativeAdapter } = require('../msd-core/bin/lib/adapter-imperative.cjs');
const {
profileOf,
negotiateHostCapabilities,
shouldFlattenDispatch,
PROFILE_BASELINES,
UNDOCUMENTED,
} = require('../gsd-core/bin/lib/host-integration.cjs');
const { getProjectInstructionFile } = require('../gsd-core/bin/lib/runtime-name-policy.cjs');
} = require('../msd-core/bin/lib/host-integration.cjs');
const { getProjectInstructionFile } = require('../msd-core/bin/lib/runtime-name-policy.cjs');
const { convertClaudeToTraeMarkdown } = require('../bin/install.js');
const runtimeArtifactConversion = require('../gsd-core/bin/lib/runtime-artifact-conversion.cjs');
const runtimeArtifactConversion = require('../msd-core/bin/lib/runtime-artifact-conversion.cjs');
const { runMinimalInstall, walk } = require('./helpers/install-shared.cjs');
const { cleanup } = require('./helpers.cjs');
@@ -174,9 +174,9 @@ test('no `runtime === "trae"` string-equality branch remains in the descriptor-m
* path instead of resolving to the Trae rules file.
*
* Defects collided (see
* .gsd/bug/fix-2658-trae-runtime-not-detected-falls-back-to-/10-diagnosis.md):
* .msd/bug/fix-2658-trae-runtime-not-detected-falls-back-to-/10-diagnosis.md):
*
* 1. `gsd-core/workflows/new-project.md` AND `gsd-core/workflows/ingest-docs.md`
* 1. `msd-core/workflows/new-project.md` AND `msd-core/workflows/ingest-docs.md`
* (found during this remediation — same pattern, same gap, not just
* new-project.md as originally reported) never recognized trae (path
* `/.trae/` or env `TRAE_CONFIG_DIR`) in their runtime-detection blocks —
@@ -204,7 +204,7 @@ test('no `runtime === "trae"` string-equality branch remains in the descriptor-m
* (defect 3's fix) never fire on that already-rewritten text, and the
* bare fallback still doubles the prefix — a first attempt at fixing
* this handled only the `./.trae/CLAUDE.md` shape and missed the
* `~/.claude/` / `$HOME/.claude/` forms `gsd-core/workflows/profile-user.md`
* `~/.claude/` / `$HOME/.claude/` forms `msd-core/workflows/profile-user.md`
* actually uses, caught by row 12 (the real spawned install) below on a
* second run. Fixed with a prefix-preserving pattern (capture whatever
* precedes a `.trae/` tail, keep it, fix only the filename suffix)
@@ -281,8 +281,8 @@ describe('#2658: trae runtime detection and instruction path (folded from fix-26
['local relative (post "./.claude/" -> "./.trae/" rewrite)', './.trae/CLAUDE.md', './.trae/rules/rules.md'],
[
'local install absolute path (post "./.claude/" -> "<tmp-root>/.trae/" rewrite)',
'/private/var/folders/xx/gsd-trae-local-abc123/.trae/CLAUDE.md',
'/private/var/folders/xx/gsd-trae-local-abc123/.trae/rules/rules.md',
'/private/var/folders/xx/msd-trae-local-abc123/.trae/CLAUDE.md',
'/private/var/folders/xx/msd-trae-local-abc123/.trae/rules/rules.md',
],
['global tilde (post "~/.claude/" -> "~/.trae/" rewrite)', '~/.trae/CLAUDE.md', '~/.trae/rules/rules.md'],
['backtick-wrapped local relative', '`./.trae/CLAUDE.md`', '`./.trae/rules/rules.md`'],
@@ -325,7 +325,7 @@ describe('#2658: trae runtime detection and instruction path (folded from fix-26
['local relative prefix (post "./.claude/" -> "./.trae/" rewrite)', './.trae/CLAUDE.md'],
[
'nested project-path absolute prefix (post "./.claude/" -> "<tmp-root>/.trae/" rewrite)',
'/private/var/folders/xx/gsd-trae-local-abc123/.trae/CLAUDE.md',
'/private/var/folders/xx/msd-trae-local-abc123/.trae/CLAUDE.md',
],
['global tilde prefix (post "~/.claude/" -> "~/.trae/" rewrite)', '~/.trae/CLAUDE.md'],
['$HOME-variable prefix (post "$HOME/.claude/" -> "$HOME/.trae/" rewrite)', '$HOME/.trae/CLAUDE.md'],
@@ -364,7 +364,7 @@ describe('#2658: trae runtime detection and instruction path (folded from fix-26
try {
const files = walk(configDir)
.filter((f) => /\.(md|js|cjs)$/.test(f))
// gsd-core/CHANGELOG.md is excluded by exact relative path (not a blanket
// msd-core/CHANGELOG.md is excluded by exact relative path (not a blanket
// .md skip — the emitted agent/command/workflow markdown this gate exists
// to guard stays fully scanned). CHANGELOG.md legitimately QUOTES the
// malformed `.claude/.trae/rules` / `.trae/.trae/rules` strings while
@@ -372,7 +372,7 @@ describe('#2658: trae runtime detection and instruction path (folded from fix-26
// citation is not a regression of the installer's actual output. Verified
// empirically: excluding only this one file drops the hit count to zero
// across all 620 other emitted files.
.filter((f) => f.split(path.sep).join('/').indexOf('gsd-core/CHANGELOG.md') === -1);
.filter((f) => f.split(path.sep).join('/').indexOf('msd-core/CHANGELOG.md') === -1);
assert.ok(files.length > 0, 'expected at least one emitted .md/.js/.cjs file');
for (const file of files) {
const content = fs.readFileSync(file, 'utf8');
@@ -386,7 +386,7 @@ describe('#2658: trae runtime detection and instruction path (folded from fix-26
});
describe('#2658 acceptance criterion 3: new-project.md / ingest-docs.md detect trae before falling back to claude', () => {
const workflowsDir = path.join(REPO_ROOT, 'gsd-core', 'workflows');
const workflowsDir = path.join(REPO_ROOT, 'msd-core', 'workflows');
test('new-project.md recognizes /.trae/ path and TRAE_CONFIG_DIR before the claude fallback', () => {
const content = fs.readFileSync(path.join(workflowsDir, 'new-project.md'), 'utf8');