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:
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* Behavioral tests for markdown-table.cjs
|
||||
*
|
||||
* Module: gsd-core/bin/lib/markdown-table.cjs
|
||||
* Module: msd-core/bin/lib/markdown-table.cjs
|
||||
* Exports: parseMarkdownTable, matchTableSchema, TABLE_SCHEMAS
|
||||
*
|
||||
* Covers:
|
||||
@@ -24,7 +24,7 @@ const path = require('node:path');
|
||||
const fc = require('./helpers/fast-check-setup.cjs');
|
||||
|
||||
const {
|
||||
migrateQuickTasksTable, parseMarkdownTable, matchTableSchema, TABLE_SCHEMAS, appendQuickTaskRow, findTableBySchema, findTableWithColumns, updateTableCell, deleteTableRow, resetQuickTaskRows, QUICK_TASKS_SECTION_ABSENT } = require('../gsd-core/bin/lib/markdown-table.cjs');
|
||||
migrateQuickTasksTable, parseMarkdownTable, matchTableSchema, TABLE_SCHEMAS, appendQuickTaskRow, findTableBySchema, findTableWithColumns, updateTableCell, deleteTableRow, resetQuickTaskRows, QUICK_TASKS_SECTION_ABSENT } = require('../msd-core/bin/lib/markdown-table.cjs');
|
||||
const { buildHeader, normalize } = require('../scripts/lint-table-schema-drift.cjs');
|
||||
|
||||
const ROOT = path.join(__dirname, '..');
|
||||
@@ -464,7 +464,7 @@ describe('appendQuickTaskRow (#2133)', () => {
|
||||
// ─── quick-tasks-append: canonical row + no forced progress re-derive (#3356) ──
|
||||
//
|
||||
// #3356 named two independent, silent (exit 0, ok:true) defects in
|
||||
// `routeQuickTasksAppend` (gsd-core/bin/gsd-tools.cjs): (1) the emitted `#`
|
||||
// `routeQuickTasksAppend` (msd-core/bin/msd-tools.cjs): (1) the emitted `#`
|
||||
// cell was hardcoded to a positional ordinal and `Directory` hardcoded to
|
||||
// `'—'`, so the row could never match the canonical row `workflows/
|
||||
// quick.md`'s Step 7c documents even though quick.md:635 (pre-fix :617)
|
||||
@@ -479,7 +479,7 @@ describe('appendQuickTaskRow (#2133)', () => {
|
||||
// `routeQuickTasksAppend` now (a) accepts `--quick-id`/`--slug`/`--directory`
|
||||
// to render the canonical row, and (b) passes `{ resync: false }`. Per
|
||||
// ADR-3180 Decision 4(b) / epic #3473 B7, the two CLI-level tests below drive
|
||||
// the real `gsd-tools quick-tasks-append` subcommand and assert on ITS
|
||||
// the real `msd-tools quick-tasks-append` subcommand and assert on ITS
|
||||
// emitted output / the STATE.md it writes — not on `appendQuickTaskRow`'s
|
||||
// return value alone, which a helper-only test would leave unproven at the
|
||||
// consumer boundary.
|
||||
@@ -524,7 +524,7 @@ describe('appendQuickTaskRow quickId widening (#3356 defect 1, unit)', () => {
|
||||
});
|
||||
|
||||
describe('CLI: quick-tasks-append (#3356)', () => {
|
||||
const { createTempProject, cleanup, runGsdTools } = require('./helpers.cjs');
|
||||
const { createTempProject, cleanup, runMsdTools } = require('./helpers.cjs');
|
||||
|
||||
/** Minimal STATE.md with a Quick Tasks table and a curated progress block. */
|
||||
function writeState(tmpDir, totalPhases) {
|
||||
@@ -554,7 +554,7 @@ describe('CLI: quick-tasks-append (#3356)', () => {
|
||||
t.after(() => cleanup(tmpDir));
|
||||
writeState(tmpDir, 25);
|
||||
|
||||
const r = runGsdTools(
|
||||
const r = runMsdTools(
|
||||
['quick-tasks-append', '--task', 'Fix thing', '--quick-id', '260811-gfl', '--slug', 'fix-thing'],
|
||||
tmpDir,
|
||||
);
|
||||
@@ -576,7 +576,7 @@ describe('CLI: quick-tasks-append (#3356)', () => {
|
||||
t.after(() => cleanup(tmpDir));
|
||||
writeState(tmpDir, 25);
|
||||
|
||||
const r = runGsdTools(['quick-tasks-append', '--task', 'Fix thing'], tmpDir);
|
||||
const r = runMsdTools(['quick-tasks-append', '--task', 'Fix thing'], tmpDir);
|
||||
assert.ok(r.success, `quick-tasks-append should succeed: ${r.error}`);
|
||||
const out = JSON.parse(r.output);
|
||||
assert.ok(/^\| 1 \| Fix thing \| .* \| — \|$/.test(out.row), `expected the ordinal + em-dash fallback, got: ${out.row}`);
|
||||
@@ -594,7 +594,7 @@ describe('CLI: quick-tasks-append (#3356)', () => {
|
||||
fs.writeFileSync(path.join(tmpDir, '.planning', 'ROADMAP.md'), '# Roadmap\n\n## Phase 1: Alpha\n## Phase 2: Beta\n');
|
||||
writeState(tmpDir, 25);
|
||||
|
||||
const r = runGsdTools(['quick-tasks-append', '--task', 'Fix thing'], tmpDir);
|
||||
const r = runMsdTools(['quick-tasks-append', '--task', 'Fix thing'], tmpDir);
|
||||
assert.ok(r.success, `quick-tasks-append should succeed: ${r.error}`);
|
||||
|
||||
const stateContent = fs.readFileSync(path.join(tmpDir, '.planning', 'STATE.md'), 'utf8');
|
||||
@@ -1112,27 +1112,27 @@ describe('TABLE_SCHEMAS parity: registry headers must appear verbatim in their s
|
||||
);
|
||||
}
|
||||
|
||||
test('RoadmapProgress variants appear in gsd-core/templates/roadmap.md', () => {
|
||||
test('RoadmapProgress variants appear in msd-core/templates/roadmap.md', () => {
|
||||
for (const variant of TABLE_SCHEMAS.RoadmapProgress) {
|
||||
assertHeaderInFile('gsd-core/templates/roadmap.md', variant);
|
||||
assertHeaderInFile('msd-core/templates/roadmap.md', variant);
|
||||
}
|
||||
});
|
||||
|
||||
test('RequirementsTraceability variant appears in gsd-core/templates/requirements.md', () => {
|
||||
test('RequirementsTraceability variant appears in msd-core/templates/requirements.md', () => {
|
||||
for (const variant of TABLE_SCHEMAS.RequirementsTraceability) {
|
||||
assertHeaderInFile('gsd-core/templates/requirements.md', variant);
|
||||
assertHeaderInFile('msd-core/templates/requirements.md', variant);
|
||||
}
|
||||
});
|
||||
|
||||
test('QuickTasks variants appear in gsd-core/workflows/quick.md', () => {
|
||||
test('QuickTasks variants appear in msd-core/workflows/quick.md', () => {
|
||||
for (const variant of TABLE_SCHEMAS.QuickTasks) {
|
||||
assertHeaderInFile('gsd-core/workflows/quick.md', variant);
|
||||
assertHeaderInFile('msd-core/workflows/quick.md', variant);
|
||||
}
|
||||
});
|
||||
|
||||
test('Security variants appear in gsd-core/templates/SECURITY.md', () => {
|
||||
test('Security variants appear in msd-core/templates/SECURITY.md', () => {
|
||||
for (const variant of TABLE_SCHEMAS.Security) {
|
||||
assertHeaderInFile('gsd-core/templates/SECURITY.md', variant);
|
||||
assertHeaderInFile('msd-core/templates/SECURITY.md', variant);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -1613,12 +1613,12 @@ describe('migrateQuickTasksTable (#3730 option b)', () => {
|
||||
});
|
||||
|
||||
describe('quick-tasks-migrate CLI and workflow wiring (#3730)', () => {
|
||||
const { createTempProject, cleanup, runGsdTools } = require('./helpers.cjs');
|
||||
const { createTempProject, cleanup, runMsdTools } = require('./helpers.cjs');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
test('quick-tasks-migrate CLI round-trip', (t) => {
|
||||
const tmpDir = createTempProject('gsd-3730-cli-');
|
||||
const tmpDir = createTempProject('msd-3730-cli-');
|
||||
t.after(() => cleanup(tmpDir));
|
||||
const statePath = path.join(tmpDir, '.planning', 'STATE.md');
|
||||
fs.writeFileSync(statePath, [
|
||||
@@ -1628,7 +1628,7 @@ describe('quick-tasks-migrate CLI and workflow wiring (#3730)', () => {
|
||||
'| 2026-04-17 | 260417-abc | bootstrap | roles/x |',
|
||||
].join('\n'));
|
||||
|
||||
const first = runGsdTools('quick-tasks-migrate', tmpDir);
|
||||
const first = runMsdTools('quick-tasks-migrate', tmpDir);
|
||||
assert.equal(first.success, true, `migrate failed: ${first.error}`);
|
||||
const firstOut = JSON.parse(first.output);
|
||||
assert.equal(firstOut.migrated, true);
|
||||
@@ -1636,18 +1636,18 @@ describe('quick-tasks-migrate CLI and workflow wiring (#3730)', () => {
|
||||
assert.ok(fs.readFileSync(statePath, 'utf8').includes('| # | Description | Date | Commit | Status | Directory |'),
|
||||
'STATE.md rewritten to canonical');
|
||||
|
||||
const second = runGsdTools('quick-tasks-migrate', tmpDir);
|
||||
const second = runMsdTools('quick-tasks-migrate', tmpDir);
|
||||
assert.equal(second.success, true, `second migrate failed: ${second.error}`);
|
||||
assert.equal(JSON.parse(second.output).migrated, false, 'a canonical table is a no-op');
|
||||
});
|
||||
|
||||
test('quick and fast run the migration check first', () => {
|
||||
const fast = fs.readFileSync(path.join(__dirname, '..', 'gsd-core', 'workflows', 'fast.md'), 'utf8');
|
||||
const quick = fs.readFileSync(path.join(__dirname, '..', 'gsd-core', 'workflows', 'quick.md'), 'utf8');
|
||||
const fast = fs.readFileSync(path.join(__dirname, '..', 'msd-core', 'workflows', 'fast.md'), 'utf8');
|
||||
const quick = fs.readFileSync(path.join(__dirname, '..', 'msd-core', 'workflows', 'quick.md'), 'utf8');
|
||||
// Compare the INVOCATIONS, not first prose mentions — fast.md's prose
|
||||
// names the append helper (~line 77) before the bash block that runs both.
|
||||
const fastMigrate = fast.indexOf('gsd_run quick-tasks-migrate');
|
||||
const fastAppend = fast.indexOf('gsd_run quick-tasks-append');
|
||||
const fastMigrate = fast.indexOf('msd_run quick-tasks-migrate');
|
||||
const fastAppend = fast.indexOf('msd_run quick-tasks-append');
|
||||
assert.ok(fastMigrate !== -1, 'fast.md invokes quick-tasks-migrate');
|
||||
assert.ok(fastAppend !== -1 && fastMigrate < fastAppend, 'the migration runs BEFORE the append');
|
||||
assert.ok(quick.includes('quick-tasks-migrate'),
|
||||
|
||||
Reference in New Issue
Block a user