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

@@ -21,9 +21,9 @@ const read = (p) => fs.readFileSync(path.join(ROOT, p), 'utf8');
describe('#3968 — measured commit claims', () => {
test('executor measures commits, never narrates them', () => {
const executor = read('agents/gsd-executor.md');
const executor = read('agents/msd-executor.md');
// The ledger: HEAD captured at the plan's first commit, once per plan.
assert.ok(executor.includes('gsd-plan-head-before'),
assert.ok(executor.includes('msd-plan-head-before'),
'the ledger must persist on disk (each Bash call is a fresh shell — a variable measures zero)');
assert.ok(executor.includes('git rev-list --count'),
'the SUMMARY commit count must come from git rev-list --count, not narration');
@@ -38,7 +38,7 @@ describe('#3968 — measured commit claims', () => {
});
test('verify-work flags SUMMARY-vs-git mismatch as BLOCKER', () => {
const verify = read('gsd-core/workflows/verify-work.md');
const verify = read('msd-core/workflows/verify-work.md');
assert.ok(verify.includes('Commit-claim reconciliation'),
'verify-work must run a commit-claim reconciliation over each SUMMARY');
assert.ok(verify.includes('ACTUAL=$(git rev-list --count "${BASE}"..HEAD)'),
@@ -58,7 +58,7 @@ describe('#3968 — measured commit claims', () => {
});
test('HANDOFF uncommitted_files come from git status --porcelain', () => {
const pause = read('gsd-core/workflows/pause-work.md');
const pause = read('msd-core/workflows/pause-work.md');
assert.ok(pause.includes('git status --porcelain'),
'uncommitted_files must be populated from an actual git status --porcelain call');
// The asserted-empty template literal is gone as the only source.
@@ -79,7 +79,7 @@ describe('#3968 — measured commit claims', () => {
describe('#4670 — bounded commit-claim reconciliation', () => {
test('executor records plan_head_after — the plan window bound (#4670)', () => {
const executor = read('agents/gsd-executor.md');
const executor = read('agents/msd-executor.md');
assert.ok(
executor.includes('plan_head_after: ${PLAN_HEAD_AFTER}'),
'the SUMMARY frontmatter must carry plan_head_after, captured at the measurement moment'
@@ -91,7 +91,7 @@ describe('#4670 — bounded commit-claim reconciliation', () => {
});
test('verify-work bounds the commit-claim window to the plan own history (#4670)', () => {
const verify = read('gsd-core/workflows/verify-work.md');
const verify = read('msd-core/workflows/verify-work.md');
const afterIdx = verify.indexOf('AFTER=$(grep -oE \'^plan_head_after: [0-9a-f]{7,40}\' "$SUMMARY_FILE" | awk \'{print $2}\')');
assert.ok(afterIdx !== -1, 'the reconciliation must extract plan_head_after');
assert.ok(
@@ -105,7 +105,7 @@ describe('#4670 — bounded commit-claim reconciliation', () => {
});
test('bounded mismatch stays a BLOCKER — #3968 failures still caught (#4670)', () => {
const verify = read('gsd-core/workflows/verify-work.md');
const verify = read('msd-core/workflows/verify-work.md');
const boundedIdx = verify.indexOf('#4670');
assert.ok(boundedIdx !== -1, 'the bounded reconciliation section must exist');
const section = verify.slice(boundedIdx, boundedIdx + 2400);
@@ -114,7 +114,7 @@ describe('#4670 — bounded commit-claim reconciliation', () => {
});
test('legacy SUMMARYs without plan_head_after fall back to the warning path (#4670)', () => {
const verify = read('gsd-core/workflows/verify-work.md');
const verify = read('msd-core/workflows/verify-work.md');
const afterNeedle = 'plan_head_after';
assert.ok(verify.includes(afterNeedle), 'plan_head_after must appear in verify-work');
// The legacy clause: a base without the anchor cannot be judged by the