@ruso-0/nreki 10.13.0 → 10.14.0
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 +56 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NREKI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [10.14.0] — 2026-04-22
|
|
6
|
+
|
|
7
|
+
### Multi-Patch Transactional batch_edit + Enforcer Hotfixes
|
|
8
|
+
|
|
9
|
+
Major feature: multiple patches to the same symbol are now allowed within a single `batch_edit` transaction, implemented via clustering + micro-splicing in RAM architecture. Bundled with enforcer hotfixes (F1 CSV focus, F2 passport persist, F3 win32 case-insensitive) identified during the v10.13.0 sprint retrospective. Cross-audit methodology: Claude + Pipipi Furia.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Block 3: Multi-Patch Transactional Architecture**: `batchSemanticEdit` now clusters edits by AST node identity (`chunk.startIndex`). Multiple patches to the same symbol are applied sequentially inside an isolated chunk string ("the Limbo"), then spliced back into the global file state in one atomic step. Enables refactors that previously required node-script bypasses (e.g., renaming a field that appears in non-contiguous regions of a single function).
|
|
14
|
+
- **ACID pre-check**: each `search_text` in a multi-patch group must exist in the ORIGINAL chunk content. Prevents cross-patch corruption where a later patch anchors to content injected by an earlier one.
|
|
15
|
+
- **Causal re-indent inheritance**: when a preceding patch alters indentation (e.g., wrapping code in try/catch), subsequent fuzzy-matched patches inherit the new indent via split/join preservation. Intentional — keeps sequential patches causally consistent.
|
|
16
|
+
- **6 new tests** in `tests/batch-edit.test.ts` covering: happy multi-patch, ACID rejection, mixed-mode rejection, re-indent causal sequencing, per-iteration 80L cap enforcement, multi-chunk reverse-offset ordering.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **F1 — CSV parse in `compress focus`**: `focus:"A, B, C"` was being stored as the literal string `"A, B, C"` in the passport's `focusedSymbols` Set, causing subsequent `.has("A")` lookups to fail. Split on comma and register each symbol individually.
|
|
21
|
+
- **F2 — Passport persists post-edit**: removed aggressive decay (`focusedSymbols.delete` + `rawRead = false`) after successful `edit`/`batch_edit`. The agent retains in-context knowledge of symbols it just mutated; Layer 1 (AST sandbox), Layer 2 (TypeScript in RAM), and Cache Tickets already cover correctness and external-edit invalidation. Eliminates the recompress-after-every-edit loop that caused multi-step refactor deadlocks.
|
|
22
|
+
- **F3 — Win32 path case-insensitive comparison in enforcer hook**: `path.resolve` does not normalize Windows drive-letter case (`D:/` vs `d:/`). The enforcer hook now compares paths case-insensitively on win32 only; POSIX behavior unchanged.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **Intra-chunk overlap detection** rewritten: instead of rejecting any two edits resolving to the same AST chunk, the enforcer now accepts multi-patch groups when all edits are `mode:"patch"` and `search_text` values pass the ACID pre-check.
|
|
27
|
+
- **80L payload guillotine**: moved from pre-validation sweep to per-iteration check inside the Phase C micro-splice loop. Each patch in a multi-patch group is evaluated individually; the first patch exceeding 80L aborts the transaction.
|
|
28
|
+
|
|
29
|
+
### Notes
|
|
30
|
+
|
|
31
|
+
- Backward compatibility: 827/827 tests from v10.13.1 baseline pass unchanged. 833/833 total including the 6 new Block 3 tests.
|
|
32
|
+
- `.claude/hooks/nreki-enforcer.mjs` and `.claude/settings.json` now tracked in git (previously untracked, which meant the enforcer was local-only to each developer). F3 is visible in the repo as of this release.
|
|
33
|
+
|
|
34
|
+
### Acknowledgments
|
|
35
|
+
|
|
36
|
+
Cross-audit triangular: Claude sourced code-level diagnostics and cross-audited the Block 3 architecture against the AST offset mismatch vector; Pipipi Furia confirmed root causes, proposed the clustering + micro-splicing design, and authored the initial test suite; Antigravity executed the multi-step protocol with hardened rollback discipline across the v10.13.1 hotfix and v10.14.0 feature release.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## [10.13.1] — 2026-04-22
|
|
40
|
+
|
|
41
|
+
### Enforcer Hotfix: CSV Parse + Passport Persistence
|
|
42
|
+
|
|
43
|
+
Hotfix addressing two deadlock sources in the Cognitive Enforcer identified during the v10.13.0 sprint retrospective. Cross-audit methodology: Claude + Pipipi Furia.
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- **F1 — CSV parse in `compress focus`**: `focus:"A, B, C"` was being stored as the literal string `"A, B, C"` in the passport's `focusedSymbols` Set, causing subsequent `.has("A")` lookups to fail. Split on comma and register each symbol individually. Affects only multi-symbol compress calls.
|
|
48
|
+
- **F2 — Passport persists post-edit**: removed aggressive decay (`focusedSymbols.delete` + `rawRead = false`) after successful `edit`/`batch_edit`. The agent retains in-context knowledge of symbols it just mutated; Layer 1 (AST sandbox), Layer 2 (TypeScript in RAM), and Cache Tickets already cover correctness and external-edit invalidation. Eliminates the recompress-after-every-edit loop that forced node-script bypasses during the v10.13.0 refactor sprint.
|
|
49
|
+
|
|
50
|
+
### Notes
|
|
51
|
+
|
|
52
|
+
- Both fixes are strictly more permissive than prior behavior. No regression surface for existing users.
|
|
53
|
+
- Release test suite: 827/827 passing.
|
|
54
|
+
- An additional hotfix (F3 — `win32` path case-insensitive comparison) was applied to `.claude/hooks/nreki-enforcer.mjs` in the working tree. That file is currently outside git tracking; a follow-up in v10.14.x will address tracking of `.claude/` enforcer assets.
|
|
55
|
+
|
|
56
|
+
### Acknowledgments
|
|
57
|
+
|
|
58
|
+
Cross-audit triangular: Claude sourced code-level diagnostics from the v10.13.0 sprint trace; Pipipi Furia confirmed root causes against the enforcer source and vetoed `mtime`-based invalidation in favor of passport persistence resting on the existing Cache Tickets infrastructure; Antigravity executed the protocol with hardened rollback discipline.
|
|
59
|
+
|
|
60
|
+
|
|
5
61
|
## [10.13.0] — 2026-04-22
|
|
6
62
|
|
|
7
63
|
### AHI Engine: Lanczos-PRO Transplant + Empirical Calibration
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ruso-0/nreki",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.14.0",
|
|
4
4
|
"description": "MCP plugin that validates AI agent edits in RAM before they touch disk. Spectral clustering, architecture diffs, bridge detection, dead code oracle, and cross-file semantic checks for TypeScript, Go (gopls), and Python (pyright). Zero cloud dependencies.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|