@ruso-0/nreki 10.7.0 → 10.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,45 @@
2
2
 
3
3
  All notable changes to NREKI will be documented in this file.
4
4
 
5
+ ## [10.7.2] - 2026-04-18
6
+
7
+ ### Fixed
8
+ - README landing image now resolves. Previous `docs/demo.gif` was never generated; replaced with `docs/demo.svg` (animated SVG, 42 KB, renders on both GitHub and npmjs.com).
9
+ - Normalized em-dashes (`—`) to plain hyphens (`-`) in the README for consistent rendering across terminals and fonts that lack the Unicode glyph.
10
+
11
+ ### Notes
12
+ Docs-only release. No code changes. Library behavior identical to 10.7.1.
13
+
14
+ ## [10.7.1] - 2026-04-18
15
+
16
+ ### Fixed
17
+ - **Critical cache miss bug in edit validation warm path**: `engine.cachedGraph` was never populated during warmup (`getRepoMap` did not set it, only `getDependencyGraph` did). Additionally, the FSWatcher invalidated the cache indiscriminately after any internal edit, forcing a full repo reparse (~70s on VSCode-scale codebases, 5,584 files).
18
+
19
+ ### Added
20
+ - Cryptographic edit tickets (SHA-256) in `NrekiEngine` to distinguish internal edits (NREKI writes) from external changes (human, git, linter, auto-healer). Only external changes invalidate the topology cache.
21
+ - `topologyChanged` detection in `semanticEdit` and `batchSemanticEdit` using AST signature change + import/export diff. Selective cache invalidation only when the edit actually changes topology.
22
+ - Dynamic imports (`import("...")`) and side-effect imports (`import "module";`) now detected by `extractImports`.
23
+ - OOM guard on ticket map (max 100 entries, FIFO eviction).
24
+ - `engine.invalidateCachedGraph()` public method for explicit invalidation.
25
+ - 6 new tests in `tests/cache-tickets.test.ts` covering cache persistence, invalidation on import changes, ticket rollback cleanup, external modification detection, OOM guard, and SQLite index freshness.
26
+
27
+ ### Changed
28
+ - `engine.getRepoMap()` now populates `cachedGraph` as side effect on warmup (fix for cold-boot cache miss).
29
+ - `processQueue` always calls `indexFile` to keep SQLite/BM25 search index synchronized, even for internal edits.
30
+
31
+ ### Performance
32
+ Warm edits on VSCode-scale codebase (5,584 files):
33
+ - Before: ~39-74s per edit (full repo reparse on every edit)
34
+ - After: ~17ms median for edits without import changes (2,254x improvement)
35
+ - Edits that change imports/exports trigger legitimate regeneration (~56-70s, one-time)
36
+
37
+ Benchmark methodology: 5 edits on microsoft/vscode with cold warmup. Results reproducible via the instrumented benchmark wrapper. See `D:\bench\results\nreki-v10.7.1-fix-benchmark-2026-04-18.json`.
38
+
39
+ ### Tests
40
+ - 789 tests passing (783 pre-existing + 6 new cache-tickets tests)
41
+ - Zero-any discipline preserved
42
+ - No regressions
43
+
5
44
  ## 10.7.0 (2026-04-17) — The NREKI Way
6
45
 
7
46
  NREKI stops acting like a passive guard and starts acting like an immune system. The LLM is now surrounded by parasitic signals that cost nothing per call but continuously shape its behavior toward discipline. Four features ship in one minor bump.