|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/). |
| 7 | + |
| 8 | +## [Unreleased] |
| 9 | + |
| 10 | +The consolidation of the Knowledge OS into a single npm-workspaces monorepo with one |
| 11 | +unified CLI. Three previously-separate packages and the live runtime hook now live and |
| 12 | +ship together under `loadout-os`. |
| 13 | + |
| 14 | +### Added |
| 15 | + |
| 16 | +- **Workspace monorepo** — `packages/{kernel,memories,rules,cli}` + `apps/hook` wired |
| 17 | + under one npm-workspaces root, with an intentional topological build order |
| 18 | + (kernel → memories → rules → cli) so the adapters build against the kernel's dist. |
| 19 | +- **Unified `@mcptoolshop/loadout-os` CLI** (`packages/cli`) — one binary that wraps the |
| 20 | + three library surfaces (kernel = ai-loadout, memories, rules) and absorbs the |
| 21 | + operational rituals: |
| 22 | + - Namespaced adapter surfaces: `memories <index|validate|stats|health>` and |
| 23 | + `rules <analyze|validate|stats|split>`. |
| 24 | + - Flat kernel verbs: `resolve`, `explain`, `usage`, `dead`, `overlaps`, `budget`, |
| 25 | + `validate` (the kernel index-structure validator — the flat-vs-namespaced split is |
| 26 | + how the `validate` name collision is resolved). |
| 27 | + - **`doctor`** — a read-only 8-check health screen over the live store, global index, |
| 28 | + runtime-hook drift, resolver layers, core entries, observability loop, hook wiring, |
| 29 | + and usage growth. Never writes. |
| 30 | + - **`report`** — read-only observability over `usage.jsonl`: usage summary, dead |
| 31 | + entries, token budget, and a score distribution for calibrating the hook floor. |
| 32 | + - **`refresh`** — the Index Freshness Ritual (index → validate → publish) folded into |
| 33 | + one command, with an andon halt on validation failure and a `<dest>.bak` compensator |
| 34 | + on the one irreversible write. |
| 35 | + - `hook test` — drive the runtime hook on a sample prompt in an isolated HOME. |
| 36 | +- **Runtime hook unified** (`apps/hook/loadout-hook.mjs`) — the `UserPromptSubmit` hook |
| 37 | + that injects ≤5 pointer lines (≤200 tokens). Fail-silent: every error path exits `0`. |
| 38 | +- **Shared CLI substrate** — one arg parser, one structured `CliError { code, message, |
| 39 | + hint }` shape routed at the process boundary (no raw stack traces), and per-command |
| 40 | + `--help` with synopsis, arguments, flags, an example, and exit codes for every leaf |
| 41 | + command. |
| 42 | +- **Documentation** — a Starlight handbook (overview, getting started, architecture, |
| 43 | + command reference, rituals, migration) connected to the landing page, plus a root |
| 44 | + `SECURITY.md` covering the consolidated attack surface. |
| 45 | + |
| 46 | +### Fixed |
| 47 | + |
| 48 | +- **Matcher recall** (FT-K1) — domain entries were scored by pure coverage |
| 49 | + (`matched / declared keyword count`), which starved keyword-rich entries: a genuine |
| 50 | + 2–3 keyword match on the live 30+-keyword entries scored below the 0.1 inclusion floor. |
| 51 | + The matcher now blends coverage with an absolute recall signal (`max(coverage, |
| 52 | + matched / 5)`), so real multi-keyword matches are reachable while single incidental |
| 53 | + hits stay quiet. |
| 54 | + |
| 55 | +### Changed |
| 56 | + |
| 57 | +- The three legacy bins (ai-loadout, claude-memories, claude-rules) keep working until |
| 58 | + their planned retirement; the unified `loadout-os` package ships from this repo. The |
| 59 | + published upstream today remains `@mcptoolshop/ai-loadout` (the kernel). |
| 60 | + |
| 61 | +<!-- ## [1.0.0] - YYYY-MM-DD --> |
| 62 | +<!-- ### Added --> |
| 63 | +<!-- - First consolidated release. --> |
0 commit comments