Skip to content

Commit 0ee37d9

Browse files
mcp-tool-shopclaude
andcommitted
release: stage v1.0.3 — the resolver fix, ready to tag
The FT-MR11 fix has been on main since 823533e but is NOT on npm: the version was never bumped, so Release (which triggers on `push: tags: v*` and verifies the tag against packages/cli/package.json) never had a tag to fire on. The green runs since that merge were CI, not a publish. Until this ships, every session still loads the 1.0.2 binary and still gets the doubled `memory/memory/` paths. Bumps packages/cli to 1.0.3 — the only package Release publishes — and carves the two FT-MR11 entries out of [Unreleased] into a dated [1.0.3] section. The rest of [Unreleased] is left alone: it narrates the monorepo consolidation that already shipped as 1.0.0, and re-dating someone else's section is not this change's business. Worth noting the CHANGELOG has never carried a released version heading despite three releases; [1.0.3] is the first. To ship (both steps are yours — a registry push is not mine to make): git tag -a v1.0.3 -m "loadout-os v1.0.3 - FT-MR11 resolver fix" git push origin v1.0.3 Release then builds, bundles the CLI, tests, npm-packs dry-run, publishes with OIDC provenance, and cuts the GitHub Release. @mcptoolshop/claude-memories carries the same source fix and is NOT republished by this workflow, which only publishes -w packages/cli. The CLI bundle is what the UserPromptSubmit hook loads, so shipping this is what repairs live sessions; the standalone memories package stays on its old version until someone needs it. Verify: 383 tests across all four packages, 0 fail, exit 0. Identity scan: RESULT CLEAN. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent d38e6ba commit 0ee37d9

2 files changed

Lines changed: 26 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/),
66
and this project adheres to [Semantic Versioning](https://semver.org/).
77

8+
## [1.0.3] - 2026-09-07
9+
10+
### Fixed
11+
12+
- **Index entries recorded the raw pointer instead of the resolved file** (FT-MR11) —
13+
`generateIndex` resolved each MEMORY.md reference correctly (trying the store dir,
14+
then its parent) and then discarded the result, storing `ref.path` verbatim. The
15+
store's own convention writes pointers as `memory/foo.md`, where `memory/` is a
16+
namespace label for the store rather than a subdirectory of it, so `refresh`'s
17+
`rewritePathsAbsolute` re-applied the prefix and emitted a doubled
18+
`…/memory/memory/foo.md`. On the canonical store that left **420 of 492 published
19+
entries (85%) pointing at files that do not exist** — and because the
20+
UserPromptSubmit hook reads that published index on every prompt, every session was
21+
silently handed dead paths and fell back to paraphrasing one-line summaries, which
22+
is precisely what the store's own rule forbids. Entries now record the location that
23+
actually resolved, relative to the store root with POSIX separators, so both store
24+
layouts resolve. Live index went 72/492 → **492/492**. Regression fixture
25+
`fixtures/flat-store/` pins the shape the original fixture never exercised: the
26+
previous fixture put MEMORY.md *above* its `memory/` directory, so every ref
27+
matched on the first base and the parent-base fallback was never under test.
28+
- **`DEFAULT_STORE` hardcoded one machine's home directory** — the shipped default
29+
store path was an absolute literal containing a username, so it resolved on exactly
30+
one computer and leaked that username into a public package. It is now derived from
31+
`homedir()`, matching `defaultDest()` directly below it.
32+
833
## [Unreleased]
934

1035
The consolidation of the Knowledge OS into a single npm-workspaces monorepo with one
@@ -45,27 +70,6 @@ ship together under `loadout-os`.
4570

4671
### Fixed
4772

48-
- **Index entries recorded the raw pointer instead of the resolved file** (FT-MR11) —
49-
`generateIndex` resolved each MEMORY.md reference correctly (trying the store dir,
50-
then its parent) and then discarded the result, storing `ref.path` verbatim. The
51-
store's own convention writes pointers as `memory/foo.md`, where `memory/` is a
52-
namespace label for the store rather than a subdirectory of it, so `refresh`'s
53-
`rewritePathsAbsolute` re-applied the prefix and emitted a doubled
54-
`…/memory/memory/foo.md`. On the canonical store that left **420 of 492 published
55-
entries (85%) pointing at files that do not exist** — and because the
56-
UserPromptSubmit hook reads that published index on every prompt, every session was
57-
silently handed dead paths and fell back to paraphrasing one-line summaries, which
58-
is precisely what the store's own rule forbids. Entries now record the location that
59-
actually resolved, relative to the store root with POSIX separators, so both store
60-
layouts resolve. Live index went 72/492 → **492/492**. Regression fixture
61-
`fixtures/flat-store/` pins the shape the original fixture never exercised: the
62-
previous fixture put MEMORY.md *above* its `memory/` directory, so every ref
63-
matched on the first base and the parent-base fallback was never under test.
64-
- **`DEFAULT_STORE` hardcoded one machine's home directory** — the shipped default
65-
store path was an absolute literal containing a username, so it resolved on exactly
66-
one computer and leaked that username into a public package. It is now derived from
67-
`homedir()`, matching `defaultDest()` directly below it.
68-
6973
- **Matcher recall** (FT-K1) — domain entries were scored by pure coverage
7074
(`matched / declared keyword count`), which starved keyword-rich entries: a genuine
7175
2–3 keyword match on the live 30+-keyword entries scored below the 0.1 inclusion floor.

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mcptoolshop/loadout-os",
3-
"version": "1.0.2",
3+
"version": "1.0.3",
44
"description": "Unified Knowledge OS CLI — wraps ai-loadout (kernel) + claude-memories + claude-rules and absorbs the operational rituals (doctor, report, refresh) into one loadout-os binary.",
55
"license": "MIT",
66
"author": "mcp-tool-shop",

0 commit comments

Comments
 (0)