circle-ir-ai 2.8.13 → 2.8.14

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -5,6 +5,56 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.8.14] - 2026-06-12
9
+
10
+ ### Dependencies
11
+
12
+ - **`circle-ir`** `3.38.0` → `3.39.0` **(exact pin)**. Headline:
13
+ **cross-instance field-binding taint propagation** — `FieldTaintInfo`
14
+ summaries now record constructor-bound fields, setter writers, and
15
+ `@Autowired` / `@Inject` annotated fields. `findFieldBindingTaintPaths()`
16
+ detects local variable assignments from field reads (e.g.
17
+ `local = receiver.field`) and marks the local as tainted when the
18
+ receiver's type owns a tainted field. Also: **caller-body sink
19
+ emission** — after marking caller-side locals as tainted via wrapper
20
+ returns, the engine checks whether any sink in the caller's own
21
+ method body consumes the tainted variable, surfacing cases where the
22
+ final sink (`Paths.get(p)`, `Runtime.exec(cmd)`) lives in the
23
+ caller's file rather than a cross-file callee. Test suite expanded
24
+ 1935 → 1939 (4 new Jenkins/Spring DI fixtures).
25
+ - All 643 circle-ir-ai tests (+ 3 skipped) pass against `3.39.0` —
26
+ no API surface changes, drop-in upgrade.
27
+
28
+ ## [Unreleased]
29
+
30
+ ### Fixed
31
+
32
+ - **`benchmarks/runners/run-cwe-bench-java.ts`** — restore missing
33
+ `findFileRecursive` import from `../lib/find-file.js` (regression
34
+ introduced when `findFile`/`findFileRecursive` were extracted to
35
+ `benchmarks/lib/find-file.ts` per #66; only `findFile` was added to
36
+ the import, leaving the runner crashing at line 550 when it tried to
37
+ locate AntiSamy/ESAPI/Spring-Security config files for cross-file
38
+ context). Benchmark now runs end-to-end on CWE-Bench-Java with
39
+ `--llm-discovery`. Doc-only fix; no version bump (benchmarks/ is not
40
+ in the published `files` array).
41
+
42
+ ### Benchmarks
43
+
44
+ - **CWE-Bench-Java refresh on circle-ir@3.38.0** with `gemma3:12b` via
45
+ OpenRouter (`google/gemma-3-12b-it`) — **100/120 strict (83.3%)**,
46
+ 100/111 engine-evaluable (90.1%), 1/80 LLM failures (1.3%). **+6
47
+ CVEs over the 2026-06-09 Ollama 3.37.0 baseline** (94/120, 78.3%),
48
+ driven primarily by 3.38.0's frame-agnostic cross-file
49
+ inter-procedural taint walker (cognium-dev#19). gemma3:12b now ranks
50
+ #2 overall, within 4 CVEs of `claude-opus-latest` (104/120). Per-CWE:
51
+ CWE-022 85.5% (flat) · CWE-078 **92.3% (+23pp)** · CWE-079 **83.9%
52
+ (+6.5pp)** · CWE-094 **71.4% (+4.7pp)**. Wall-clock ~17 min (vs ~94
53
+ min local Ollama — ~5.5× speed-up from no GPU contention). Log:
54
+ `benchmarks/results/cwe-java-gemma3-12b-openrouter-2026-06-12.log`.
55
+ One transient HTTP error on OpenRouter (no retry-on-5xx in
56
+ `ax-client.ts` — filed as a follow-up).
57
+
8
58
  ## [2.8.13] - 2026-06-12
9
59
 
10
60
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circle-ir-ai",
3
- "version": "2.8.13",
3
+ "version": "2.8.14",
4
4
  "description": "LLM-enhanced SAST analysis built on circle-ir",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -94,7 +94,7 @@
94
94
  "dependencies": {
95
95
  "@ax-llm/ax": "^20.0.0",
96
96
  "@mastra/core": "^1.18.0",
97
- "circle-ir": "3.38.0",
97
+ "circle-ir": "3.39.0",
98
98
  "minimatch": "^10.2.5",
99
99
  "p-queue": "^9.1.0"
100
100
  },