Skip to content

v3.0.1

Choose a tag to compare

@harshsinghmp harshsinghmp released this 22 Oct 05:20
· 34 commits to main since this release

Summary

Correctness release. Fixes five defects found by a cross-file invariant audit — a prompt-injection channel through CURRENT.md, a store that could fail its own schema validator, bi-temporal queries answered from a stale cache entry, a tiered context path that silently dropped as_of, and an access counter that never accumulated.

Also makes every published number machine-verified, and redesigns the website.

Full Changelog: v3.0.0...v3.0.1

Fixed

  • Prompt-injection channel through CURRENT.md — the stored memory was sanitised, but the constraint copy written to CURRENT.md was not. Because CURRENT.md is replayed into every later prompt, one captured constraint could reach every future session in the workspace. Sanitisation now happens at the sink.
  • Store could fail its own schema validator — stale_embedder was written onto entries but rejected as an unknown property, so every entry that failed embedding was permanently reported as corrupt.
  • Bi-temporal queries served the wrong snapshot — the context cache key omitted as_of, so "what did we believe in Q1?" could be answered from a 30-second-old current-state entry.
  • Tiered context dropped as_of and depth — get_context(tier=1, as_of=…) returned the current state while the untiered path returned the historical one.
  • Access counter never accumulated — every read reset it to its baseline, silently disarming the access-frequency ranking axis, the LangMem frequency axis and the access-weighted retention half-life.
  • Tier token budget was declared but never enforced — 327 tokens against a 200-token budget.
  • MCP server advertised a stale version (1.6.0 while the package was at 3.0.0), three MCP tools were callable but not discoverable, memory_delete honoured undocumented flags that disabled its dry-run default, restoreSnapshotRing had no path containment, and the CLI --help text repeated an incorrect platform count.

Changed

  • Every published number is now generated from the source. The site advertised "80+ coding agents" (52), "45+ credential shapes" (8 rule families) and "69 tools across 6 profiles" (115 across 7), while the README was already honest at 52 — every figure was hand-typed into prose in five files, and nothing compared any of them to the code. scripts/generate-claims.ts now derives them from src/, the website imports the manifest, and a test fails the build on any drift.
  • Documentation split into human and agent layers — docs/agent-reference.md (the agent contract), docs/cli-reference.md (generated from src/), docs/roadmap.md, and a README restructured around a 60-second start and a documentation map.
  • Website redesign — shared navigation, footer and logo components (the 404 page previously had no navigation at all), a working mobile menu, a complete SEO head, and an agent-readable llms.txt layer.
  • New deterministic brand pipeline — a redesigned monogram, favicon, PWA icons, Open Graph card, Twitter card and README banner, rasterised with resvg from the fonts already vendored in the repository. The old pipeline needed a 150MB browser download to flatten a vector, and the Pages workflow was still calling it — which would have reverted every new asset on each deploy.

Verification

  • bun test — 1336 pass, 0 fail, 6128 assertions across 205 files (was 1309)
  • bunx tsc --noEmit — clean
  • audit-a11y.ts — 0 critical/serious across 4 pages, 26/26 contrast pairs at WCAG 2.2 AA
  • audit-visual.ts — 9/9 responsive viewports

Breaking changes

None. The public API, CLI surface and MCP tool names are unchanged.