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:
@@ -13,7 +13,7 @@
|
||||
*
|
||||
* Focus areas:
|
||||
* A. loop render-hooks execute:wave:post — resolution full/partial/none
|
||||
* B. check verify.schema-drift — no-schema/block/GSD_SKIP_SCHEMA_CHECK bypass
|
||||
* B. check verify.schema-drift — no-schema/block/MSD_SKIP_SCHEMA_CHECK bypass
|
||||
* C. check verify.codebase-drift — BVA threshold-1/threshold/auto-remap/no-STRUCTURE.md
|
||||
* D. check ui.safety-gate — frontend+UI-file/+spec/missing-arg
|
||||
* E. Full pipeline chain (render-hooks → dispatch each gate)
|
||||
@@ -33,7 +33,7 @@ const { cleanup, installSpawnEnv, withAmbientCapabilityHome } = require('./helpe
|
||||
const { gitOrThrow } = require('./helpers/git-fixture.cjs');
|
||||
const { LOOP_HOOK_POINT_CLI_TIMEOUT_MS } = require('./helpers/timeouts.cjs');
|
||||
|
||||
const GSD_TOOLS = path.join(__dirname, '..', 'gsd-core', 'bin', 'gsd-tools.cjs');
|
||||
const MSD_TOOLS = path.join(__dirname, '..', 'msd-core', 'bin', 'msd-tools.cjs');
|
||||
|
||||
// ─── Test-local git helper ───────────────────────────────────────────────────
|
||||
// Inline — NOT modifying tests/helpers.cjs per task rules.
|
||||
@@ -54,21 +54,21 @@ function gitAddCommit(dir, message) {
|
||||
gitSync(['commit', '--allow-empty', '-m', message], dir);
|
||||
}
|
||||
|
||||
// ─── GSD CLI runner ──────────────────────────────────────────────────────────
|
||||
// ─── MSD CLI runner ──────────────────────────────────────────────────────────
|
||||
|
||||
/**
|
||||
* Run gsd-tools and return { status, stdout, stderr, parsed? }.
|
||||
* Run msd-tools and return { status, stdout, stderr, parsed? }.
|
||||
* When raw=true the tool emits JSON; parsed is set on success.
|
||||
*/
|
||||
function runTool(args, { cwd, env = {} } = {}) {
|
||||
const childEnv = installSpawnEnv({
|
||||
GSD_SESSION_KEY: '',
|
||||
MSD_SESSION_KEY: '',
|
||||
CODEX_THREAD_ID: '',
|
||||
CLAUDE_SESSION_ID: '',
|
||||
CLAUDE_CODE_SSE_PORT: '',
|
||||
...env,
|
||||
});
|
||||
const r = spawnSync(process.execPath, [GSD_TOOLS, ...args], {
|
||||
const r = spawnSync(process.execPath, [MSD_TOOLS, ...args], {
|
||||
cwd: cwd || os.tmpdir(),
|
||||
encoding: 'utf8',
|
||||
env: childEnv,
|
||||
@@ -85,7 +85,7 @@ function runTool(args, { cwd, env = {} } = {}) {
|
||||
|
||||
const tmpDirs = [];
|
||||
function makeTmpDir() {
|
||||
const d = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-wave-post-'));
|
||||
const d = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-wave-post-'));
|
||||
tmpDirs.push(d);
|
||||
return d;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ after(() => { for (const d of tmpDirs) { try { cleanup(d); } catch { /* best-eff
|
||||
describe('A. loop render-hooks execute:wave:post — resolution', () => {
|
||||
|
||||
test('#4485: render-hooks ignores capabilities installed in ambient user locations', (t) => {
|
||||
withAmbientCapabilityHome(t, 'gsd-ambient-wave-post-', 'ambient-wave-post', 'execute:wave:post');
|
||||
withAmbientCapabilityHome(t, 'msd-ambient-wave-post-', 'ambient-wave-post', 'execute:wave:post');
|
||||
|
||||
const dir = makeTmpDir();
|
||||
const result = runTool(['loop', 'render-hooks', 'execute:wave:post', '--raw'], { cwd: dir });
|
||||
@@ -240,12 +240,12 @@ describe('B. check verify.schema-drift — CLI route', () => {
|
||||
`unpushed_orms must include 'prisma'; got ${JSON.stringify(result.unpushed_orms)}`);
|
||||
});
|
||||
|
||||
test('[negative] GSD_SKIP_SCHEMA_CHECK=true → block:false, skipped:true even with schema drift', () => {
|
||||
test('[negative] MSD_SKIP_SCHEMA_CHECK=true → block:false, skipped:true even with schema drift', () => {
|
||||
const dir = buildSchemaDriftFixture({ hasSchemaFile: true });
|
||||
|
||||
const r = runTool(['check', 'verify.schema-drift', '1', '--raw'], {
|
||||
cwd: dir,
|
||||
env: { GSD_SKIP_SCHEMA_CHECK: 'true' },
|
||||
env: { MSD_SKIP_SCHEMA_CHECK: 'true' },
|
||||
});
|
||||
assert.strictEqual(r.status, 0, `exit non-zero: ${r.stderr}`);
|
||||
assert.ok(r.parsed, `stdout not JSON: ${r.stdout}`);
|
||||
@@ -253,7 +253,7 @@ describe('B. check verify.schema-drift — CLI route', () => {
|
||||
|
||||
// Specific: block must be FALSE (bypassed) even though drift was detected
|
||||
assert.strictEqual(result.block, false,
|
||||
`block must be false with GSD_SKIP_SCHEMA_CHECK=true; got ${result.block}`);
|
||||
`block must be false with MSD_SKIP_SCHEMA_CHECK=true; got ${result.block}`);
|
||||
assert.strictEqual(result.skipped, true,
|
||||
`skipped must be true; got ${result.skipped}`);
|
||||
// drift_detected should still be true (bypass doesn't mask detection)
|
||||
@@ -601,7 +601,7 @@ describe('E. Full execute:wave:post pipeline — render-hooks then dispatch gate
|
||||
|
||||
describe('F. Real registry execute:wave:post shape — guard against accidental changes', () => {
|
||||
|
||||
const realRegistry = require('../gsd-core/bin/lib/capability-registry.cjs');
|
||||
const realRegistry = require('../msd-core/bin/lib/capability-registry.cjs');
|
||||
|
||||
test('[happy] real registry execute:wave:post has exactly 3 gates with correct queries', () => {
|
||||
const point = realRegistry.byLoopPoint['execute:wave:post'];
|
||||
@@ -640,7 +640,7 @@ describe('F. Real registry execute:wave:post shape — guard against accidental
|
||||
`ui.safety-gate onError must be 'halt'; got ${uiGate.onError}`);
|
||||
});
|
||||
|
||||
test('[happy] real registry: execute:wave:post has exactly 2 steps (#3661 code-review ref.skill:code-review pointFrom:workflow.code_review_point onError:skip; #2856 live-dom-uat gsd-dom-verifier, onError:skip) and 2 contributions (external-job executor + mempalace capture-problems)', () => {
|
||||
test('[happy] real registry: execute:wave:post has exactly 2 steps (#3661 code-review ref.skill:code-review pointFrom:workflow.code_review_point onError:skip; #2856 live-dom-uat msd-dom-verifier, onError:skip) and 2 contributions (external-job executor + mempalace capture-problems)', () => {
|
||||
const point = realRegistry.byLoopPoint['execute:wave:post'];
|
||||
assert.strictEqual(point.steps.length, 2,
|
||||
`execute:wave:post must have exactly 2 steps; got ${point.steps.length}`);
|
||||
@@ -659,8 +659,8 @@ describe('F. Real registry execute:wave:post shape — guard against accidental
|
||||
`execute:wave:post code-review step onError must be 'skip'; got ${codeReviewStep.onError}`);
|
||||
assert.strictEqual(domUatStep.capId, 'live-dom-uat',
|
||||
`execute:wave:post step capId must be 'live-dom-uat'; got ${domUatStep.capId}`);
|
||||
assert.deepStrictEqual(domUatStep.ref, { agent: 'gsd-dom-verifier' },
|
||||
`execute:wave:post step ref must be { agent: 'gsd-dom-verifier' }; got ${JSON.stringify(domUatStep.ref)}`);
|
||||
assert.deepStrictEqual(domUatStep.ref, { agent: 'msd-dom-verifier' },
|
||||
`execute:wave:post step ref must be { agent: 'msd-dom-verifier' }; got ${JSON.stringify(domUatStep.ref)}`);
|
||||
assert.strictEqual(domUatStep.onError, 'skip',
|
||||
`execute:wave:post step onError must be 'skip'; got ${domUatStep.onError}`);
|
||||
// #4740: claude-orchestration never contributed here (external-job +
|
||||
|
||||
Reference in New Issue
Block a user