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,11 +2,11 @@
|
||||
/**
|
||||
* lint-retired-runtime-name.cjs
|
||||
*
|
||||
* Prevents a RETIRED GSD runtime name from being presented as if it were a
|
||||
* Prevents a RETIRED MSD runtime name from being presented as if it were a
|
||||
* live runtime (#1928 retired the "Gemini CLI" runtime lane in favor of
|
||||
* Antigravity). Mirrors scripts/lint-legacy-dir-name.cjs's structure and
|
||||
* conventions (same problem shape: forbid a retired token, allowlist
|
||||
* frozen/legitimate content, self-exempt, inline marker, `GSD_LINT_*_REPO_ROOT`
|
||||
* frozen/legitimate content, self-exempt, inline marker, `MSD_LINT_*_REPO_ROOT`
|
||||
* test seam, ./lib/cli-exit.cjs, binary-file skip).
|
||||
*
|
||||
* THE PREDICATE (load-bearing — do not "simplify"):
|
||||
@@ -66,7 +66,7 @@ const { execFileSync } = require('child_process');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { ExitError, runMain } = require('./lib/cli-exit.cjs');
|
||||
const { escapeRegex } = require('../gsd-core/bin/lib/pattern.cjs');
|
||||
const { escapeRegex } = require('../msd-core/bin/lib/pattern.cjs');
|
||||
|
||||
// Table of retired runtimes. Each name is constructed via split-string
|
||||
// concatenation so this guard script cannot flag itself when scanned.
|
||||
@@ -89,21 +89,21 @@ const RETIRED_RUNTIME_MATCHERS = RETIRED_RUNTIMES.map((r) => ({
|
||||
// must never silently report "clean" (anti-vacuity requirement).
|
||||
const MIN_EXPECTED_FILES = 150;
|
||||
|
||||
const ALLOW_MARKER = 'gsd-allow-retired-runtime-name';
|
||||
const ALLOW_MARKER = 'msd-allow-retired-runtime-name';
|
||||
// The escape hatch must carry a justification. Bare-marker abuse was raised in
|
||||
// review: the marker is checked first, excuses the whole line, and the failure
|
||||
// message advertises it, so an unexplained one is indistinguishable from a
|
||||
// defect somebody silenced. Require `gsd-allow-retired-runtime-name: <reason>`.
|
||||
// defect somebody silenced. Require `msd-allow-retired-runtime-name: <reason>`.
|
||||
const ALLOW_MARKER_RE = new RegExp(escapeRegex(ALLOW_MARKER) + ':\\s*\\S{3,}');
|
||||
const SELF_PATH = path.resolve(__filename);
|
||||
// GSD_LINT_RETIRED_RUNTIME_REPO_ROOT is used by tests to redirect the guard
|
||||
// MSD_LINT_RETIRED_RUNTIME_REPO_ROOT is used by tests to redirect the guard
|
||||
// to a temporary fixture git repo without touching the real working tree.
|
||||
const REPO_ROOT = process.env.GSD_LINT_RETIRED_RUNTIME_REPO_ROOT
|
||||
? path.resolve(process.env.GSD_LINT_RETIRED_RUNTIME_REPO_ROOT)
|
||||
const REPO_ROOT = process.env.MSD_LINT_RETIRED_RUNTIME_REPO_ROOT
|
||||
? path.resolve(process.env.MSD_LINT_RETIRED_RUNTIME_REPO_ROOT)
|
||||
: path.resolve(__dirname, '..');
|
||||
|
||||
// Every tracked *.md file is in scope. An earlier prefix list
|
||||
// (docs/ gsd-core/ commands/ agents/ skills/ + root) left `.changeset/`,
|
||||
// (docs/ msd-core/ commands/ agents/ skills/ + root) left `.changeset/`,
|
||||
// `.github/`, `capabilities/`, `playbooks/` and `references/` invisible —
|
||||
// and `.changeset/*.md` RENDERS INTO CHANGELOG.md, which is blanket-trusted,
|
||||
// so a live claim introduced there was invisible at both ends.
|
||||
@@ -215,13 +215,13 @@ const ALLOWLIST_OCCURRENCES = new Map([
|
||||
['docs/zh-CN/how-to/install-on-your-runtime.md', [
|
||||
{ snippet: '与 Gemini 兼容的设置策略', reason: 'settings dialect Antigravity inherits' },
|
||||
]],
|
||||
['gsd-core/workflows/reapply-patches.md', [
|
||||
['msd-core/workflows/reapply-patches.md', [
|
||||
{ snippet: 'pre-#1928 Gemini CLI install', reason: 'legacy-install patch location, explicitly pre-retirement' },
|
||||
]],
|
||||
['gsd-core/workflows/settings-advanced.md', [
|
||||
{ snippet: '(Claude / OpenAI / Gemini / Qwen)', reason: 'model-provider menu, not a GSD runtime' },
|
||||
['msd-core/workflows/settings-advanced.md', [
|
||||
{ snippet: '(Claude / OpenAI / Gemini / Qwen)', reason: 'model-provider menu, not a MSD runtime' },
|
||||
]],
|
||||
['gsd-core/references/ai-frameworks.md', [
|
||||
['msd-core/references/ai-frameworks.md', [
|
||||
{ snippet: 'Google Cloud / Gemini-committed teams', reason: 'provider axis (Google ADK)' },
|
||||
{ snippet: 'Optimized for Gemini; supports other models', reason: 'model axis' },
|
||||
{ snippet: 'teams already committed to Gemini', reason: 'model axis' },
|
||||
@@ -229,13 +229,13 @@ const ALLOWLIST_OCCURRENCES = new Map([
|
||||
{ snippet: 'Gemini vendor lock-in in practice', reason: 'model axis' },
|
||||
{ snippet: 'Google/Gemini-committed', reason: 'provider axis (Google ADK)' },
|
||||
]],
|
||||
['agents/gsd-framework-selector.md', [
|
||||
['agents/msd-framework-selector.md', [
|
||||
// Two occurrences on one line: the menu label and its description.
|
||||
{ snippet: 'Google (Gemini)', reason: 'model-provider choice, not a GSD runtime' },
|
||||
{ snippet: 'Google (Gemini)', reason: 'model-provider choice, not a MSD runtime' },
|
||||
{ snippet: 'Committed to Gemini / Google Cloud / Vertex AI', reason: 'the same menu entry\'s description' },
|
||||
]],
|
||||
['agents/gsd-framework-selector.compact.md', [
|
||||
{ snippet: 'Google (Gemini)', reason: 'model-provider choice, not a GSD runtime' },
|
||||
['agents/msd-framework-selector.compact.md', [
|
||||
{ snippet: 'Google (Gemini)', reason: 'model-provider choice, not a MSD runtime' },
|
||||
]],
|
||||
]);
|
||||
|
||||
@@ -392,7 +392,7 @@ const RUNTIME_WORD_RE = new RegExp(
|
||||
// Positive evidence that the line is on the MODEL axis. Required, not merely
|
||||
// the absence of a runtime word: a reviewer demonstrated that "absence of a
|
||||
// veto word" is not evidence, with `The installer now offers Gemini 3.`,
|
||||
// `GSD installs cleanly on Gemini 3, Kimi, and Codex.` and
|
||||
// `MSD installs cleanly on Gemini 3, Kimi, and Codex.` and
|
||||
// `Supported agents include Gemini 3, Kimi, and Cursor.` all exiting 0 — the
|
||||
// exact laundering class this guard exists to catch. Every real model-axis
|
||||
// line in this repo names a model explicitly, so requiring it costs nothing
|
||||
@@ -417,9 +417,9 @@ const MODEL_WORD_RE = new RegExp(
|
||||
* of the pin's snippet, not merely share a line with it.
|
||||
*
|
||||
* Line-level containment was too weak: a reviewer showed
|
||||
* `Known provider menu update: Gemini CLI is once again a selectable GSD
|
||||
* `Known provider menu update: Gemini CLI is once again a selectable MSD
|
||||
* runtime.` and `Install target: Google (Gemini) — choose Gemini CLI as your
|
||||
* GSD runtime.` both exiting 0, because a short snippet elsewhere on the line
|
||||
* MSD runtime.` both exiting 0, because a short snippet elsewhere on the line
|
||||
* pre-approved a brand-new claim. Span containment means a pin can only ever
|
||||
* excuse the occurrence its own text covers.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user