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:
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* check-contract-drift.cjs
|
||||
*
|
||||
* Enforces that gsd-core/references/agent-contracts.md's `## Agent Registry`
|
||||
* Enforces that msd-core/references/agent-contracts.md's `## Agent Registry`
|
||||
* table stays in sync with reality:
|
||||
*
|
||||
* 1. The table itself must parse cleanly (no malformed rows).
|
||||
@@ -14,7 +14,7 @@
|
||||
* artifact+query`/`structured-return`, in which case any emitted
|
||||
* marker is itself a violation (vestigial_marker).
|
||||
* 4. Every `sentinel-match` row's declared markers must have at least one
|
||||
* exact-case consumer somewhere under gsd-core/workflows/, commands/,
|
||||
* exact-case consumer somewhere under msd-core/workflows/, commands/,
|
||||
* or agents/ (excluding the producing agent's own file).
|
||||
* 5. Registry roster coverage: every agents/*.md file has exactly one
|
||||
* row, every row names an agent file that exists
|
||||
@@ -47,9 +47,9 @@ function resolveRoot(argv) {
|
||||
}
|
||||
|
||||
const ROOT = resolveRoot(process.argv.slice(2));
|
||||
const CONTRACTS_FILE = path.join(ROOT, 'gsd-core', 'references', 'agent-contracts.md');
|
||||
const CONTRACTS_FILE = path.join(ROOT, 'msd-core', 'references', 'agent-contracts.md');
|
||||
const AGENTS_DIR = path.join(ROOT, 'agents');
|
||||
const WORKFLOWS_DIR = path.join(ROOT, 'gsd-core', 'workflows');
|
||||
const WORKFLOWS_DIR = path.join(ROOT, 'msd-core', 'workflows');
|
||||
const COMMANDS_DIR = path.join(ROOT, 'commands');
|
||||
|
||||
const {
|
||||
@@ -92,27 +92,27 @@ function toRepoRelative(absPath) {
|
||||
/**
|
||||
* referenceIncludes(content)
|
||||
*
|
||||
* Plain scan for `@~/.claude/gsd-core/references/*.md` tokens anywhere in an
|
||||
* Plain scan for `@~/.claude/msd-core/references/*.md` tokens anywhere in an
|
||||
* agent file's content -- inside an `<execution_context>` block (already
|
||||
* covered structurally by `executionContextRefs` in command-contract-helpers,
|
||||
* but a raw regex over the whole string picks those up too) and, just as
|
||||
* importantly, OUTSIDE one: agents frequently point at a reference doc from
|
||||
* plain prose (e.g. "See @~/.claude/gsd-core/references/planner-guidance.md
|
||||
* plain prose (e.g. "See @~/.claude/msd-core/references/planner-guidance.md
|
||||
* for ...") rather than from the eager `<execution_context>` include list.
|
||||
* An agent's completion-marker contract can be authored in such a reference
|
||||
* file rather than the agent file itself -- gsd-planner declares
|
||||
* file rather than the agent file itself -- msd-planner declares
|
||||
* `PLANNING COMPLETE` in its registry row, but the example heading itself
|
||||
* lives in `gsd-core/references/planner-guidance.md`, which the agent only
|
||||
* lives in `msd-core/references/planner-guidance.md`, which the agent only
|
||||
* `@`-includes -- so the producer scan below must follow these includes to
|
||||
* see markers an agent's contract legitimately delegates to a reference doc.
|
||||
* Returns ROOT-relative paths (`gsd-core/references/foo.md`), de-duplicated.
|
||||
* Returns ROOT-relative paths (`msd-core/references/foo.md`), de-duplicated.
|
||||
*/
|
||||
function referenceIncludes(content) {
|
||||
const seen = new Set();
|
||||
const re = /@~\/\.claude\/gsd-core\/references\/[A-Za-z0-9._-]+\.md/g;
|
||||
const re = /@~\/\.claude\/msd-core\/references\/[A-Za-z0-9._-]+\.md/g;
|
||||
let m;
|
||||
while ((m = re.exec(content)) !== null) {
|
||||
const relPath = 'gsd-core/references/' + m[0].slice('@~/.claude/gsd-core/references/'.length);
|
||||
const relPath = 'msd-core/references/' + m[0].slice('@~/.claude/msd-core/references/'.length);
|
||||
seen.add(relPath);
|
||||
}
|
||||
return [...seen];
|
||||
@@ -199,7 +199,7 @@ function main() {
|
||||
}
|
||||
}
|
||||
|
||||
// consumerTexts: every *.md under gsd-core/workflows/, commands/, agents/
|
||||
// consumerTexts: every *.md under msd-core/workflows/, commands/, agents/
|
||||
// — plus every file-shaped `Consumed by` entry that resolves on disk, so
|
||||
// a row citing a reference doc or an ADR (e.g. intel-updater's
|
||||
// docs/adr/22-plan-drift-guard.md) is validated against the real file and
|
||||
@@ -292,7 +292,7 @@ function main() {
|
||||
process.stderr.write('\n');
|
||||
}
|
||||
|
||||
process.stderr.write('See gsd-core/references/agent-contracts.md for the registry contract spec.\n\n');
|
||||
process.stderr.write('See msd-core/references/agent-contracts.md for the registry contract spec.\n\n');
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user