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

@@ -3,10 +3,10 @@
/**
* #1577 — `security.injection_blocking` is a first-class config key.
*
* The gsd-read-injection-scanner hook reads `.planning/config.json`
* The msd-read-injection-scanner hook reads `.planning/config.json`
* `security.injection_blocking` to decide whether a HIGH detection blocks
* (opt-in) vs. stays advisory (default). Before this, the key was unregistered:
* `isValidConfigKey` returned false and `gsd config-set security.injection_blocking`
* `isValidConfigKey` returned false and `msd config-set security.injection_blocking`
* was rejected as "Unknown config key" — the knob was settable only by hand-editing
* config.json. These tests lock the registration + the nested write shape the hook
* reads, and the advisory-by-default contract.
@@ -16,9 +16,9 @@ const { describe, test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { createTempProject, cleanup, runGsdTools } = require('./helpers.cjs');
const { isValidConfigKey } = require('../gsd-core/bin/lib/config-schema.cjs');
const { CONFIG_DEFAULTS } = require('../gsd-core/bin/lib/configuration.cjs');
const { createTempProject, cleanup, runMsdTools } = require('./helpers.cjs');
const { isValidConfigKey } = require('../msd-core/bin/lib/config-schema.cjs');
const { CONFIG_DEFAULTS } = require('../msd-core/bin/lib/configuration.cjs');
describe('#1577 — security.injection_blocking config key', () => {
test('isValidConfigKey accepts security.injection_blocking', () => {
@@ -46,7 +46,7 @@ describe('#1577 — security.injection_blocking config key', () => {
test('config-set writes the nested shape the hook reads, and round-trips', () => {
const proj = createTempProject();
try {
const res = runGsdTools(['config-set', 'security.injection_blocking', 'true'], proj);
const res = runMsdTools(['config-set', 'security.injection_blocking', 'true'], proj);
assert.ok(res.success, `config-set should succeed: ${res.output || ''}`);
// The hook reads cfg.security?.injection_blocking === true — assert the
@@ -55,7 +55,7 @@ describe('#1577 — security.injection_blocking config key', () => {
assert.equal(cfg.security.injection_blocking, true, 'must persist nested security.injection_blocking');
assert.equal(cfg['security.injection_blocking'], undefined, 'must NOT persist a flat dotted key');
const get = runGsdTools(['config-get', 'security.injection_blocking'], proj);
const get = runMsdTools(['config-get', 'security.injection_blocking'], proj);
assert.ok(get.success, `config-get should succeed: ${get.output || ''}`);
assert.match(String(get.output || ''), /true/, 'config-get should read back true');
} finally {