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

@@ -1,6 +1,6 @@
# Adding a cross-platform portability lint rule
GSD must run correctly on Windows as well as macOS/Linux. The `DEFECT.WINDOWS-*`
MSD must run correctly on Windows as well as macOS/Linux. The `DEFECT.WINDOWS-*`
taxonomy in [`CONTEXT.md`](../../CONTEXT.md) names the recurring failure shapes; a family of
AST-based ESLint rules (the `local/*` plugin) enforces them **at write-time (in your editor)
and in CI**, so a Windows-only defect is caught before it ships — not after it reaches the

View File

@@ -36,8 +36,8 @@ will read it.
```bash
# 1. Clone
git clone https://github.com/open-gsd/gsd-core.git
cd gsd-core
git clone https://github.com/golem15com/msd-core.git
cd msd-core
# 2. Activate the pinned Node version
nvm use # nvm
@@ -202,25 +202,25 @@ Add these to your shell profile to make them permanent.
---
## Alternative: Docker via gsd-test-runner
## Alternative: Docker via msd-test-runner
For canonical Linux verification from a macOS dev box, use
[gsd-test-runner](https://github.com/open-gsd/gsd-test-runner).
[msd-test-runner](https://github.com/open-gsd/gsd-test-runner).
This is the same path CI uses for cross-platform coverage. It is the authoritative way
to confirm your change passes on Linux before opening a PR:
```bash
# One-time: install gsd-test-runner (see repo README)
# One-time: install msd-test-runner (see repo README)
# Then, from the project root:
gsd-test-summary
msd-test-summary
```
`gsd-test-summary` runs the full suite in a Docker container and emits a concise
`msd-test-summary` runs the full suite in a Docker container and emits a concise
`Mac: N failed / Docker: N failed` summary.
- **Default rule (code changes):** both lines must show `0 failed` before a PR is opened.
- **Exception (ADR/doc-only PRs):** if the diff is documentation-only (for example `docs/adr/*.md`, `docs/**/*.md`, `README*.md`) and contains no executable-code or test changes, `gsd-test-summary` is optional.
- **Exception (ADR/doc-only PRs):** if the diff is documentation-only (for example `docs/adr/*.md`, `docs/**/*.md`, `README*.md`) and contains no executable-code or test changes, `msd-test-summary` is optional.
When using the doc-only exception, note it explicitly in the PR body (for example:
"Doc-only PR; gsd-test-summary not required by docs-only exception in `docs/contributing/bootstrap.md`").
"Doc-only PR; msd-test-summary not required by docs-only exception in `docs/contributing/bootstrap.md`").

View File

@@ -1,6 +1,6 @@
# Cross-platform portability lint rules
GSD must run on Windows as well as macOS/Linux. A family of AST-based ESLint rules (the
MSD must run on Windows as well as macOS/Linux. A family of AST-based ESLint rules (the
`local/*` plugin) enforces the `DEFECT.WINDOWS-*` portability classes documented in
[`CONTEXT.md`](../../CONTEXT.md) **at write-time (in your editor) and in CI**, so a
Windows-only defect is caught before it ships — not after it reaches the `windows-latest` CI

View File

@@ -26,7 +26,7 @@ enumeration reads as a closed list and the class is open (REQ-LANG-04).
| Form | What it looks like | When it applies |
|---|---|---|
| Shared reference | `@~/.claude/gsd-core/references/response-language-directive.md` on its own line | The file is loaded eagerly — a top-level workflow. Preferred: one place to maintain the wording for the 42 files that take it. |
| Shared reference | `@~/.claude/msd-core/references/response-language-directive.md` on its own line | The file is loaded eagerly — a top-level workflow. Preferred: one place to maintain the wording for the 42 files that take it. |
| Own inline directive | One line carrying the directive in the file's own words | The file already has one, or its prose needs local phrasing. Must pass all four predicates (below). |
| Pinned inline directive | The canonical line, byte for byte | A lazily-loaded mode/step/template that **cannot prove inheritance**. |
| Inherited | nothing in the file itself | A fragment whose parent workflow dispatches it from a read/execute context and is itself covered. |
@@ -39,7 +39,7 @@ Answer in this order:
is loaded, so this is the cheapest correct answer for a top-level workflow.
2. **Is it a fragment under `<workflow>/{modes,steps,templates}/`?** Then check whether
`<workflow>.md` dispatches this exact path from a read/execute context *and* is itself covered.
The catalog writes that stub two ways — rooted at `gsd-core/workflows/`, or relative to the
The catalog writes that stub two ways — rooted at `msd-core/workflows/`, or relative to the
catalog — and either one counts; a path with no read/execute/run verb ahead of it on the same
line is a mention, not a dispatch, and proves nothing.
If both hold, the fragment **inherits** — add nothing. The parent's directive is already in the