Files
msd-core/src/phase-id-card.cts
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

36 lines
1.2 KiB
TypeScript

/**
* Canonical bracket convention card (#3638 / ADR-612 PR-5).
*
* This module is the sole editable source of the compact grammar diagram.
* Render sites import phaseIdCard(); generated documentation is held to the
* same bytes by tests/phase-id-card.test.cjs. PR-6 can therefore inject the
* card broadly without inventing another copy.
*/
const PHASE_ID_CARD = [
'[MSD.02] 05.03-01',
' │ │ │ │ │',
' │ │ │ │ └── plan 01',
' │ │ │ └────── subphase 03',
' │ │ └───────── phase 05',
' │ └───────────── milestone 02',
' └───────────────── project MSD',
].join('\n');
const PHASE_ID_LEGEND =
"milestone = bracket integer; dots = phase-levels; one hyphen = plan; "
+ "no 'Phase' word, no vX.Y";
function phaseIdCard(options: { title?: string } = {}): string {
const parts: string[] = [];
if (options.title) parts.push(options.title, '');
parts.push(PHASE_ID_CARD, '', PHASE_ID_LEGEND);
return parts.join('\n');
}
export = {
phaseIdCard,
PHASE_ID_CARD,
PHASE_ID_LEGEND,
};