MSD is not published to npm, so /msd-update and the SessionStart update
check could never find a release. Releases are now vX.Y.Z git tags plus a
stable branch:
- check-latest-version reads release tags via git ls-remote against the
baked repository URL (latest = highest stable tag, next = incl. -rc)
- /msd-update reruns the bootstrap installer pinned to the checked tag and
reads the changelog from that tag
- bootstrap.sh defaults to the stable branch and supports --local/--global
- package identity: changelog URL on stable, manual install via
msd.golem15.com
- README quickstart and update how-to describe the one-line installer
- track the repo-root CLAUDE.md
Emitted-Drift-Ack-Growth: update.md — the update flow now explains the git-tag release lookup and pins the bootstrap installer to the checked tag, replacing the npm/npx wording
The fork lives on the golem15 Gitea forge, not GitHub. Package identity now
parses either host and derives in-place raw URLs for Gitea; the identity-drift
lint accepts the new host; README drops GitHub-only badges and the npm
quickstart in favour of the checkout installer.
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.
* test(#3337): fold the manifest & package-identity issue-* cluster — Wave 5
Folds 6 legacy issue-*.test.cjs regression files (120 test() blocks) into
their module's main suite, per H3 (#3315) of the test-hygiene epic (#3053).
Second of 4 issue-* waves.
- issue-766-plugin-manifest.test.cjs (50 tests): pure rename (git mv) into
plugin-manifest.test.cjs, sole comprehensive suite for its module.
- issue-844-manifest-version-sync.test.cjs (14 tests, rename basis) +
issue-1855-marketplace-manifest.test.cjs (17 tests, merged in): both
target scripts/sync-manifest-versions.cjs via non-overlapping describe
blocks (generic engine vs. marketplace.json-specific), now
manifest-version-sync.test.cjs, 31 tests, 0 dropped.
- issue-498-identity-drift-lint.test.cjs (8 tests, rename basis) +
issue-498-package-identity.test.cjs (17 tests, merged in): both target
package-identity.cjs's surface from different angles (lint-side drift
detection vs. derive/slugify), now package-identity.test.cjs, 25 tests,
0 dropped.
- issue-607-cache-lineage.test.cjs (14 tests) merged into the existing
gsd-statusline.test.cjs, matching its already-established fold-wrapper
convention from prior waves.
Learned from Wave 4: fold agents checked src/** (not just docs/ and
gsd-core/references/) for stale filename references — found and fixed 5
across 3 ADR docs (766, 2121, 457), zero in src/ this time.
Zero net test-coverage loss. No production code changed.
* test(#3337): fix orthogonal-review findings — Wave 5 fold
Standards-axis review found real issues in the just-folded
manifest-version-sync.test.cjs, both fixed here:
- The folded:issue-1855-marketplace-manifest block omitted its own
test/describe/assert/fs/path/os requires, silently closing over the
#844 basis section's outer-scope bindings instead of declaring its own
dependencies — inconsistent with every other fold block in this wave.
Restored the local requires the original issue-1855 file declared.
- Merging two independently-lettered legacy files (each A-F) left
duplicate top-level describe() labels (two "A:", two "B:", two "C:").
Renamed the folded-in #1855 labels (A2/B4/C2) to make every top-level
label in the file unique.
No test() count changed (31). No production code touched.
---------
Co-authored-by: sim <sim@local>