|
| 1 | +# memory-os — ROADMAP |
| 2 | + |
| 3 | +> Estimated horizon: **1–2 months** of session work to reach shippable. |
| 4 | +> Picker: whoever opens the next session in this tree. Read `.claude/CLAUDE.md` first. |
| 5 | +
|
| 6 | +## Phase 0 — Initial bootstrap (DONE, this commit) |
| 7 | + |
| 8 | +- [x] Clone in the three upstream sources (`ai-loadout`, `claude-memories`, `claude-rules`) under `packages/` |
| 9 | +- [x] Clone in the runtime hook under `apps/hook/` |
| 10 | +- [x] Drop CLAUDE.md and this ROADMAP for the next picker |
| 11 | +- [x] `git init` + initial commit (no remote yet — that's Phase 5) |
| 12 | + |
| 13 | +Out of scope for the bootstrap: no workspace wiring, no shared tests, no docs site, no remote, no publish. |
| 14 | + |
| 15 | +## Phase 1 — Workspace wiring (1 session) |
| 16 | + |
| 17 | +Goal: make the four trees install + build + test under one root. |
| 18 | + |
| 19 | +- [ ] Root `package.json` with `workspaces: ["packages/*", "apps/*"]` |
| 20 | +- [ ] One root `tsconfig.base.json` extended by each package |
| 21 | +- [ ] Each package keeps its own `package.json`, but versions follow the root version |
| 22 | +- [ ] `apps/hook` swaps its `@mcptoolshop/ai-loadout` dep for `"@memory-os/kernel": "workspace:*"` |
| 23 | +- [ ] `npm ci` at the root produces a working install; `npm run build --workspaces` builds all four |
| 24 | +- [ ] Each package's existing test suite still runs (`npm test --workspaces`) |
| 25 | + |
| 26 | +Gate: green build at root, all existing tests pass, hook still injects when invoked with stdin JSON. |
| 27 | + |
| 28 | +## Phase 2 — Unified CLI surface (1–2 sessions) |
| 29 | + |
| 30 | +Goal: one `memory-os` binary that wraps the three CLI surfaces. |
| 31 | + |
| 32 | +- [ ] New `packages/cli/` with `bin: { "memory-os": "..." }` |
| 33 | +- [ ] Subcommands: |
| 34 | + - `memory-os memories <index|validate|stats|health>` — wraps `packages/memories/` |
| 35 | + - `memory-os rules <analyze|split|validate|stats>` — wraps `packages/rules/` |
| 36 | + - `memory-os resolve|explain|usage|dead|overlaps|budget|validate` — wraps `packages/kernel/` |
| 37 | + - `memory-os hook test` — drives `apps/hook` with a sample prompt |
| 38 | +- [ ] Old binaries (`claude-memories`, `claude-rules`, `ai-loadout`) get thin shim binaries that delegate + emit a deprecation warning for one minor release |
| 39 | +- [ ] `--help` is complete and accurate (Hard Gate C of shipcheck) |
| 40 | + |
| 41 | +Gate: shipcheck `init` + `audit` runs cleanly on the new CLI; hard gates A–D green. |
| 42 | + |
| 43 | +## Phase 3 — Docs + landing (1 session) |
| 44 | + |
| 45 | +Goal: one Starlight handbook + one landing page covers the whole layer. |
| 46 | + |
| 47 | +- [ ] `site/` at the root, Astro + Starlight (use the `handbook` skill) |
| 48 | +- [ ] Sections: Kernel, Memories, Rules, Runtime hook, Migration from the three legacy packages |
| 49 | +- [ ] Single landing page replaces the three separate `mcp-tool-shop-org.github.io/{ai-loadout,claude-memories,claude-rules}/` pages |
| 50 | +- [ ] CNAME + GitHub Pages wiring (Phase 5 dependency — actual deploy after publish) |
| 51 | + |
| 52 | +## Phase 4 — npm + GitHub bootstrap (1 session) |
| 53 | + |
| 54 | +Goal: reserve the name on npm, set up Trusted Publishing, create the GitHub repo. |
| 55 | + |
| 56 | +- [ ] Reserve `@mcptoolshop/memory-os` via the `npm-placeholder` skill (v0.0.0 placeholder + OIDC config) |
| 57 | +- [ ] Create `mcp-tool-shop-org/memory-os` on GitHub (private at first; flip to public at Phase 5 publish) |
| 58 | +- [ ] Add remote, push the initial bootstrap commit + Phases 1–3 commits |
| 59 | +- [ ] CI workflow: lint + test on push (per workflow-standards.md — paths-gated, ubuntu-latest, concurrency block) |
| 60 | + |
| 61 | +## Phase 5 — First real publish + upstream retirement (1 session) |
| 62 | + |
| 63 | +Goal: ship `@mcptoolshop/memory-os@1.0.0`, retire the three upstream repos. |
| 64 | + |
| 65 | +- [ ] Shipcheck full audit (`memory/shipcheck.md`) |
| 66 | +- [ ] Run translations BEFORE publish (per the release-ordering rule in global CLAUDE.md) |
| 67 | +- [ ] `npm publish` via Trusted Publishing |
| 68 | +- [ ] `gh release create v1.0.0` |
| 69 | +- [ ] Cut over `~/.claude/settings.json` hook command from `node ~/.claude/loadout-hook/loadout-hook.mjs` to `npx @mcptoolshop/memory-os hook` (or equivalent) |
| 70 | +- [ ] Deprecate the three upstream npm names (only `ai-loadout` is published; npm-deprecate that one with a pointer to memory-os) |
| 71 | +- [ ] Archive the three upstream local repos at `E:/AI/{ai-loadout,claude-memories,claude-rules}/` — move to `E:/DEEP_MEMORY/retired/` with a README explaining where they went |
| 72 | +- [ ] Delete `~/.claude/loadout-hook/` once the npx-based hook is verified working |
| 73 | + |
| 74 | +Gate: shipcheck 31/31, CI green, hook works through `npx @mcptoolshop/memory-os hook`, no broken pointer chains anywhere in the studio. |
| 75 | + |
| 76 | +## Out of scope (for now) |
| 77 | + |
| 78 | +- Replacing the kernel's matching algorithm with embeddings — separate research project; possibly a `memory-os/research/` tree later |
| 79 | +- Multi-rig sync of `~/.ai-loadout/index.json` — out of scope until there's a second rig |
| 80 | +- Web UI for browsing the dispatch table — nice-to-have, not in the critical path |
| 81 | + |
| 82 | +## Open questions (for the director) |
| 83 | + |
| 84 | +- Naming: keep `memory-os` or rebrand at Phase 4? (Sister names in the studio: Game Foundry OS, Research OS, Testing OS — pattern is consistent.) |
| 85 | +- Should the kernel CLI surface (`ai-loadout resolve`, etc.) be preserved verbatim under `memory-os resolve`, or restructured? Verbatim = lower migration cost; restructured = chance to fix any ergonomics warts. |
| 86 | +- License — three sources are all MIT, root stays MIT? |
| 87 | + |
| 88 | +## When this is done |
| 89 | + |
| 90 | +When all five phases pass, this file is the source-of-truth for "what shipped"; flip it to a CHANGELOG-style retrospective and start the next iteration. |
0 commit comments