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:
@@ -8,7 +8,7 @@
|
||||
|
||||
## Context
|
||||
|
||||
Twelve open `confirmed-bug` issues are one defect: **GSD's durable state lives in prose markdown,
|
||||
Twelve open `confirmed-bug` issues are one defect: **MSD's durable state lives in prose markdown,
|
||||
and every verb brings its own regex to it.**
|
||||
|
||||
Two seams already exist for this and both are correct. `markdown-sectionizer` ([ADR-1372](1372-markdown-sectionizer-seam.md)) owns
|
||||
@@ -29,7 +29,7 @@ own doc comment describes a *caller-must-re-escape contract*, i.e. an obligation
|
||||
simply not discharge — and is applied per column at `:852-862` on the *generated* path, not this
|
||||
one. A task description containing a
|
||||
Jinja filter permanently ragged the table, and `quick-tasks-migrate` cannot help because the next
|
||||
`/gsd-quick` re-corrupts it ([#4736](https://github.com/open-gsd/gsd-core/issues/4736)). A project
|
||||
`/msd-quick` re-corrupts it ([#4736](https://github.com/open-gsd/gsd-core/issues/4736)). A project
|
||||
that migrates is not out of the state. Symmetrically, `parseDecisions` rejects a second colon in a
|
||||
plain-prose bold lead-in — text `discuss-phase` itself emits — forcing
|
||||
`outcome: "could-not-parse"` and hard-blocking `check.decision-coverage-plan`
|
||||
@@ -86,7 +86,7 @@ landed in `roadmap-parser.cjs`; `init.cjs:2229`, `:2401`, `:3044` and `milestone
|
||||
unanchored `gi` copies, while `init.cjs:116` — in the same file as three of them — is anchored
|
||||
correctly ([#4865](https://github.com/open-gsd/gsd-core/issues/4865)). The codebase disagrees with
|
||||
itself inside one file. Same shape in
|
||||
[#4661](https://github.com/open-gsd/gsd-core/issues/4661) (`/gsd:undo`'s unanchored ERE over
|
||||
[#4661](https://github.com/open-gsd/gsd-core/issues/4661) (`/msd:undo`'s unanchored ERE over
|
||||
`git log`), [#4605](https://github.com/open-gsd/gsd-core/issues/4605) /
|
||||
[#4606](https://github.com/open-gsd/gsd-core/issues/4606) (`pr-branch`'s `STRUCTURAL_RE`), and
|
||||
[#4499](https://github.com/open-gsd/gsd-core/issues/4499) (`frontmatter.set` reformatting block
|
||||
@@ -180,7 +180,7 @@ which is the defect. A parity test per field kind asserts the pair.
|
||||
A value that cannot be represented in the grammar is **refused** by the writer, with a report. A
|
||||
writer never emits a document its own reader must reject.
|
||||
|
||||
Prose-interpolated table rows in shipped workflow markdown are replaced by a `gsd_run` verb that
|
||||
Prose-interpolated table rows in shipped workflow markdown are replaced by a `msd_run` verb that
|
||||
appends through the seam, so the escaping is executed once rather than restated in prose.
|
||||
|
||||
#### 4a. `accepted ⊇ emittable` — the accept-but-never-emit rule
|
||||
@@ -190,7 +190,7 @@ writer may produce it). `emittable ⊆ accepted`, asserted. A grammar may be acc
|
||||
|
||||
This is **Postel's Law applied at the right level**, and it is worth stating why, because the naive
|
||||
reading argues the opposite. Postel's own guidance splits by level: *internal system-to-system —
|
||||
stricter on both ends; user-facing input — more liberal.* GSD's planning artifacts are **both**.
|
||||
stricter on both ends; user-facing input — more liberal.* MSD's planning artifacts are **both**.
|
||||
They are written by the tool and hand-edited by humans — the epic's stated constraint is that they
|
||||
*"stay human-readable and hand-editable; that is the constraint, not the problem."* So the reader is
|
||||
liberal toward a human's variation (#4793 is a reader being wrong to reject prose a human, or
|
||||
@@ -272,7 +272,7 @@ So enforcement is two mechanisms with stated scopes:
|
||||
> untouched. Extending it would have meant teaching a registry checker about regex shapes.
|
||||
|
||||
**Stated coverage limit.** A lint over `src/*.cts` cannot see #4736's writer, which is prose in
|
||||
`gsd-core/workflows/quick.md`. Decision 4's `gsd_run` verb is what brings that surface inside the
|
||||
`msd-core/workflows/quick.md`. Decision 4's `msd_run` verb is what brings that surface inside the
|
||||
fence; the lint does not, and this ADR does not pretend otherwise.
|
||||
|
||||
### 7. Every parser ships a positive control per accepted grammar
|
||||
@@ -293,7 +293,7 @@ discipline, because the accept-only grammars are by definition ones the writer c
|
||||
### 8. Exactly one implementation of a shared pattern, proven by a drift guard
|
||||
|
||||
The phase-heading pattern has one owner. Five copies (#4865) collapse to one, proven by the
|
||||
existing drift-guard idiom rather than by review attention. Same rule for `/gsd:undo`'s scope
|
||||
existing drift-guard idiom rather than by review attention. Same rule for `/msd:undo`'s scope
|
||||
selector (#4661) and `pr-branch`'s `STRUCTURAL_RE` (#4605, #4606): the pattern is a property of the
|
||||
seam's grammar, not a literal each call site owns.
|
||||
|
||||
@@ -332,7 +332,7 @@ are fixed" is not a passing census.
|
||||
|
||||
## Phases
|
||||
|
||||
Each phase is one `chore(#4906): … — Phase N` sub-issue + PR, gated on `gsd-test`, and each carries
|
||||
Each phase is one `chore(#4906): … — Phase N` sub-issue + PR, gated on `msd-test`, and each carries
|
||||
the three criteria above.
|
||||
|
||||
- **Phase 0 — this ADR.** Design lock. Docs-only. Closes [#4910](https://github.com/open-gsd/gsd-core/issues/4910) only; #4906 stays open.
|
||||
@@ -361,7 +361,7 @@ the three criteria above.
|
||||
- *Census:* every typed field kind in the registry; each must resolve to exactly one
|
||||
escape-or-refuse function, exported by the reader's module.
|
||||
- *Deletion:* `quick.md` Step 7c's prose interpolation is **removed**, not corrected in place —
|
||||
replaced by a `gsd_run` verb that appends through the seam. This is the arm no lint over
|
||||
replaced by a `msd_run` verb that appends through the seam. This is the arm no lint over
|
||||
`src/*.cts` can reach, so deleting the prose is the only mechanism available.
|
||||
- *Unrepresentable:* `emittable ⊆ accepted` asserted **over the registry**, so a new field kind
|
||||
inherits the check instead of needing one written for it.
|
||||
@@ -456,7 +456,7 @@ Two consequences for the phases:
|
||||
- **Risk — the honest one.** Behaviour-preserving migrations regress subtle formatting, and this
|
||||
seam's whole value proposition is formatting fidelity. Mitigated by §3's byte-stability property
|
||||
test, the fail-first regression per absorbed issue, §7's positive controls, and the per-phase
|
||||
`gsd-test` gate. [ADR-2143](2143-markdown-table-and-mutation-consolidation.md)'s own Phase 5 exists because a coverage re-check found a seam its
|
||||
`msd-test` gate. [ADR-2143](2143-markdown-table-and-mutation-consolidation.md)'s own Phase 5 exists because a coverage re-check found a seam its
|
||||
Phase 0 had left unowned; `/adr-phase-coverage` runs again at epic closeout for that reason.
|
||||
- **Risk — naming.** `planning-document` beside `plan-document` (§1). Live until absorption lands.
|
||||
- **Non-goals.** Repairing the twelve at their existing call sites (the pattern that produced them
|
||||
|
||||
Reference in New Issue
Block a user