Files
Jakub Zych a9a7a328e6 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.
2026-10-06 01:47:40 +02:00
..

Adversarial Roadmap Fixtures (#3594)

Hostile / messy ROADMAP.md inputs for msd-core/bin/lib/roadmap.cjs (searchPhaseInContent, cmdRoadmapGetPhase, cmdRoadmapAnalyze) and the SDK roadmap parser in sdk/src/query/roadmap.ts.

Tests in tests/feat-3594-parser-adversarial-roadmap.test.cjs and tests/feat-3594-parser-property-style.test.cjs consume these.

Categories:

  • phase-heading-inside-fenced-code.md — a md block contains a ## Phase 999: fake heading. The parser MUST ignore headings inside fenced code blocks. Historical regression #2787.
  • nested-fenced-code.md — outer block with inner ``` ``` ``` ``` block. Headings inside either layer must be ignored.
  • unicode-phase-titles.md — phase titles with non-ASCII characters. Parser must preserve them in the returned phase_name.
  • repeated-phase-ids.md — same integer phase number listed twice. Parser behavior must be deterministic (first-wins or last-wins is fine; the test pins whichever).
  • decimal-phase-mixed.md — integer phase 2 and decimal phase 2.1 share a prefix. Parser must not return phase 2 when asked for 2.1 (or vice versa). Historical regression #3537.
  • markdown-headings-inside-html-comment.md — <!-- ## Phase 999 --> patterns. Parser must not be fooled by comments.