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:
@@ -15,7 +15,7 @@ import frontmatterMod = require('./frontmatter.cjs');
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports -- state.cjs is an export= CommonJS module
|
||||
import stateMod = require('./state.cjs');
|
||||
import { platformWriteSync, platformReadSync, platformEnsureDir, execGit, retryRenameSync, contentChangedAfterNormalize } from './shell-command-projection.cjs';
|
||||
import { formatGsdSlash, resolveRuntime } from './runtime-slash.cjs';
|
||||
import { formatMsdSlash, resolveRuntime } from './runtime-slash.cjs';
|
||||
import { realClock } from './clock.cjs';
|
||||
import { transitionCore } from './state-transition.cjs';
|
||||
import { writeSetComplete } from './write-set.cjs';
|
||||
@@ -106,7 +106,7 @@ interface MilestoneCompleteOptions {
|
||||
*
|
||||
* F1 (#2245 review, BLOCKER): `updateTableCell` binds to the FIRST GFM table
|
||||
* found in whatever text it is given. The shipped requirements template
|
||||
* (gsd-core/templates/requirements.md) puts an `## Out of Scope` table
|
||||
* (msd-core/templates/requirements.md) puts an `## Out of Scope` table
|
||||
* (`| Feature | Reason |`, no `Status` column) BEFORE `## Traceability` — so
|
||||
* an unscoped whole-file call targets the Out-of-Scope table instead, fails
|
||||
* with `{ok:false, reason:'unknown column: Status'}`, and the real
|
||||
@@ -578,7 +578,7 @@ function cmdMilestoneComplete(cwd: string, version: string, options: MilestoneCo
|
||||
|
||||
// #3726: confirmation gate — refuse before ANY read of the tree beyond the
|
||||
// arg checks above, so an unconfirmed invocation is a guaranteed no-op on
|
||||
// disk. The threat model is the NEVER_VALID_FLAGS one (gsd-tools.cjs): a
|
||||
// disk. The threat model is the NEVER_VALID_FLAGS one (msd-tools.cjs): a
|
||||
// caller supplies a token it believes is inert and a destructive operation
|
||||
// proceeds unchecked — here the caller-side belief was that the `query`
|
||||
// meta-prefix implies a read, and `query milestone.complete <v>` archived
|
||||
@@ -601,7 +601,7 @@ function cmdMilestoneComplete(cwd: string, version: string, options: MilestoneCo
|
||||
const statePath = planningPaths(cwd).state;
|
||||
// #1911: derive the archive base from the workstream-aware planning root so
|
||||
// `milestone complete --ws` archives into the workstream, not root. planningPaths(cwd).planning
|
||||
// resolves to the workstream base when GSD_WORKSTREAM is set and to root .planning otherwise
|
||||
// resolves to the workstream base when MSD_WORKSTREAM is set and to root .planning otherwise
|
||||
// (flat mode is a no-op).
|
||||
const planningBase = planningPaths(cwd).planning;
|
||||
const milestonesPath = path.join(planningBase, 'MILESTONES.md');
|
||||
@@ -698,7 +698,7 @@ function cmdMilestoneComplete(cwd: string, version: string, options: MilestoneCo
|
||||
if (stateVersion !== null && stateVersion !== version) {
|
||||
// #2946: emit a WARNING so the suspicious STATE mismatch is visible
|
||||
// rather than silently disarming the guard. Plain-text diagnostic on
|
||||
// stderr, matching the existing [gsd-tools] WARNING convention
|
||||
// stderr, matching the existing [msd-tools] WARNING convention
|
||||
// (state.cts). A missing STATE.md `milestone:` field is not warned
|
||||
// here — the scan still runs, and "no milestone declared" is a normal
|
||||
// state for a fresh project, not a suspicious drift.
|
||||
@@ -711,7 +711,7 @@ function cmdMilestoneComplete(cwd: string, version: string, options: MilestoneCo
|
||||
// stderr). `version` is already constrained to [A-Za-z0-9._-].
|
||||
const safeStateVersion = stateVersion.replace(/[\x00-\x1f\x7f]/g, '?').slice(0, 80);
|
||||
process.stderr.write(
|
||||
`[gsd-tools] WARNING: STATE.md milestone: "${safeStateVersion}" ≠ requested "${version}" — ` +
|
||||
`[msd-tools] WARNING: STATE.md milestone: "${safeStateVersion}" ≠ requested "${version}" — ` +
|
||||
`running the unstarted-phase guard against the ROADMAP scoped for "${version}" anyway.\n`,
|
||||
);
|
||||
}
|
||||
@@ -1079,7 +1079,7 @@ function cmdMilestoneComplete(cwd: string, version: string, options: MilestoneCo
|
||||
{
|
||||
kind: 'milestoneComplete',
|
||||
version,
|
||||
nextMilestoneCommand: formatGsdSlash('new-milestone', resolveRuntime(cwd)) as string,
|
||||
nextMilestoneCommand: formatMsdSlash('new-milestone', resolveRuntime(cwd)) as string,
|
||||
},
|
||||
{ clock: realClock, sourcePath: statePath },
|
||||
);
|
||||
@@ -1123,8 +1123,8 @@ function cmdMilestoneComplete(cwd: string, version: string, options: MilestoneCo
|
||||
// shapes are NOT equally noteworthy (design doc §40, behavior table
|
||||
// row 5): an ABSENT "Quick Tasks Completed" section is the normal,
|
||||
// common case — the section is created lazily by
|
||||
// `gsd-core/workflows/quick.md` Step 7b, not by
|
||||
// `gsd-core/templates/state.md`, so most projects simply don't have
|
||||
// `msd-core/workflows/quick.md` Step 7b, not by
|
||||
// `msd-core/templates/state.md`, so most projects simply don't have
|
||||
// one — and is silently skipped (compared via the shared
|
||||
// `QUICK_TASKS_SECTION_ABSENT` sentinel, never by matching on the
|
||||
// free-form reason string). A section that EXISTS but couldn't be
|
||||
@@ -1315,7 +1315,7 @@ function cmdPhasesClear(cwd: string, raw: boolean, args: string[]): void {
|
||||
// sentinel was DELETED here. Routed through the canonical predicate so
|
||||
// every reader of "is this a sentinel phase" agrees by construction.
|
||||
// #3639: the DIR-AWARE recognizer — the convention-less id predicate
|
||||
// never saw bracket sentinel dirs (GSD.999-07-icebox), so they were
|
||||
// never saw bracket sentinel dirs (MSD.999-07-icebox), so they were
|
||||
// counted for deletion here while the disk guards (post-#3639) preserve
|
||||
// them; the destructive path must not be the one blind reader left.
|
||||
const dirs = entries.filter((e) => e.isDirectory() && !isSentinelPhaseDir(e.name));
|
||||
@@ -1776,7 +1776,7 @@ interface QuickArchiveOptions {
|
||||
* under the existing `milestone` namespace rather than adding a new top-level
|
||||
* command) — the narrow archival helper the issue's own "Scope of changes"
|
||||
* anticipated ("a `quick.archive`-style routine"), for callers (chiefly
|
||||
* `gsd-core/workflows/cleanup.md`) that need to sweep
|
||||
* `msd-core/workflows/cleanup.md`) that need to sweep
|
||||
* `.planning/quick/*` WITHOUT the full `milestone complete` close-out.
|
||||
*
|
||||
* `milestone complete --archive-quick` cannot be reused for this: it
|
||||
@@ -1796,7 +1796,7 @@ interface QuickArchiveOptions {
|
||||
*
|
||||
* #2142 MAJOR 6 (review): the STATE.md write now routes through
|
||||
* `readModifyWriteStateMd` — the same owned read-transform-write composition
|
||||
* `gsd-tools.cjs`'s `quick-tasks-append` handler uses (ADR-3408 §8.3 / #3469:
|
||||
* `msd-tools.cjs`'s `quick-tasks-append` handler uses (ADR-3408 §8.3 / #3469:
|
||||
* "the single owned composition ... so the composition cannot diverge"). A
|
||||
* prior version of this function called `platformWriteSync` directly with
|
||||
* the reset result, bypassing `syncAndPreserveStateMd` entirely — the exact
|
||||
|
||||
Reference in New Issue
Block a user