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:
@@ -5,13 +5,13 @@
|
||||
* depend on jq.
|
||||
*
|
||||
* The workflows resolved configured scalars / model ids / verify status with a
|
||||
* `gsd_run query <cmd> … | jq … 2>/dev/null || <default>` shape. On any machine
|
||||
* `msd_run query <cmd> … | jq … 2>/dev/null || <default>` shape. On any machine
|
||||
* without jq (the default on Windows / Git-Bash) the jq stage fails with exit
|
||||
* 127, that failure is swallowed by `2>/dev/null` and the trailing `|| default`,
|
||||
* so the variable comes back EMPTY — the configured value is silently dropped
|
||||
* and the lane falls back to CLI defaults with no diagnostic.
|
||||
*
|
||||
* gsd-tools ships native flags that do the same job with no external dep:
|
||||
* msd-tools ships native flags that do the same job with no external dep:
|
||||
* config-get <key> --raw (strips JSON quotes off a scalar)
|
||||
* resolve-model <id> --pick model (descends an object)
|
||||
* verification.status <dir> --pick status
|
||||
@@ -29,7 +29,7 @@ const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
const ROOT = path.join(__dirname, '..');
|
||||
const WF = path.join(ROOT, 'gsd-core', 'workflows');
|
||||
const WF = path.join(ROOT, 'msd-core', 'workflows');
|
||||
|
||||
// The workflows that #2589 audited. Scoped explicitly so a new workflow
|
||||
// introducing the same smell is caught by the general guard below, while these
|
||||
@@ -99,11 +99,11 @@ describe('#2589: config/model/verify lookups do not depend on jq', () => {
|
||||
}
|
||||
});
|
||||
|
||||
test('general guard: no audited workflow pipes any gsd_run query to jq', () => {
|
||||
test('general guard: no audited workflow pipes any msd_run query to jq', () => {
|
||||
// Belt-and-suspenders: the jq-replaceable query command families. This
|
||||
// catches a future regression on any of them (or a sibling like
|
||||
// resolve-execution, which also supports --pick) without enumerating keys.
|
||||
const re = /gsd_run\s+query\s+(config-get|resolve-model|resolve-execution|verification\.status\b)[^|\n]*\|\s*jq\b/; // allow-adhoc-markdown: shell-pipe-to-jq detector, not a markdown table scan
|
||||
const re = /msd_run\s+query\s+(config-get|resolve-model|resolve-execution|verification\.status\b)[^|\n]*\|\s*jq\b/; // allow-adhoc-markdown: shell-pipe-to-jq detector, not a markdown table scan
|
||||
for (const name of AUDITED) {
|
||||
const content = readWorkflow(name);
|
||||
if (content == null) continue;
|
||||
@@ -111,7 +111,7 @@ describe('#2589: config/model/verify lookups do not depend on jq', () => {
|
||||
assert.deepEqual(
|
||||
matches || [],
|
||||
[],
|
||||
`${name}: no gsd_run query (config-get|resolve-model|resolve-execution|verification.status) may pipe to jq (found ${JSON.stringify(matches)})`,
|
||||
`${name}: no msd_run query (config-get|resolve-model|resolve-execution|verification.status) may pipe to jq (found ${JSON.stringify(matches)})`,
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -126,10 +126,10 @@ describe('#2589: config/model/verify lookups do not depend on jq', () => {
|
||||
const content = readWorkflow('ship.md');
|
||||
assert.ok(content, 'ship.md must exist');
|
||||
|
||||
const statusIdx = content.indexOf('STATUS=$(gsd_run query verification.status');
|
||||
const statusIdx = content.indexOf('STATUS=$(msd_run query verification.status');
|
||||
assert.notEqual(statusIdx, -1, 'ship.md must read verification.status --pick status');
|
||||
|
||||
const picks = content.match(/gsd_run query verification\.status "\$\{PHASE_DIR\}" --pick (\w+)/g) || [];
|
||||
const picks = content.match(/msd_run query verification\.status "\$\{PHASE_DIR\}" --pick (\w+)/g) || [];
|
||||
assert.deepEqual(
|
||||
picks.length,
|
||||
3,
|
||||
@@ -153,7 +153,7 @@ describe('#2589: config/model/verify lookups do not depend on jq', () => {
|
||||
test('review.md still declares jq a prerequisite for the lanes that genuinely need it', () => {
|
||||
// Dropping the jq pipes from the CONFIG lookups must not drop the project's
|
||||
// jq-prerequisite declaration: the ollama / lm_studio / llama_cpp / opencode
|
||||
// / agy lanes parse HTTP + CLI JSON that gsd-tools does not emit, so they
|
||||
// / agy lanes parse HTTP + CLI JSON that msd-tools does not emit, so they
|
||||
// still hard-require jq. Removing the declaration (as the first cut of this
|
||||
// fix did) leaves those lanes silently degrading on a jq-less host — the
|
||||
// exact defect class #2589 exists to close.
|
||||
@@ -188,11 +188,11 @@ describe('#2589: config/model/verify lookups do not depend on jq', () => {
|
||||
});
|
||||
|
||||
test('update-context lookups do not pipe to jq (#1854)', () => {
|
||||
// update-context returns {installedVersion, scope, runtime, gsdDir}. The
|
||||
// update-context returns {installedVersion, scope, runtime, msdDir}. The
|
||||
// original sweep did not cover it, so update.md kept four `| jq -r '.field'`
|
||||
// reads. On a jq-less host all four come back EMPTY, which does not fail
|
||||
// loudly — it silently reproduces the fresh-install fallback
|
||||
// (INSTALLED_VERSION=0.0.0, scope UNKNOWN), so `/gsd:update` re-installs
|
||||
// (INSTALLED_VERSION=0.0.0, scope UNKNOWN), so `/msd:update` re-installs
|
||||
// over a working install and targets the wrong runtime directory.
|
||||
const re = /update-context\b[^|\n]*\|\s*jq\b/; // allow-adhoc-markdown: shell-pipe-to-jq detector, not a markdown table scan
|
||||
for (const name of AUDITED) {
|
||||
@@ -213,7 +213,7 @@ describe('#2589: config/model/verify lookups do not depend on jq', () => {
|
||||
// only correct when every field still lands.
|
||||
const content = readWorkflow('update.md');
|
||||
assert.ok(content, 'update.md must exist');
|
||||
for (const field of ['installedVersion', 'scope', 'runtime', 'gsdDir']) {
|
||||
for (const field of ['installedVersion', 'scope', 'runtime', 'msdDir']) {
|
||||
assert.match(
|
||||
content,
|
||||
new RegExp(`uc_field\\s+${field}\\b`),
|
||||
|
||||
Reference in New Issue
Block a user