Skip to content

Commit 3c62413

Browse files
NickCirvclaude
andcommitted
chore(release): 4.4.0 'Curve'
Version bump across all surfaces — package.json + lock, server.json (x2), README banner + install commands + a v4.4.0 'what's new' callout — and CHANGELOG [Unreleased] -> [4.4.0]. Bundles this session: Token-loop C (engram measure --session), honest cluster-bootstrap CIs on the recall bench (ranker lift +5.0pp [+1.7,+8.5], excludes 0), query/gen path guard (#92), hermetic skills test (#137), README front-door reposition, .gitleaks.toml. Audits: tsc 0; full suite 1175/1175; build green; gitleaks clean; versions consistent (package/server/README all 4.4.0). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 40a9af2 commit 3c62413

5 files changed

Lines changed: 38 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ All notable changes to engram are documented here. Format based on
66

77
## [Unreleased]
88

9+
## [4.4.0] — 2026-06-14 — "Curve"
10+
11+
**Why:** honest whole-session measurement, statistical error bars, and a front
12+
door that leads with what's true. Token-loop C lands `engram measure --session`;
13+
the recall bench now ships confidence intervals; the README leads with the
14+
caveat-free differentiator instead of a number.
15+
916
### Added
1017
- **`engram measure --session [--replay <log>]`** (Token-loop C, replay mode) — proves the
1118
*combined* whole-session structural reduction by replaying `.engram/hook-log.jsonl` through
@@ -14,6 +21,27 @@ All notable changes to engram are documented here. Format based on
1421
$ saving), with the whole-session figure disclosed as a same-epoch ceiling. Hook-log gains
1522
two optional fields — `sessionId` (honest session boundaries) and `command` (Bash only, so
1623
the shell-grep arm is measured, not inferred). Old logs still parse.
24+
- **Cluster-bootstrap confidence intervals on the recall bench** (`bench/stats.ts`) — recall@10
25+
(per-commit macro) and the ranker's lift over a random-order baseline now report a 95% CI with
26+
an explicit "excludes 0 → real" verdict. On engram's own repo: lift **+5.0pp [+1.7, +8.5]**
27+
(excludes 0); recall@10 macro 45.1% [36.4, 54.0]. The reusable stats engine the resolve-rate
28+
A/B will consume.
29+
30+
### Changed
31+
- **README front door** now leads with the caveat-free differentiator (bi-temporal mistakes from
32+
git reverts) + capacity, demoting the per-file structural % into its caveat; the `LLM cost $0`
33+
badge → `LLM calls 0` (true + not misreadable as a cost claim).
34+
35+
### Fixed
36+
- **`query` / `gen` now fail loudly on a path with no graph** (#92) — exit 1 with "run engram
37+
init" instead of silently printing "no nodes" and exiting 0 on a missing/typo'd `--project`.
38+
- **Hermetic skills test** (#137) — the `withSkills: true` test resolves its default via
39+
`ENGRAM_SKILLS_DIR` at call time instead of mining the developer's live `~/.claude/skills`,
40+
removing a CI flake.
41+
42+
### Security
43+
- Added `.gitleaks.toml` allowlisting the synthetic PII-gate test fixture
44+
(`tests/fixtures/pii-zoo.json`) — fake tokens by design, not real secrets.
1745

1846
## [4.3.2] — 2026-06-06 — "Proof" (patch)
1947

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<img src="assets/banner-v3.png" alt="engramx — the universal context spine for AI coding tools (v4.3.2 'Proof')" width="100%">
2+
<img src="assets/banner-v3.png" alt="engramx — the universal context spine for AI coding tools (v4.4.0 'Curve')" width="100%">
33
</p>
44

55
<p align="center">
@@ -86,8 +86,8 @@ mkdir -p /tmp/engram-demo && cd /tmp/engram-demo && \
8686
echo "export const buggy = () => null;" > src.ts && \
8787
git add -A && git commit -q -m "feat: add buggy helper returning null causing form crashes" && \
8888
git revert --no-edit HEAD > /dev/null && \
89-
npx --yes engramx@4.3.2 init . && \
90-
npx --yes engramx@4.3.2 mistakes
89+
npx --yes engramx@4.4.0 init . && \
90+
npx --yes engramx@4.4.0 mistakes
9191
```
9292

9393
You should see, within 30 seconds, the **bi-temporal pre-mortem** engram auto-captured from your revert:
@@ -119,6 +119,8 @@ On engramx's own repo the **per-file structural context reduction is ~89%** (89.
119119

120120
Works in 8 IDEs and counting — Claude Code, Cursor, Cline, Continue.dev, Aider, Windsurf, Zed, OpenAI Codex CLI. One install, one graph, every tool benefits. Apache 2.0. Local SQLite. Nothing leaves your machine.
121121

122+
> **v4.4.0 "Curve" — 2026-06-14.** New: **`engram measure --session`** proves the *combined* whole-session structural reduction by replaying your hook-log as an honest per-session break-even-P curve (Token-loop C). The recall bench now ships **confidence intervals** — on engram's own repo the PageRank ranker's lift over random ordering is **+5.0pp, 95% CI [+1.7, +8.5]** (excludes 0 → real); recall@10 macro 45.1% [36.4, 54.0]. Plus: `query`/`gen` fail loudly on a bad `--project`, a hermetic skills test, and a front door that leads with the differentiator, not the number. Still no cost claims — a structural reduction, not a bill saving.
123+
>
122124
> **v4.3 "Proof" shipped 2026-06-05 — engram's saving is now real *and provable*.** Run **`engram measure`** in your own repo to see the honest structural context-token reduction on **your** code — every disclosure computed live: it's a ceiling, here's the recall, here's the intercept rate, "structural tokens, not your bill." Run **`npm run bench:recall`** for the reproducible proof that engram surfaces the files a change actually touches (recall@10 33% on engram's own repo, decomposed honestly: candidate generation reaches 43%, the PageRank ranker adds +3.2pp over random-within-candidate; 10.4% blind chance).
123125
>
124126
> New this release: a **never-worse gate** on Grep (engram passes through whenever its packet isn't actually smaller — sized to your grep's exact `cwd`/`path`/`glob` scope), **Bash-grep interception** (the shell-only IDEs — Aider, Codex CLI, Cline — now get the call-site packet too), a **sub-agent context broker** (a tight ~100-token ranked slice into each spawned Claude Code sub-agent — the one regime prompt caching can't help), and a **compaction ledger** (a "previously read" list injected at `/compact` so the agent doesn't re-explore). Every number is a measured fact or a labelled bet — **no cost claims**; a *structural* context reduction, not a bill saving (engram's net over prompt caching ≈ 0). 1149 tests. See [CHANGELOG.md](CHANGELOG.md), `docs/COMPARISON.md` (vs the other local code-graph tools — ranking isn't unique, the *combination* is), and `docs/FRONTIER.md`.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "engramx",
3-
"version": "4.3.2",
3+
"version": "4.4.0",
44
"mcpName": "io.github.NickCirv/engram",
55
"description": "The context spine for AI coding agents. 9 built-in providers + mcpConfig plugin contract (wrap any MCP server in 10 lines), generic MCP-client aggregator (stdio), pre-mortem mistake-guard, bi-temporal mistake memory, Anthropic Auto-Memory bridge, SSE streaming context packets, dual-emit AGENTS.md+CLAUDE.md. Up to ~89% per-file structural context reduction (codebase-dependent; reproducible bench included). Local SQLite, zero cloud.",
66
"repository": {

server.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
"url": "https://github.com/NickCirv/engram",
77
"source": "github"
88
},
9-
"version": "4.3.2",
9+
"version": "4.4.0",
1010
"packages": [
1111
{
1212
"registryType": "npm",
1313
"identifier": "engramx",
14-
"version": "4.3.2",
14+
"version": "4.4.0",
1515
"transport": {
1616
"type": "stdio"
1717
},

0 commit comments

Comments
 (0)