@cognium-ai/mcp-server 4.16.5 → 4.17.1

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 (67) hide show
  1. package/CHANGELOG.md +1834 -0
  2. package/README.md +27 -257
  3. package/dist/deprecation.d.ts +5 -0
  4. package/dist/deprecation.d.ts.map +1 -0
  5. package/dist/deprecation.js +7 -0
  6. package/dist/deprecation.js.map +1 -0
  7. package/dist/index.d.ts +18 -12
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +27 -19
  10. package/dist/index.js.map +1 -1
  11. package/dist/server.d.ts +15 -3
  12. package/dist/server.d.ts.map +1 -1
  13. package/dist/server.js +26 -31
  14. package/dist/server.js.map +1 -1
  15. package/package.json +6 -7
  16. package/dist/analysis.d.ts +0 -25
  17. package/dist/analysis.d.ts.map +0 -1
  18. package/dist/analysis.js +0 -45
  19. package/dist/analysis.js.map +0 -1
  20. package/dist/mappers.d.ts +0 -41
  21. package/dist/mappers.d.ts.map +0 -1
  22. package/dist/mappers.js +0 -69
  23. package/dist/mappers.js.map +0 -1
  24. package/dist/tools/check-license-compliance.d.ts +0 -11
  25. package/dist/tools/check-license-compliance.d.ts.map +0 -1
  26. package/dist/tools/check-license-compliance.js +0 -125
  27. package/dist/tools/check-license-compliance.js.map +0 -1
  28. package/dist/tools/find-credential-exposure.d.ts +0 -17
  29. package/dist/tools/find-credential-exposure.d.ts.map +0 -1
  30. package/dist/tools/find-credential-exposure.js +0 -185
  31. package/dist/tools/find-credential-exposure.js.map +0 -1
  32. package/dist/tools/find-excessive-permissions.d.ts +0 -16
  33. package/dist/tools/find-excessive-permissions.d.ts.map +0 -1
  34. package/dist/tools/find-excessive-permissions.js +0 -144
  35. package/dist/tools/find-excessive-permissions.js.map +0 -1
  36. package/dist/tools/find-install-script-risk.d.ts +0 -11
  37. package/dist/tools/find-install-script-risk.d.ts.map +0 -1
  38. package/dist/tools/find-install-script-risk.js +0 -115
  39. package/dist/tools/find-install-script-risk.js.map +0 -1
  40. package/dist/tools/find-pattern.d.ts +0 -13
  41. package/dist/tools/find-pattern.d.ts.map +0 -1
  42. package/dist/tools/find-pattern.js +0 -114
  43. package/dist/tools/find-pattern.js.map +0 -1
  44. package/dist/tools/find-spec-drift.d.ts +0 -10
  45. package/dist/tools/find-spec-drift.d.ts.map +0 -1
  46. package/dist/tools/find-spec-drift.js +0 -41
  47. package/dist/tools/find-spec-drift.js.map +0 -1
  48. package/dist/tools/find-stale-dependencies.d.ts +0 -14
  49. package/dist/tools/find-stale-dependencies.d.ts.map +0 -1
  50. package/dist/tools/find-stale-dependencies.js +0 -177
  51. package/dist/tools/find-stale-dependencies.js.map +0 -1
  52. package/dist/tools/find-typosquats.d.ts +0 -11
  53. package/dist/tools/find-typosquats.d.ts.map +0 -1
  54. package/dist/tools/find-typosquats.js +0 -141
  55. package/dist/tools/find-typosquats.js.map +0 -1
  56. package/dist/tools/layer-bom.d.ts +0 -15
  57. package/dist/tools/layer-bom.d.ts.map +0 -1
  58. package/dist/tools/layer-bom.js +0 -98
  59. package/dist/tools/layer-bom.js.map +0 -1
  60. package/dist/tools/verify-spec-conformance.d.ts +0 -9
  61. package/dist/tools/verify-spec-conformance.d.ts.map +0 -1
  62. package/dist/tools/verify-spec-conformance.js +0 -49
  63. package/dist/tools/verify-spec-conformance.js.map +0 -1
  64. package/dist/walk.d.ts +0 -33
  65. package/dist/walk.d.ts.map +0 -1
  66. package/dist/walk.js +0 -83
  67. package/dist/walk.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,1834 @@
1
+ # Changelog
2
+
3
+ ## [4.17.1] - 2026-10-02
4
+
5
+ ### Changed
6
+ - **`circle-ir-ai` ^4.17.0 → ^4.19.0**, for the same reason as the CLI: the old range
7
+ admitted a module pinning a different `circle-ir` minor than the one this shim's
8
+ server loads. This package has **no `circle-ir` dependency of its own** — it had one
9
+ until the shim was reduced to forwarding, so there is nothing here to pin.
10
+ - **The ten module tools do not load at this version, and that is the release train.**
11
+ The shim depends on `@cognium/mcp-server` `^0.2.0`, which pins `circle-ir` 4.9.29,
12
+ while `circle-ir-ai` 4.19.0 declares 4.10.0; the loader compares `major.minor` and
13
+ refuses. Two of four tests say so. It clears when `@cognium/mcp-server` 0.5.0 is
14
+ published. This package is deprecated and forwards to that server, so the pin is
15
+ better moved once, with the republish, than guessed at now.
16
+
17
+ ## [4.17.0] - 2026-10-01
18
+
19
+ **Deprecated. This is the last release of `@cognium-ai/mcp-server`.** The package is now a shim
20
+ over [`@cognium/mcp-server`](https://www.npmjs.com/package/@cognium/mcp-server), the one MCP
21
+ server. Install that and `circle-ir-ai`, and run `mcp-server-cognium-dev`, to get the same tools.
22
+
23
+ ### Changed
24
+ - **The ten tools moved to `circle-ir-ai/mcp`** and are served by `@cognium/mcp-server`, which
25
+ loads that module next to its own eleven tools. Nothing here implements a tool any more.
26
+ Tested with `@cognium/mcp-server` 0.2.0, `circle-ir-ai` 4.17.0 and `circle-ir` 4.9.29.
27
+ - **`cognium-mcp` still starts a server**, now the one server: it prints a deprecation notice
28
+ on stderr and then serves 21 tools — the ten it always did, with the same names and
29
+ arguments, plus the eleven of `@cognium/mcp-server`.
30
+ - **`buildServer()` keeps its name and stays synchronous**, and returns a server with the same
31
+ 21 tools. `createServer()` from the one server is re-exported for hosts that can await.
32
+ - Dependencies are now `@cognium/mcp-server` ^0.2.0, `circle-ir-ai` ^4.17.0 and MCP SDK
33
+ ^1.30.1. `circle-ir`, `minimatch` and `zod` are no longer direct dependencies.
34
+
35
+ #### Consumer Impact
36
+ - **`serverInfo` is now `@cognium/mcp-server` and its version**, not `cognium-mcp` / `0.4.0`.
37
+ A client matching on the old name stops matching.
38
+ - **`find_credential_exposure` with `llm_verify: true` is refused** unless `COGNIUM_ENDPOINT`
39
+ or a licence token is configured: an error result with one line of text and no
40
+ `structuredContent`. Before, verification was skipped without saying so.
41
+ - **Every response from the ten tools gains a `provenance` field**, and their input schemas
42
+ are generated by zod 4; names, types and required arguments are unchanged.
43
+
44
+ ## [4.16.5] - 2026-10-01
45
+
46
+ ### Changed
47
+ - **`circle-ir` 4.9.27 → 4.9.29** (fleet re-pin; 4.9.28 was pinned briefly and never published).
48
+ C# product-path recall on Juliet reaches **93.5%** (from 10.6%), with a sharp precision
49
+ regression confined to the families cognium-dev#508 applies to, plus a carried-over Rust
50
+ deser-sink regression (cognium-dev#541). See `circle-ir-ai/CHANGELOG.md` for the full table.
51
+ Suite passes unchanged; exactly one copy of `circle-ir` resolves.
52
+
53
+ ## [4.16.4] - 2026-09-29
54
+
55
+ ### Changed
56
+ - **`circle-ir` 4.9.26 → 4.9.27** (fleet chain; see circle-ir-ai 4.16.4 for the C# benchmark
57
+ deltas this engine bump produces — recall up on Juliet shapes, one new xss false positive from
58
+ an uncredited `HtmlEncoder`, cognium-dev#520). Test suite passes unchanged; exactly one copy of
59
+ `circle-ir` resolves.
60
+
61
+ ## [4.16.3] - 2026-09-24
62
+
63
+ ### Changed
64
+ - **circle-ir 4.9.25 → 4.9.26, circle-ir-ai ^4.16.2 → ^4.16.3** (fleet chain; see circle-ir-ai
65
+ 4.16.3). Go/C# batch: cognium-dev#472 stops Go taint leaking to a same-named local in another
66
+ function (**live in the 4.16.2 pin** — it shipped in 4.9.23 via the #459 `r.Body` source),
67
+ #343 Go `bufio` over the request body, #339 C# bare expression-statement sinks, #473 `initParser`
68
+ no longer caches a failed init forever. **Go finding counts move in both directions** — #472
69
+ re-attributes source lines, so a baseline keyed on `sink@source->sink` shows one removal plus one
70
+ addition per affected flow. Measured on the Go synthetic suite: score 64.2 % → **89.5 %**,
71
+ FPR 20.0 % → **0.0 %**; OWASP/Juliet/Bash/HTML stay at 100 %. Lockfile refreshed; single
72
+ circle-ir copy verified.
73
+
74
+ ## [4.16.2] - 2026-09-24
75
+
76
+ ### Changed
77
+ - **circle-ir 4.9.23 → 4.9.25, circle-ir-ai ^4.16.1 → ^4.16.2** (fleet chain; see circle-ir-ai
78
+ 4.16.2). Skips 4.9.24, which carries two upstream `analyzeProject` robustness fixes: a Python
79
+ starred parameter (`*args` / `**kwargs`) no longer fails the project analysis closed on an
80
+ uncompilable `\b<name>\b` regexp (cognium-dev#458), and a minified / bundled file no longer
81
+ wedges the scan (cognium-dev#460). No detection change on ordinary source; no tool behaviour
82
+ change here. Lockfile refreshed; single circle-ir copy verified.
83
+
84
+ ## [4.16.1] - 2026-09-23
85
+
86
+ ### Changed
87
+ - circle-ir-ai ^4.15.1 → ^4.16.1 (fleet chain; see cognium-ai 4.16.1). circle-ir stays at 4.9.23.
88
+ Lockfile refreshed; single circle-ir copy verified.
89
+
90
+ ## [4.15.1] - 2026-09-22
91
+
92
+ ### Changed
93
+ - circle-ir 4.9.22 → 4.9.23, circle-ir-ai ^4.15.0 → ^4.15.1 (fleet chain; see cognium-ai 4.15.1).
94
+ Lockfile refreshed; single circle-ir copy verified.
95
+
96
+ ## [4.15.0] - 2026-09-22
97
+
98
+ ### Changed
99
+ - circle-ir 4.9.20 → 4.9.22, circle-ir-ai ^4.14.3 → ^4.15.0 (fleet chain; see cognium-ai 4.15.0).
100
+ Lockfile refreshed; single circle-ir copy verified.
101
+
102
+ ## [4.14.2] - 2026-09-19
103
+
104
+ ### Changed
105
+ - Bump circle-ir 4.9.17 + circle-ir-ai ^4.14.2. Single circle-ir copy verified; typecheck clean.
106
+
107
+ # Changelog
108
+
109
+ ## [4.14.1] - 2026-09-18
110
+
111
+ ### Changed
112
+ - Bump circle-ir 4.9.14 → 4.9.16 and circle-ir-ai ^4.14.0 → ^4.14.1 (SAST-team precision/detection fixes). Single circle-ir copy verified; typecheck clean.
113
+
114
+
115
+ ## [4.14.0] - 2026-09-15
116
+
117
+ ### Changed
118
+
119
+ - **circle-ir-ai ^4.13.0 → ^4.14.0.** Moves with the fleet; no behaviour change in this package. Carries the skills-detector + scanner precision fixes (cognium-ai#447/#449/#452/#461/#463).
120
+
121
+ ## [4.13.0] - 2026-09-14
122
+
123
+ ### Changed
124
+
125
+ - **Fleet pin: circle-ir 4.9.13 → 4.9.14, circle-ir-ai ^4.12.0 → ^4.13.0.** No behaviour change; moves with the fleet so the pin-uniformity gate holds across all four packages in one commit.
126
+
127
+ ## [4.12.0] - 2026-09-11
128
+
129
+ ### Changed
130
+
131
+ - **Fleet pin: `circle-ir` 4.9.10 → 4.9.13, `circle-ir-ai` ^4.11.0 → ^4.12.0.** No behaviour
132
+ change in this package; it moves with the fleet so the `circle-ir pin uniformity` gate holds
133
+ across all four packages in one commit. Verified: one copy of `circle-ir`, typecheck, build
134
+ and 11 tests clean.
135
+
136
+ ## [4.11.0] - 2026-09-08
137
+
138
+ - Engine refresh: `circle-ir-ai` `^4.10.1` → `^4.11.0` (skills precision passes 2–3, Python manifests, SR-D scanners, JS sink shapes, model-aware LLM completion budget). No tool changes. `circle-ir` stays 4.9.10.
139
+
140
+ All notable changes to `@cognium-ai/mcp-server` are documented here.
141
+ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
142
+ and the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format.
143
+
144
+ ## [4.10.1] - 2026-09-02
145
+
146
+ ### Changed
147
+
148
+ - Bump `circle-ir` 4.9.9 → 4.9.10 and `circle-ir-ai` ^4.10.0 → ^4.10.1 (lockstep
149
+ dep refresh; no MCP surface change). See circle-ir-ai 4.10.1 for the upstream
150
+ fix list (XXE reach map, Rust `format!` sink, C# #275 sinks).
151
+ - `test/smoke-stdio.mjs` now expects `layer_bom` in `tools/list` (was missing
152
+ from the stdio smoke since the tool shipped). Verified: 11 tests + stdio smoke
153
+ pass, single `circle-ir` copy.
154
+
155
+ ## [4.10.0] - 2026-08-28
156
+
157
+ ### Changed
158
+
159
+ - Bump `circle-ir-ai` ^4.9.0 → ^4.10.0 (cognium-ai#337 durable degraded latch for
160
+ connection-class LLM outages). No MCP surface change; lockstep dep refresh.
161
+
162
+ ## [4.9.0] - 2026-08-28
163
+
164
+ ### Changed
165
+
166
+ - Bump `circle-ir-ai` ^4.8.13 -> ^4.9.0 (circle-ir stays 4.9.9). Picks up the
167
+ skillsregistry#85 verdict reproducibility guard — instruction-safety reads can no
168
+ longer flip a skill to VULNERABLE without deterministic corroboration, so the MCP
169
+ skill tools return reproducible verdicts. Kill switch:
170
+ `SKILL_INSTRUCTION_VERDICT_GUARD=0`.
171
+
172
+ ## [4.8.13] - 2026-08-28
173
+
174
+ ### Changed
175
+
176
+ - Bump `circle-ir-ai` ^4.8.12 -> ^4.8.13 (circle-ir stays 4.9.9). Clears the last two skillsregistry#82 residuals (bare API-key/env-var + bare CRUD reads no longer flip HIGH).
177
+
178
+ ## [4.8.12] - 2026-08-28
179
+
180
+ ### Changed
181
+
182
+ - Bump `circle-ir-ai` ^4.8.11 -> ^4.8.12 (circle-ir stays 4.9.9). Generalizes skillsregistry#81 (config_injection keys on payload not filename) + #82 (disclosed-capability keys on CWE class).
183
+
184
+ ## [4.8.11] - 2026-08-28
185
+
186
+ ### Changed
187
+
188
+ - Bump `circle-ir-ai` ^4.8.10 -> ^4.8.11 (circle-ir stays 4.9.9). Clears skillsregistry#82 (disclosed-capability exfil/escalation over-reads) + #81 reopened (config_injection on self-install scripts) — the scale FP contamination.
189
+
190
+ ## [4.8.10] - 2026-08-28
191
+
192
+ ### Changed
193
+
194
+ - Bump `circle-ir-ai` ^4.8.9 -> ^4.8.10 (circle-ir stays 4.9.9). Clears the last skillsregistry#80 flip (keumbang safety_subversion on a safe-by-default opt-in gate).
195
+
196
+ ## [4.8.9] - 2026-08-28
197
+
198
+ ### Changed
199
+
200
+ - Bump `circle-ir-ai` ^4.8.8 -> ^4.8.9 (circle-ir stays 4.9.9). Clears skillsregistry#80 (instruction-safety downweight now matches the quoted skill text) + #81 (config_injection ignores comments / in-repo manifests).
201
+
202
+ ## [4.8.8] - 2026-08-27
203
+
204
+ ### Changed
205
+
206
+ - Bump `circle-ir-ai` ^4.8.7 -> ^4.8.8 (circle-ir stays 4.9.9). Clears skillsregistry#67/#77 residual detector-logic FPs (description_injection tagline, safety_subversion default-off gate, api_base_url_hijack generic base-URL to a data API).
207
+
208
+ ## [4.8.7] - 2026-08-27
209
+
210
+ ### Changed
211
+
212
+ - Bump `circle-ir-ai` ^4.8.6 -> ^4.8.7 (circle-ir stays 4.9.9). Adds skillsregistry#72 batch 3 `schema_violation` detector (structural validation of a present mcp-config.json).
213
+
214
+ ## [4.8.6] - 2026-08-27
215
+
216
+ ### Changed
217
+
218
+ - Bump `circle-ir-ai` ^4.8.5 -> ^4.8.6 (circle-ir stays 4.9.9). SR-precision batch: #67 (defensive-advice over-read), #79 + #77 residuals, cognium-ai#261 deterministic severity (opt-in LLM_DETERMINISTIC_SEVERITY=1).
219
+
220
+ ## [4.8.5] - 2026-08-27
221
+
222
+ ### Changed
223
+
224
+ - Bump `circle-ir-ai` ^4.8.4 -> ^4.8.5 (circle-ir stays 4.9.9). Surfaces skillsregistry#79 the decisive capability_mismatch severity FLOOR (deterministic zero-medium+ for env/network/file undisclosed classes; the verifiable-histogram fix) + #72 batch-2 supply-chain bridge (opt-in).
225
+
226
+ ## [4.8.4] - 2026-08-27
227
+
228
+ ### Changed
229
+
230
+ - Bump `circle-ir-ai` ^4.8.3 -> ^4.8.4 (circle-ir stays 4.9.9). Surfaces skillsregistry#72 detector-coverage batch 1 — new `memory_file_poisoning` + `broken_reference` skill detectors.
231
+
232
+ ## [4.8.3] - 2026-08-27
233
+
234
+ ### Changed
235
+
236
+ - Bump `circle-ir-ai` ^4.8.2 -> ^4.8.3 (circle-ir stays 4.9.9). Surfaces skillsregistry#79 — capability_mismatch disclosed-purpose + vuln-reframe false-positive fix (the #1 false-flag driver, ~70-85% FP on the network/file/env "undisclosed capability" class).
237
+
238
+ ## [4.8.2] - 2026-08-26
239
+
240
+ ### Changed
241
+
242
+ - Bump `circle-ir-ai` ^4.8.1 -> ^4.8.2 (circle-ir stays 4.9.9). Surfaces the skillsregistry#77 SR-feedback follow-up (broadened test-path gate: scripts/e2e_*, bench/, bin/, vendored trees) and #75 (mcp-permissions undisclosed-network CRITICAL -> MEDIUM).
243
+
244
+ ## [4.8.1] - 2026-08-26
245
+
246
+ ### Changed
247
+
248
+ - Bump `circle-ir-ai` ^4.8.0 -> ^4.8.1 (circle-ir stays 4.9.9). Surfaces the complete skillsregistry#77 engine fix: test-path gate for behavioral/cred-exfil/base-URL detectors, capability-mismatch test-file exclusion (CWE-200/#75), and per-skill collapse of repeated patterns (the monorepo revocation amplifier).
249
+
250
+ ## [4.8.0] - 2026-08-26
251
+
252
+ ### Changed
253
+
254
+ - Bump `circle-ir-ai` ^4.7.0 → ^4.8.0 and `circle-ir` 4.9.8 → 4.9.9. Inherits
255
+ the circle-ir 4.9.9 large-file taint perf fix (#305), the #117 Specifica
256
+ sink-class allowlist, and skillsregistry#65 (CWE-494 non-public-host guard). No
257
+ MCP tool or API changes.
258
+
259
+ ## [4.7.0] - 2026-08-25
260
+
261
+ ### Changed
262
+
263
+ - Bump `circle-ir-ai` ^4.6.1 → ^4.7.0 and `circle-ir` 4.9.7 → 4.9.8. Inherits the
264
+ engine's #336 graph-path gate (library/tool HIGH/CRIT `graph_path_exists=false`
265
+ → medium) and the circle-ir 4.9.8 dependency/security refresh. No MCP tool or
266
+ API changes.
267
+
268
+ ## [4.6.1] - 2026-08-24
269
+
270
+ ### Changed — bump circle-ir-ai ^4.6.1 (#304 + #335 verify over-chunking fix)
271
+
272
+ No mcp-server source changes; single circle-ir copy verified, typecheck clean.
273
+
274
+ ## [4.6.0] - 2026-08-23
275
+
276
+ ### Added — `layer_bom` tool + engine bump to `circle-ir-ai@^4.6.0`
277
+
278
+ New `layer_bom` MCP tool exposes the Conformis 9-layer BOM inventory (the engine
279
+ primitive, per conformis-execution-plan.md §7). Pulls the 4.6.0 engine (#334 verify
280
+ fix + BOM op). Single circle-ir copy; typecheck clean, 11 tests.
281
+
282
+ ## [4.5.0] - 2026-08-22
283
+
284
+ ### Changed — bump circle-ir-ai ^4.5.0 + circle-ir 4.9.7
285
+
286
+ Pulls the 4.5.0 engine (circle-ir 4.8.2 → 4.9.7 — OWASP 100.0%; #332 verify
287
+ over-chunking fix, #244 prompt prefix-caching, #245 dispatch scaling). No
288
+ mcp-server source changes; single circle-ir copy verified, typecheck clean,
289
+ 11 tests pass.
290
+
291
+ ## [4.4.0] - 2026-08-21
292
+
293
+ ### Changed — bump circle-ir-ai ^4.4.0 + circle-ir 4.8.2
294
+
295
+ Pulls the 4.4.0 engine (circle-ir 4.7.2 → 4.8.2 — OWASP 100.0%, #121 non-JSON fail-fast,
296
+ #315 parse guard). No mcp-server source changes; single circle-ir copy verified,
297
+ typecheck clean, 11 tests pass.
298
+
299
+ ## [4.3.2] - 2026-08-21
300
+
301
+ ### Changed — bump circle-ir-ai ^4.3.2 + circle-ir 4.7.2
302
+
303
+ Pulls the 4.3.2 engine (circle-ir 4.7.2, #329 P1 verifier-perf, #71/#70 skill
304
+ precision, #323 returnPerFileIR). No mcp-server source changes; single circle-ir copy
305
+ verified.
306
+
307
+ ## [4.3.1] - 2026-08-19
308
+
309
+ ### Changed — bump circle-ir-ai ^4.3.1
310
+
311
+ Pulls the 4.3.1 engine (trust scoring-map fixes #327, 429-storm degradation #314, and
312
+ the #120/#198 LLM-trust-pass work). No mcp-server source changes; `circle-ir` stays
313
+ pinned at `4.7.1`.
314
+
315
+ ## [4.3.0] - 2026-08-19
316
+
317
+ ### Changed — bump circle-ir-ai ^4.3.0 (LLM-verifier precision cluster #265 + #266 + #267)
318
+ Picks up the `--llm-verify` precision cluster (#265 closed-enum source type; #267 honest `graph_path_exists`; #266 de-biased verifier prompt, validated gemma3:12b 100% → 9% manufactured-pair TP). All recall-safe. No local source change. Single circle-ir copy; typecheck clean; 11 tests pass.
319
+
320
+ ## [4.2.0] - 2026-08-17
321
+
322
+ ### Changed — bump circle-ir-ai ^4.2.0 (skill-verdict precision #308 + #309)
323
+ Picks up the engine's skill-verdict precision fixes (#308 MEDIUM `capability_mismatch` no longer flips VULNERABLE; #309 zero-coverage → UNKNOWN / trust 0). No local source change. Single circle-ir copy; typecheck clean; 11 tests pass.
324
+
325
+ ## [4.1.0] - 2026-08-16
326
+
327
+ ### Changed — bump circle-ir-ai ^4.1.0 (#68 shared skill-scan precision layer)
328
+ Picks up the #68 shared skill-scan precision layer. No local source change. Single circle-ir copy; typecheck clean.
329
+
330
+ ## [4.0.7] - 2026-08-16
331
+
332
+ ### Changed — bump circle-ir 4.7.0 → 4.7.1 + circle-ir-ai ^4.0.7
333
+
334
+ Engine pin bump to latest 4.x. No source changes. Single circle-ir copy; typecheck
335
+ clean, 11 tests pass.
336
+
337
+ ## [4.0.6] - 2026-08-14
338
+
339
+ ### Changed — bump circle-ir-ai ^4.0.6 (cognium-ai#58 pool-helper export)
340
+
341
+ Picks up the exported parse-isolation pool helpers. No source changes. Single
342
+ circle-ir copy; typecheck clean.
343
+
344
+ ## [4.0.5] - 2026-08-13
345
+
346
+ ### Changed — bump circle-ir-ai ^4.0.5 (skillsregistry FP precision: sr#65 + sr#56)
347
+
348
+ Picks up the sprint-C batch-2 skill-scan FP fixes. No mcp-server source changes.
349
+ Single circle-ir copy; typecheck clean, 11 tests pass.
350
+
351
+ ## [4.0.4] - 2026-08-13
352
+
353
+ ### Changed — bump circle-ir 4.6.0 → 4.7.0 + circle-ir-ai ^4.0.4
354
+
355
+ Engine pin bump to latest 4.x. No source changes. Single circle-ir copy verified;
356
+ typecheck clean, 11 tests pass.
357
+
358
+ ## [4.0.3] - 2026-08-12
359
+
360
+ ### Changed — bump circle-ir 4.5.0 → 4.6.0 + circle-ir-ai ^4.0.3
361
+
362
+ Engine pin bump to latest 4.x. No source changes. Single circle-ir copy verified;
363
+ typecheck clean, 11 tests pass.
364
+
365
+ ## [4.0.2] - 2026-08-12
366
+
367
+ ### Changed — bump circle-ir 4.4.0 → 4.5.0 + circle-ir-ai ^4.0.2
368
+
369
+ Engine pin bump to latest 4.x. No source changes. Single circle-ir copy verified;
370
+ typecheck clean, 11 tests pass.
371
+
372
+ ## [4.0.1] - 2026-08-11
373
+
374
+ ### Changed — bump circle-ir 4.3.1 → 4.4.0 + circle-ir-ai ^4.0.1
375
+
376
+ Engine pin bump to latest 4.x. No tool-surface changes. Single circle-ir copy; typecheck clean.
377
+
378
+ ## [4.0.0] - 2026-08-10
379
+
380
+ ### Changed — fleet version alignment to 4.x (cognium-ai#289)
381
+
382
+ Realign 0.10.0 -> 4.0.0 to match the fleet major (circle-ir 4.x); bump circle-ir-ai ^3.0.0 -> ^4.0.0. No tool-surface changes. Single circle-ir copy; typecheck clean.
383
+
384
+ ## [0.10.0] - 2026-08-10
385
+
386
+ ### Changed — adopt circle-ir 4.3.1 + circle-ir-ai ^3.0.0 (cognium-ai#289)
387
+
388
+ Bump `circle-ir` `3.216.0 → 4.3.1` (C#/.NET, 8th language) + `circle-ir-ai`
389
+ `^2.104.0 → ^3.0.0`. No tool-surface changes. Single circle-ir copy verified;
390
+ typecheck clean, 11 tests pass.
391
+
392
+ ## [0.9.17] - 2026-08-10
393
+
394
+ ### Changed — bump circle-ir 3.215.0 → 3.216.0 + circle-ir-ai ^2.103.0 → ^2.104.0
395
+
396
+ Engine pin bump to stay current. No tool-surface changes. Single circle-ir copy
397
+ verified.
398
+
399
+ ## [0.9.16] - 2026-08-10
400
+
401
+ ### Changed — bump circle-ir 3.214.0 → 3.215.0 + circle-ir-ai ^2.102.0 → ^2.103.0
402
+
403
+ Engine pin bump (skillsregistry #49/#50/#51/#53 + cognium-ai#264). No
404
+ tool-surface changes. Single circle-ir copy verified.
405
+
406
+ ## [0.9.15] - 2026-08-09
407
+
408
+ ### Changed — bump circle-ir-ai ^2.101.0 → ^2.102.0
409
+
410
+ Engine sync: instruction-safety FP guards (sr#55/#56) + VEX real-CWE emission
411
+ (cognium-ai#280). No tool-surface changes.
412
+
413
+ ## [0.9.14] - 2026-08-09
414
+
415
+ ### Changed — bump circle-ir-ai ^2.100.0 → ^2.101.0
416
+
417
+ Engine sync: capability-mismatch + instruction-safety precision fixes
418
+ (skillsregistry #4/#35/#18 — safe-mirror FPs cleared, undisclosed_capability TP
419
+ preserved). Single-copy asserted; typecheck clean.
420
+
421
+ ## [0.9.13] - 2026-08-08
422
+
423
+ ### Changed — bump circle-ir-ai ^2.99.0 → ^2.100.0
424
+
425
+ Engine sync: adds the `fetch_and_execute` + `persistence` skills code-threat
426
+ detectors (skillsregistry #25 partial; #30 fetch_and_execute). Single-copy
427
+ asserted; typecheck clean.
428
+
429
+ ## [0.9.12] - 2026-08-08
430
+
431
+ ### Changed — bump circle-ir-ai ^2.98.0 → ^2.99.0
432
+
433
+ Engine sync: adds the marketplace/plugin listing scanner (detectMarketplaceThreats
434
+ — namespace_squatting #41, listing_shadowing) per skillsregistry #41/#9.
435
+ Single-copy asserted; typecheck clean.
436
+
437
+ ## [0.9.11] - 2026-08-08
438
+
439
+ ### Changed — bump circle-ir-ai ^2.97.0 → ^2.98.0
440
+
441
+ Engine sync: adds the SR-D2 `trigger_hijack` + SR-E7 `shadow_features` skills
442
+ detectors (#24/#19). Single-copy asserted; typecheck clean.
443
+
444
+ ## [0.9.10] - 2026-08-08
445
+
446
+ ### Changed — bump circle-ir-ai ^2.96.0 → ^2.97.0
447
+
448
+ Engine sync to 2.97.0: cache-dir EACCES resilience + CIRCLE_IR_CACHE_DIR override
449
+ (fixes api.cognium.net 0-findings) and the four critical SR-E skills detectors
450
+ (#20/#30/#21/#40). Single-copy asserted; typecheck clean.
451
+
452
+ ## [0.9.9] - 2026-08-07
453
+
454
+ ### Changed — bump circle-ir 3.213.0 → 3.214.0 + circle-ir-ai ^2.95.0 → ^2.96.0
455
+
456
+ Engine sync for single-copy resolution across the circle-pack build. 3.214.0 =
457
+ cognium-ai#264 Defect A fix; circle-ir-ai 2.96.0 = #264 residual precision +
458
+ sr#19 HIDDEN_URL fix. No mcp-server tool-surface change. Single-copy asserted.
459
+
460
+ ## [0.9.8] - 2026-08-07
461
+
462
+ ### Changed — bump circle-ir-ai ^2.93.0 → ^2.95.0
463
+
464
+ Engine sync for single-copy resolution across the circle-pack build. 2.95.0
465
+ lands the SR-A instruction-safety detectors + five more skills code-threat
466
+ detectors. No mcp-server tool-surface change. Single-copy assertion post-publish.
467
+
468
+ ## [0.9.7] - 2026-08-06
469
+
470
+ ### Changed — circle-ir 3.209.0 → 3.213.0 + circle-ir-ai ^2.93.0
471
+
472
+ Engine sync (per-context token meter + #123 dependency-hardening pass land via
473
+ circle-ir-ai 2.92.0). Single-copy assertion post-publish.
474
+
475
+ ## [0.9.6] - 2026-08-04
476
+
477
+ ### Changed — bump circle-ir 3.206.0 → 3.209.0 + circle-ir-ai ^2.90.0
478
+
479
+ Engine sync to the latest FP-fix line (cognium-dev#269): #268 (StringBuilder XSS
480
+ over-broad sink), #253 (connection-string secrets). Single-copy assertion holds,
481
+ typecheck clean.
482
+
483
+ ## [0.9.5] - 2026-08-04
484
+
485
+ ### Changed — bump circle-ir-ai ^2.88.0 → ^2.89.0 (verifier severity cap, #258)
486
+
487
+ Engine sync. Picks up the verifier-severity-cap fix (#258): the verifier can no
488
+ longer elevate a finding above the detector's baseline severity. Single-copy
489
+ assertion holds, typecheck clean.
490
+
491
+ ## [0.9.4] - 2026-08-04
492
+
493
+ ### Changed — bump circle-ir 3.204.0 → 3.206.0 + circle-ir-ai ^2.85.0 → ^2.88.0
494
+
495
+ Engine sync. Single-copy assertion holds (1 circle-ir copy), typecheck clean.
496
+ Picks up circle-ir-ai #262 (fail-closed unverified findings) and #129 (go/js
497
+ `log_injection` CWE-117 static parity via circle-ir 3.206.0).
498
+
499
+ ## [0.9.3] - 2026-08-03
500
+
501
+ ### Changed — bump circle-ir 3.200.0 → 3.204.0, circle-ir-ai ^2.83.0 → ^2.85.0
502
+
503
+ Uniform fleet pin onto the negative-cache (#180) + cache-event telemetry (#182)
504
+ release. No source change; typecheck + build clean, 11 tests pass, single
505
+ `circle-ir` copy at 3.204.0.
506
+
507
+ ## [0.9.2] - 2026-08-03
508
+
509
+ ### Changed — bump circle-ir-ai ^2.82.1 → ^2.83.0
510
+
511
+ Uniform fleet pin onto the skills code-threat detector release (cognium-ai#259).
512
+ mcp-server does not consume the new skills passes; this keeps the pin uniform.
513
+ No source change; typecheck + build clean, 11 tests pass, single `circle-ir`
514
+ copy at 3.200.0.
515
+
516
+ ## [0.9.1] - 2026-08-02
517
+
518
+ ### Changed — bump circle-ir-ai ^2.81.0 → ^2.82.1, circle-ir 3.198.0 → 3.200.0
519
+
520
+ Uniform fleet pin; single-copy dedupe verified (one `circle-ir` at 3.200.0,
521
+ `circle-ir-ai` 2.82.1). Tracks the circle-ir-ai 2.82.1 parse-isolation worker
522
+ fix (#252). No mcp-server source change; typecheck + build clean, 11 tests pass.
523
+
524
+ > Note: changelog entries for 0.7.x–0.9.0 were not recorded (pre-existing
525
+ > drift); those were uniform circle-ir/circle-ir-ai fleet-pin bumps.
526
+
527
+ ## [0.6.58] - 2026-07-28
528
+
529
+ ### Changed — bump circle-ir-ai ^2.59.1 → ^2.60.1
530
+
531
+ Uniform fleet pin; single-copy dedupe. Tracks the Q5 conformance-attestation
532
+ engine release (circle-ir-ai 2.60.1). No mcp-server source change.
533
+
534
+ ## [0.6.57] - 2026-07-28
535
+
536
+ ### Changed — bump circle-ir 3.192.0 → 3.193.0 + circle-ir-ai ^2.59.1
537
+
538
+ Uniform fleet pin; single-copy dedupe. No source change.
539
+
540
+ ## [0.6.56] - 2026-07-26
541
+
542
+ ### Dependencies
543
+
544
+ - Bump `circle-ir-ai` ^2.58.0 → **^2.59.0** (minified skip catches `-min.js`
545
+ dash variant; circle-ir-ai#243). circle-ir stays 3.192.0, single-copy dedupe.
546
+ No MCP tool/contract change.
547
+
548
+ ## [0.6.55] - 2026-07-25
549
+
550
+ ### Dependencies
551
+
552
+ - Bump `circle-ir-ai` ^2.57.0 → **^2.58.0** (filename-based minified-artifact
553
+ skip; circle-ir-ai#243). circle-ir stays 3.192.0, single-copy dedupe. No MCP
554
+ tool/contract change.
555
+
556
+ ## [0.6.54] - 2026-07-24
557
+
558
+ ### Dependencies
559
+
560
+ - Bump `circle-ir` 3.176.0 → **3.192.0** and `circle-ir-ai` ^2.56.1 → **^2.57.0**
561
+ (adaptive verify sizing + client-timeout AIMD; circle-ir-ai#244). Deduped to a
562
+ single circle-ir 3.192.0. No MCP tool/contract change — the 9 tools are
563
+ unchanged; this is an engine refresh that inherits the LLM-verify reliability
564
+ fixes for tools that run the verify path.
565
+
566
+ ## [0.6.53] - 2026-07-20
567
+
568
+ ### Dependencies
569
+
570
+ - Bump `circle-ir` 3.175.0 → **3.176.0** and `circle-ir-ai` → **^2.56.1**
571
+ (routine engine refresh). Deduped to a single circle-ir 3.176.0. Build + 11
572
+ tests green. (Publishing this unblocks circle-pack's full dedupe onto 3.176.0.)
573
+
574
+ ## [0.6.52] - 2026-07-20
575
+
576
+ ### Dependencies
577
+
578
+ - Bump `circle-ir` 3.174.0 → **3.175.0** and `circle-ir-ai` → **^2.56.0**
579
+ (app-code prompt-injection LLM01 recall, cognium-ai#211/#233). Uniform fleet
580
+ pin; deduped to a single circle-ir 3.175.0. Build + 11 tests green.
581
+
582
+ ## [0.6.51] - 2026-07-17
583
+
584
+ ### Dependencies
585
+
586
+ - Bump `circle-ir` 3.173.0 → **3.174.0** (app-code prompt-injection taint sink,
587
+ cognium-ai#233) and `circle-ir-ai` → **^2.55.1** (trust-completeness legs
588
+ L1–L6, cognium-ai#234). Uniform fleet pin; deduped to a single circle-ir
589
+ 3.174.0. Build + 11 tests green.
590
+
591
+ ## [0.6.50] - 2026-07-16
592
+
593
+ ### Dependencies
594
+
595
+ - Bump circle-ir-ai ^2.47.1 → ^2.48.0 (uniform-pin alignment with the ecosystem; 2.48.0 is the scan clustering-gate release, cognium-ai#231 — no MCP-surface impact, the tool server doesn't use the scan path). Zero tool-surface change; 11 tests pass.
596
+
597
+ ## [0.6.49] - 2026-07-15
598
+
599
+ ### Dependencies
600
+
601
+ - Bump circle-ir 3.168.0 → 3.173.0 and circle-ir-ai ^2.41.0 → ^2.47.1 (circle-ir perf sweep). Zero MCP tool-surface change; 11 tests pass.
602
+
603
+ ## [0.6.48] - 2026-07-11
604
+
605
+ ### Dependencies
606
+
607
+ - Bump circle-ir 3.166.0 to 3.168.0 and circle-ir-ai ^2.40.1 to ^2.41.0 (completes the cognium-dev#250 source-misattribution fix). Zero MCP tool-surface change; 11 tests pass.
608
+
609
+ ## [0.6.47] - 2026-07-11
610
+
611
+ ### Dependencies
612
+
613
+ - Bump `circle-ir` `3.165.0 → 3.166.0` and `circle-ir-ai`
614
+ `^2.40.0 → ^2.40.1`. Incremental core bump; zero MCP tool-surface
615
+ change. 11 tests pass.
616
+
617
+ ## [0.6.46] - 2026-07-10
618
+
619
+ ### Dependencies
620
+
621
+ - Bump `circle-ir` `3.164.0 → 3.165.0` and `circle-ir-ai`
622
+ `^2.39.0 → ^2.40.0` (picks up the cognium-dev#250 source-misattribution
623
+ precision fix). Zero MCP tool-surface change; 11 tests pass.
624
+
625
+ ## [0.6.45] - 2026-07-10
626
+
627
+ ### Dependencies
628
+
629
+ - Bump `circle-ir` `3.162.0 → 3.164.0` and `circle-ir-ai`
630
+ `^2.38.0 → ^2.39.0` (picks up the #119 trust-scoring fix + circle-ir
631
+ 3.164.0). Zero MCP tool-surface change; 11 tests pass.
632
+
633
+ ## [0.6.44] - 2026-07-10
634
+
635
+ ### Dependencies
636
+
637
+ - Bump `circle-ir` `3.160.0 → 3.162.0` and `circle-ir-ai`
638
+ `^2.37.16 → ^2.38.0` (picks up the #211 LLM04 tool-poisoning
639
+ detection + circle-ir 3.162.0). Zero MCP tool-surface change; 11
640
+ tests pass.
641
+
642
+ ## [0.6.43] - 2026-07-09
643
+
644
+ ### Dependencies
645
+
646
+ - Bump `circle-ir` `3.159.0 → 3.160.0` and `circle-ir-ai`
647
+ `^2.37.15 → ^2.37.16`. Core engine pin bump; zero MCP tool-surface
648
+ change. 11 tests pass.
649
+
650
+ ## [0.6.42] - 2026-07-09
651
+
652
+ ### Dependencies
653
+
654
+ - Bump `circle-ir` `3.158.0 → 3.159.0` and `circle-ir-ai`
655
+ `^2.37.13 → ^2.37.15`. Zero MCP tool-surface change; cascade with
656
+ the #212 deep-merge + #213 verified-path dedup engine fixes. 11
657
+ tests pass.
658
+
659
+ ## [0.6.41] - 2026-07-08
660
+
661
+ ### Dependencies
662
+
663
+ - Bump `circle-ir` `3.156.0 → 3.158.0` and `circle-ir-ai`
664
+ `^2.37.11 → ^2.37.13`. Zero MCP tool-surface change; cascade with
665
+ the `circle-ir@3.158.0` upgrade across the four packages.
666
+
667
+ ## [0.6.40] - 2026-07-07
668
+
669
+ ### Re-forwarded
670
+
671
+ - Repin `circle-ir` `3.155.0 → 3.156.0` and `circle-ir-ai` `^2.37.10 → ^2.37.11`.
672
+ Zero MCP tool-surface change. Undoes the 0.6.39 rollback after the
673
+ rollback-verification sweep proved the `cognium-ai#202` "regression" was
674
+ a false alarm caused by cache-warmth artifact in the golden baseline
675
+ (200+ zero-token `verifyTaintPathsBatch` cache-hit log entries were
676
+ compared against cold-cache real calls in the 3.156.0 sweep).
677
+ - Cold-cache rollback sweep on 2.31.10 / 3.155.0 came in **higher**
678
+ (5,543 realCalls) than the "regression" it was meant to fix
679
+ (4,272 realCalls), confirming the engine's static pipeline is
680
+ invariant across `3.155.0 → 3.156.0`. See `circle-ir-ai@2.37.11`
681
+ CHANGELOG for the full diagnosis.
682
+
683
+ ### Tests
684
+
685
+ - 1 file, 11 passed. Typecheck + build clean.
686
+
687
+ ## [0.6.39] - 2026-07-06
688
+
689
+ ### Rolled back
690
+
691
+ - Repin `circle-ir` `3.156.0 → 3.155.0` and `circle-ir-ai` `^2.37.9 → ^2.37.10`.
692
+ Zero MCP tool-surface change. Tracks the engine rollback in
693
+ `circle-ir-ai@2.37.10` — see
694
+ [cognium-ai#202](https://github.com/cogniumhq/cognium-ai/issues/202)
695
+ (3.156.0 Tier-2 verifier-cost regression). Holding at `circle-ir@3.155.0`
696
+ until upstream fix. **Supersedes 0.6.38** — do not use.
697
+
698
+ ## [0.6.38] - 2026-07-06
699
+
700
+ ### Dependencies
701
+
702
+ - Bump `circle-ir` `3.155.0 → 3.156.0` and `circle-ir-ai` `^2.37.8 → ^2.37.9`.
703
+ Zero MCP tool-surface change; cascade to keep engine + core pinned
704
+ uniformly across `cognium-ai` / `circle-ir-ai` / `@cognium-ai/mcp-server`
705
+ / `circle-pack`.
706
+
707
+ **Superseded by 0.6.39** — the 3.156.0 engine caused a Tier-2 regression
708
+ (cognium-ai#202); do not use 0.6.38 (also never published).
709
+
710
+ ## [0.6.37] - 2026-07-06
711
+
712
+ ### Dependencies
713
+
714
+ - Bump `circle-ir` `3.154.0 → 3.155.0` and `circle-ir-ai` `^2.37.7 → ^2.37.8`.
715
+ Zero MCP tool-surface change; cascade to keep engine + core pinned
716
+ uniformly across `cognium-ai` / `circle-ir-ai` / `@cognium-ai/mcp-server`
717
+ / `circle-pack`. Supersedes the unpublished 0.6.36 which pinned 3.154.0.
718
+
719
+ ## [0.6.36] - 2026-07-06
720
+
721
+ ### Dependencies
722
+
723
+ - Bump `circle-ir` `3.153.0 → 3.154.0` and `circle-ir-ai` `^2.37.6 → ^2.37.7`.
724
+ Zero MCP tool-surface change; cascade to keep engine + core pinned
725
+ uniformly across `cognium-ai` / `circle-ir-ai` / `@cognium-ai/mcp-server`
726
+ / `circle-pack`.
727
+
728
+ ## [0.6.35] - 2026-07-06
729
+
730
+ ### Dependencies
731
+
732
+ - Bump `circle-ir` `3.152.0 → 3.153.0` and `circle-ir-ai` `^2.37.5 → ^2.37.6`.
733
+ Zero MCP tool-surface change; pure cascade to keep engine + core pinned
734
+ uniformly across `cognium-ai` / `circle-ir-ai` / `@cognium-ai/mcp-server`
735
+ / `circle-pack`.
736
+
737
+ ## [0.6.32] - 2026-07-05
738
+
739
+ ### Dependencies
740
+
741
+ - Bump `circle-ir` `3.150.0 → 3.152.0` and `circle-ir-ai` `^2.37.0 → ^2.37.3`.
742
+ Picks up **cognium-ai#189** — two `library/*` project-profile gates
743
+ targeting Tier 2 FP-drop (~45% combined on library/production repos):
744
+ - **Source-side gate** (circle-ir 3.151.0): drops `interprocedural_param`
745
+ / `constructor_field` seeds under `library/*`, removing Scenario-B
746
+ `external_taint_escape` (CWE-668) synthesis (~35% FP-drop).
747
+ - **Sink-side gate** (circle-ir 3.152.0, pass
748
+ `library-profile-sink-gate` #112): drops entire `log_injection`
749
+ (CWE-117) sink class from the taint graph before flow generation
750
+ when `Meta.projectProfile` begins with `library/` (~10% FP-drop).
751
+ - Zero MCP tool-surface change. `find_pattern` and other tools that
752
+ route through the discovery engine inherit the library-profile
753
+ filtering automatically once callers pass a `projectProfile` on the
754
+ underlying `analyze()` invocation (auto-populated onto `Meta` per the
755
+ 3.150.1 contract).
756
+
757
+ ## [0.6.31] - 2026-07-03
758
+
759
+ ### Dependencies
760
+
761
+ - Bump `circle-ir-ai` `^2.36.0 → ^2.37.0` (cognium-ai#191 — surface
762
+ silent LLM-error swallow). MCP tool surface unaffected. The engine
763
+ now:
764
+ - Distinguishes "LLM said no vulnerability" from "LLM call failed"
765
+ via a new optional `llmError?: { kind, message }` field on
766
+ `DiscoveryResult` (additive schema change).
767
+ - Increments a process-wide `llmErrorCounter` on every
768
+ discovery-stage LLM failure, with a first-error stderr warning.
769
+ - Categorizes failures as `empty_response | parse_error | timeout |
770
+ http_error | rate_limited | connection_error |
771
+ transient_server_error | unknown`.
772
+
773
+ MCP callers that consume `DiscoveryResult` values via
774
+ `find_pattern` / spec-related tools may now see the `llmError`
775
+ field populated when the LLM backend is misconfigured or degraded.
776
+ Absent field = engine reports no LLM transport failure (existing
777
+ behavior).
778
+
779
+ - No MCP schema changes, no tool-surface changes, no auth changes.
780
+
781
+ **Rollback:** downgrade to `@cognium-ai/mcp-server@0.6.30` +
782
+ `circle-ir-ai@2.36.0`.
783
+
784
+ ## [0.6.30] - 2026-07-03
785
+
786
+ ### Dependencies
787
+
788
+ - Bump `circle-ir-ai` `^2.35.0 → ^2.36.0` (cognium-ai#189 — cache
789
+ Round 3, model-in-path). MCP tool surface unaffected — the change
790
+ is cache-layer only:
791
+ - R2/local-fs layout for `verify` / `discovery` / `classifier`
792
+ caches gains a `<model-slug>/` path segment.
793
+ - `SCHEMA_VER 'cic:v2' → 'cic:v3'` invalidates warm cache entries
794
+ on first tool invocation post-upgrade.
795
+ - Bump `circle-ir` unchanged at `3.150.0`.
796
+
797
+ ### Operator impact for the mcp-server
798
+
799
+ - MCP tools that indirectly exercise LLM caches (via
800
+ `SecurityScanner.scan()` → `analyzeFile()` → `discovery-cache` /
801
+ `verify-cache`) will cold-populate on first call after upgrade.
802
+ - Long-running MCP clients caching prior tool responses at their own
803
+ layer see no protocol change; only the on-disk / R2 cache shape
804
+ moves. Steady-state hit rate returns after re-population.
805
+
806
+ ## [0.6.29] - 2026-07-03
807
+
808
+ ### Dependencies
809
+
810
+ - Bump `circle-ir-ai` `^2.34.0 → ^2.35.0`. Picks up Sprint P2 Batch 4's
811
+ wide precision pass, all reaching the MCP tool surface via
812
+ `SecurityScanner.scan()` / `analyzeFile()`:
813
+ - **cognium-ai#173** — build / CI script path suppression gate
814
+ (`isBuildOrCiScriptPath()` predicate; suppresses sinks under
815
+ `docs?/`, `scripts?/`, `tools/`, `examples/`, `samples/`,
816
+ `demos/`, `benchmarks?/` + build-file shapes like `conf.py`,
817
+ `noxfile.py`, `conftest.py`).
818
+ - **cognium-ai#127 + wide** — TIER_1_BY_SUPERTYPE extension covering
819
+ Netty (`ChannelInboundHandler` family), Vert.x (`Handler` with
820
+ param-type disambiguation), gRPC (`ServerCallHandler`,
821
+ `ServerCall.Listener`, `BindableService`), Spring WebFlux
822
+ (`HandlerFunction`, `WebFilter`), JAX-WS (`Provider`). Additive:
823
+ previously-uncaught endpoint sinks on these frameworks now flip
824
+ into TP.
825
+ - **cognium-ai#169** — verifier prompt directive hardening for
826
+ gemma3:12b. `BATCH_VERIFICATION_PROMPT` tier block rewritten from
827
+ advisory to directive language + Batch 4 supertype list + pinned
828
+ short-reasoning template. 5-test regression fixture in engine.
829
+
830
+ No MCP tool surface change. See `circle-ir-ai/CHANGELOG.md#2.35.0`
831
+ for the full rationale, regex specs, evidence, and test coverage
832
+ (14 sink-filter + 16 entry-point + 5 verifier regression tests,
833
+ 1324 pass + 3 skipped total).
834
+
835
+ Unit-test surface unchanged. Typecheck: clean.
836
+
837
+ ## [0.6.28] - 2026-07-03
838
+
839
+ ### Dependencies
840
+
841
+ - Bump `circle-ir` `3.148.0 → 3.150.0` and `circle-ir-ai` `^2.33.5 →
842
+ ^2.34.0`. Picks up two precision wins in `circle-ir-ai@2.34.0` that
843
+ reach the MCP tool surface via `SecurityScanner.scan()` /
844
+ `analyzeFile()`:
845
+ - **cognium-ai#167** — XPath / XXE / crypto library-internal FP
846
+ gates (JsonPath / Jaxen / Saxon / DOM4j XPath, jsoup / HtmlCleaner,
847
+ JJWT / Nimbus JOSE / BouncyCastle / Tink + JCA SPI subclass check).
848
+ Projected ~23 CRIT FP drop on the 2026-06-24 top-100 Java baseline.
849
+ - **cognium-ai#168** — LLM-path `explanation` field preservation.
850
+ The 2026-07-01 top-10 sweep shipped 495/496 CRIT+HIGH LLM findings
851
+ with `explanation: ""`; workflow + scanner fallback chain now
852
+ surface `verification.reasoning` so the MCP finding payload
853
+ populates the narrative field ≥99% of the time.
854
+
855
+ No MCP tool surface change. See `circle-ir-ai/CHANGELOG.md#2.34.0`
856
+ for the full rationale, predicate regexes, evidence, and test
857
+ coverage (28 gate tests + 5 field-preservation tests, 1289 pass +
858
+ 3 skipped total).
859
+
860
+ Unit-test surface unchanged. Typecheck: clean.
861
+
862
+ ## [0.6.27] - 2026-07-02
863
+
864
+ ### Dependencies
865
+
866
+ - Bump `circle-ir-ai` `^2.33.4 → ^2.33.5`. Picks up the XSS FP suppression
867
+ on servlet writer sinks preceded by `response.setContentType("application/
868
+ json…")` in the same enclosing method (cognium-ai#172). No MCP tool surface
869
+ change — the filter runs inside the engine's `SecurityScanner.scan()` /
870
+ `analyzeFile()` pipelines that the `find_pattern` and
871
+ `find_credential_exposure` tools already delegate to. See
872
+ `circle-ir-ai/CHANGELOG.md#2.33.5` for the full rationale.
873
+
874
+ Unit-test surface unchanged (11 pass). Typecheck: clean.
875
+
876
+ ## [0.6.26] - 2026-07-02
877
+
878
+ ### Dependencies
879
+
880
+ - Bump `circle-ir` `3.146.0 → 3.148.0`. Minor upstream release in the
881
+ CWE-078 restore train (cognium-ai#184); dep-refresh only.
882
+ - Bump `circle-ir-ai` `^2.28.4 → ^2.33.4`. Corrects the stale minor-line
883
+ pin to match the current engine major; picks up:
884
+ - **`2.33.3`** (cognium-ai#127) — threads static per-source
885
+ trust-boundary classification + entry-point tier into the LLM
886
+ verifier user prompt, adds the `## REACHABILITY CONTEXT` rubric so
887
+ the model can weight each tag. No MCP tool surface change.
888
+ - **`2.33.4`** — follow-on `circle-ir 3.146.0 → 3.148.0` bump.
889
+
890
+ All 11 tests pass, typecheck clean.
891
+
892
+ ## [0.6.23] - 2026-07-01
893
+
894
+ ### Dependencies
895
+
896
+ - Bump `circle-ir-ai` `^2.28.3` → `^2.28.4`. Picks up
897
+ cognium-ai#163 landing-plan step 2 (B3 + B4 + B5):
898
+ - **B3** — R2 cache-backend errors now categorized into 7 buckets
899
+ and emitted as synthetic JSONL rows (dedup + first-time stderr
900
+ surfacing).
901
+ - **B4** — pinned SHA-256 snapshots of all LLM prompt templates.
902
+ - **B5** — engine-side CI job asserts uniform `circle-ir` pin
903
+ across all 4 workspace packages.
904
+
905
+ No MCP tool surface change. All 11 tests pass, typecheck clean.
906
+
907
+ ## [0.6.22] - 2026-07-01
908
+
909
+ ### Dependencies
910
+
911
+ - Bump `circle-ir-ai` `^2.28.1` → `^2.28.3`. Picks up
912
+ cognium-ai#163 landing-plan step 1 (B1 + B2):
913
+ discovery per-CWE cache key now covers `annotations` +
914
+ top-20 sorted `imports` (sentinel `disc-v1 → disc-v2`);
915
+ `existingSources` / `existingSinks` canonicalized before
916
+ hashing in the mastra workflow. No MCP tool surface change.
917
+ - Bump `circle-ir` `3.135.0` → `3.139.0`.
918
+
919
+ All 11 tests pass, typecheck clean.
920
+
921
+ ## [0.6.21] - 2026-06-30
922
+
923
+ ### Dependencies
924
+
925
+ - Bump `circle-ir-ai` `^2.26.0` → `^2.28.1`. Picks up Phase 2 of
926
+ cognium-ai#158 (Round 2 cache key + path layout reshape,
927
+ D1/D2/D3/D4/D6 — including the tree-cache absolute-path leak fix
928
+ that lets two CI runners share verifier cache entries via R2).
929
+ No MCP tool surface change.
930
+ - Bump `circle-ir` `3.129.0` → `3.135.0`.
931
+
932
+ All 11 tests pass, typecheck clean.
933
+
934
+ ## [0.6.20] - 2026-06-30
935
+
936
+ ### Dependencies
937
+
938
+ - Bump `circle-ir-ai` `^2.22.0` → `^2.26.0`. Cascades the full epic
939
+ #155 stack (P1–P4) — four engine releases land in this single MCP
940
+ bump:
941
+ - **2.23.0 (cognium-ai#152, P1):** persistent verify cache
942
+ (`.cognium/cache/verify/`, 24h TTL, model-fingerprinted). Env:
943
+ `LLM_VERIFY_CACHE=0`.
944
+ - **2.24.0 (cognium-ai#134, P2):** persistent discovery cache
945
+ (`.cognium/cache/discovery/`, 24h TTL, model-fingerprinted).
946
+ Env: `LLM_DISCOVERY_CACHE=0`.
947
+ - **2.25.0 (cognium-ai#153, P3):** persistent tree cache
948
+ (`.cognium/cache/tree/`, 7-day TTL, keyed on engine versions
949
+ not model). Env: `LLM_TREE_CACHE=0`.
950
+ - **2.26.0 (cognium-ai#154, P4 foundation):** new `src/cluster/`
951
+ module (`clusterFiles`, `extractClusterVector`, `ClusterPolicy`).
952
+ Foundation only — no consumption inside mcp-server yet.
953
+
954
+ Routine pass-through for the MCP server itself: all 9 tools
955
+ retain their existing surface. Warm-scan behavior tools see the
956
+ same speedup as `cognium-ai scan` since the underlying engine
957
+ cache stack is shared. Tests + typecheck remain clean (11 pass).
958
+
959
+ ## [0.6.19] - 2026-06-30
960
+
961
+ ### Dependencies
962
+
963
+ - Bump `circle-ir-ai` `^2.21.0` → `^2.22.0`. Picks up the cache-key
964
+ model-dimension wire-through (cognium-ai#151 P0 spike, acceptance
965
+ criteria 4 + 6). Routine pass-through; no MCP surface change.
966
+ Tests + typecheck remain clean (11 pass).
967
+
968
+ ## [0.6.18] - 2026-06-30
969
+
970
+ ### Dependencies
971
+
972
+ - Bump `circle-ir` `3.126.0` → `3.129.0` and `circle-ir-ai`
973
+ `^2.20.10` → `^2.21.0`. Routine engine refresh pass-through; picks
974
+ up circle-ir-ai 2.21.0's 23-callsite `withLLMContext` wrap (closes
975
+ cognium-ai#149 per-signature granularity gap in JSONL logs). Tests
976
+ + typecheck remain clean (11 pass).
977
+
978
+ ## [0.6.17] - 2026-06-29
979
+
980
+ ### Dependencies
981
+
982
+ - Bump `circle-ir` `3.123.0` → `3.126.0` and `circle-ir-ai`
983
+ `^2.20.8` → `^2.20.10`. Routine engine refresh pass-through; picks up
984
+ circle-ir-ai 2.20.9's #151 two-model split env vars
985
+ (`LLM_DISCOVERY_MODEL` / `LLM_VERIFICATION_MODEL` /
986
+ `LLM_COMPONENT_MODEL`) and 2.20.10's circle-ir 3.126.0 refresh.
987
+ Tests + typecheck remain clean.
988
+
989
+ ## [0.6.16] - 2026-06-29
990
+
991
+ ### Dependencies
992
+
993
+ - Bump `circle-ir-ai` `^2.20.6` → `^2.20.8`. Picks up:
994
+ - **circle-ir-ai 2.20.7 LLM cost-reduction batch** — `#144`
995
+ `LLM_MAX_PAIRS_PER_CHUNK` env knob, `#145` enrichment static
996
+ pre-filter (`fileNeedsEnrichment(code)`), `#138 step 3`
997
+ verifier submission-side dedup at `verifyTaintPathsBatch`.
998
+ No MCP-surface impact; downstream LLM calls from any tool that
999
+ triggers enrichment / verification benefit from the same call
1000
+ reduction.
1001
+ - **circle-ir-ai 2.20.8** — bump `circle-ir` `3.121.0` → `3.123.0`
1002
+ (routine engine refresh).
1003
+ - Bump direct `circle-ir` pin `3.121.0` → `3.123.0` to match.
1004
+ - Cross-checks: 11/11 tests pass, typecheck clean.
1005
+
1006
+ ## [0.6.15] - 2026-06-29
1007
+
1008
+ ### Dependencies
1009
+
1010
+ - Bump `circle-ir-ai` `^2.20.4` → `^2.20.6`. Picks up the
1011
+ **cognium-ai#148 retry-attribution fix** — `kind:"call"` JSONL log
1012
+ row now reports the actual `attemptIdx` from `_chatJSONImpl`'s
1013
+ inline retry loop instead of always 0. Per-attempt rows were
1014
+ correct; only the per-call summary lied. Fixed via a
1015
+ `lastAttemptCount` side-channel field populated in a try/finally
1016
+ around the queue-task body so every return path captures the
1017
+ final counter. No MCP-surface impact; downstream `analyze-llm-log`
1018
+ consumers now see honest retry rates.
1019
+
1020
+ ## [0.6.14] - 2026-06-29
1021
+
1022
+ ### Dependencies
1023
+
1024
+ - Bump `circle-ir-ai` `^2.20.2` → `^2.20.4`. Picks up the
1025
+ cognium-ai#146 scan-output regression fix (verified-LLM emit path
1026
+ now populates `type: sink.type`, preserves the full `verification`
1027
+ object instead of a hardcoded `llm_verified: true` stub, and the
1028
+ sanity gate is relaxed from `length >= 20` to `length > 0` so
1029
+ terse-explainer models aren't force-demoted) plus the `circle-ir`
1030
+ `3.107.0` → `3.121.0` bump (adds Vue SFC support upstream).
1031
+ - Bump `circle-ir` pin `3.107.0` → `3.121.0` (lockstep with engine).
1032
+ - No MCP tool-surface changes. Typecheck clean, 11 tests pass.
1033
+
1034
+ ## [0.6.13] - 2026-06-28
1035
+
1036
+ ### Dependencies
1037
+
1038
+ - Bump `circle-ir-ai` `^2.20.1` → `^2.20.2`. Engine now captures the
1039
+ OpenAI-compatible `usage.{prompt_tokens, completion_tokens}` block
1040
+ from LLM responses and surfaces it on the JSONL call log via new
1041
+ optional `inputTokens` / `outputTokens` fields on each
1042
+ `LLMCallEntry` (cognium-ai#125 Phase 1). No MCP tool surface
1043
+ changes; all 9 tools unaffected. The token fields appear in the
1044
+ file at `$LLM_LOG_JSONL` when the MCP server is invoked with that
1045
+ env var set (existing log readers ignore unknown fields).
1046
+
1047
+ ## [0.6.12] - 2026-06-28
1048
+
1049
+ ### Dependencies
1050
+
1051
+ - Bump `circle-ir-ai` `^2.20.0` → `^2.20.1`. Engine fixes the
1052
+ recursive verifier fan-out (cognium-ai#143). No MCP tool surface
1053
+ changes; all 9 tools (`verify_spec_conformance`, `find_spec_drift`,
1054
+ `find_pattern`, `find_credential_exposure`,
1055
+ `check_license_compliance`, `find_stale_dependencies`,
1056
+ `find_install_script_risk`, `find_typosquats`,
1057
+ `find_excessive_permissions`) unaffected.
1058
+
1059
+ ## [0.6.11] - 2026-06-28
1060
+
1061
+ ### Dependencies
1062
+
1063
+ - Bump `circle-ir-ai` `^2.19.4` → `^2.20.0`. Engine drops the orphan
1064
+ role-classification LLM call from mastra `runEnrich` (cognium-ai#139):
1065
+ `cognium-ai scan` enrichment now fires 2 LLM calls per file instead
1066
+ of 3. No MCP tool surface changes — the mastra path is not exposed
1067
+ through MCP tools (MCP exposes `find_pattern`, `verify_spec_*`,
1068
+ `find_credential_exposure`, etc., which go through different code
1069
+ paths). The reduction surfaces transparently for any MCP caller
1070
+ that downstream-invokes `scan`.
1071
+
1072
+ ## [0.6.10] - 2026-06-28
1073
+
1074
+ ### Dependencies
1075
+
1076
+ - Bump `circle-ir-ai` `^2.19.3` → `^2.19.4`. Upstream 2.19.4 ships
1077
+ cognium-ai#138 steps 1 + 2: opt-in chunk-split telemetry
1078
+ (`LLM_LOG_VERIFY_SPLITS=1`) + `context.file` on verifier JSONL
1079
+ rows. No MCP tool surface changes; both additions are
1080
+ diagnostic / attribution foundations transparent to MCP callers.
1081
+
1082
+ ## [0.6.9] - 2026-06-28
1083
+
1084
+ ### Dependencies
1085
+
1086
+ - Bump `circle-ir-ai` `^2.19.2` → `^2.19.3`. Upstream 2.19.3 is a
1087
+ pure bugfix release (submission-side dedup at the
1088
+ `discoverVulnerabilities` boundary, fixing cognium-ai#136 — see
1089
+ `circle-ir-ai/CHANGELOG.md#2193`). No MCP tool surface changes;
1090
+ the dedup is transparent to MCP callers.
1091
+
1092
+ ## [0.6.8] - 2026-06-26
1093
+
1094
+ ### Dependencies
1095
+
1096
+ - Bump `circle-ir-ai` `^2.19.1` → `^2.19.2`. Upstream 2.19.2 is a
1097
+ benchmarks-only release (published `dist/` byte-identical to 2.19.1
1098
+ — chunking refactor lives only in `benchmarks/runners/`). Bumping
1099
+ to stay in lockstep on the release timeline; no MCP tool surface
1100
+ changes.
1101
+
1102
+ ## [0.6.7] - 2026-06-25
1103
+
1104
+ ### Dependencies
1105
+
1106
+ - Bump `circle-ir` `3.106.0` → `3.107.0`.
1107
+ - Bump `circle-ir-ai` `^2.18.3` → `^2.19.1`.
1108
+
1109
+ Pure cascade. No MCP tool surface changes; the 9 stdio tools
1110
+ (`verify_spec_conformance`, `find_spec_drift`, `find_pattern`,
1111
+ `find_credential_exposure`, `check_license_compliance`,
1112
+ `find_stale_dependencies`, `find_install_script_risk`,
1113
+ `find_typosquats`, `find_excessive_permissions`) are unchanged.
1114
+
1115
+ ### What this pulls in (via the engine cascade)
1116
+
1117
+ `circle-ir@3.107.0` (sink-filter-layer FP fixes):
1118
+
1119
+ - JS `setInterval` / `setTimeout` no longer flagged as
1120
+ `code_injection` when the first arg is a function reference
1121
+ (cognium-dev#152).
1122
+ - Java `xxe` no longer over-matches on CommonMark `Parser.parse()`
1123
+ (cognium-dev#181).
1124
+ - Java `sql_injection` regex-allowlist-quoter wrappers no longer
1125
+ trigger taint sinks (cognium-dev#191 / FP-77).
1126
+
1127
+ `circle-ir-ai@2.19.1` is a pure cascade of the same three engine fixes
1128
+ on top of the 2.19.0 ADR-008 projectProfile wiring (cognium-ai#130).
1129
+
1130
+ ### Verification
1131
+
1132
+ - `npm run typecheck` — clean.
1133
+ - `npm test` — 11/11 pass.
1134
+ - `npm run build` — clean.
1135
+ - `npm run smoke` — stdio handshake + 9 tools list.
1136
+
1137
+ ## [0.6.6] - 2026-06-24
1138
+
1139
+ ### Dependencies
1140
+
1141
+ - Bump `circle-ir-ai` `^2.18.2` → `^2.18.3`.
1142
+ - circle-ir pin remains at `3.106.0` (matched 0.6.5 already; this
1143
+ release picks up the engine cascade through circle-ir-ai).
1144
+
1145
+ Pure cascade. No MCP tool surface changes; the 9 stdio tools
1146
+ (`verify_spec_conformance`, `find_spec_drift`, `find_pattern`,
1147
+ `find_credential_exposure`, `check_license_compliance`,
1148
+ `find_stale_dependencies`, `find_install_script_risk`,
1149
+ `find_typosquats`, `find_excessive_permissions`) are unchanged.
1150
+
1151
+ ### What this pulls in (via the engine cascade)
1152
+
1153
+ `circle-ir-ai@2.18.3` ships Sprints 47 + 48 from cognium-dev:
1154
+
1155
+ - **Sprint 47** (3.105.0) — central library-API-surface downgrade
1156
+ (cognium-dev #161, #163, #164, #165, #168, #177). Sinks owned by
1157
+ library-API-surface methods (default-config, factory, accessor
1158
+ patterns) are downgraded from `high` to `info` and tagged
1159
+ `library-api-surface:caller-responsibility`; pre-downgrade severity
1160
+ preserved on `SastFinding.original_severity`.
1161
+ - **Sprint 48** (3.106.0) — ADR-008 project-profile architecture
1162
+ (cognium-dev#169). `AnalyzerOptions.projectProfile` accepts a
1163
+ `{ shape, env }` declaration and drives the engine's 5×5 matrix
1164
+ severity transform. **Not yet wired** through any MCP tool surface;
1165
+ programmatic API callers wanting to opt in must invoke the engine
1166
+ directly.
1167
+
1168
+ ### Verification
1169
+
1170
+ - `npm run typecheck` — clean.
1171
+ - `npm test` — **11 / 11 pass**.
1172
+ - `npm ls circle-ir circle-ir-ai` — resolves to `3.106.0` and
1173
+ `2.18.3` respectively (flat tree, deduped).
1174
+
1175
+ ## [0.6.5] - 2026-06-24
1176
+
1177
+ ### Dependencies
1178
+
1179
+ - Bump `circle-ir` `3.95.0` → `3.104.0`.
1180
+ - Bump `circle-ir-ai` `^2.18.1` → `^2.18.2`.
1181
+
1182
+ ### What this pulls in (via the engine cascade)
1183
+
1184
+ `circle-ir@3.96.0–3.104.0` (Sprints 41–46, cognium-dev monorepo) —
1185
+ pass / filter layer FP suppressions across Java SAST rules:
1186
+
1187
+ - **3.96.0 / 3.97.0 / 3.98.0** — Jinja2 / Python f-string
1188
+ `sql_injection` FP cluster (cognium-dev#159 / #160 / #163).
1189
+ - **3.99.0 / 3.100.0** — Tier-1 cluster releases (6 Java FPs across
1190
+ command_injection / xxe / weak-crypto).
1191
+ - **3.101.0** — picocli `CommandLine` constructor, DocumentBuilder
1192
+ factory, InputSource path-only XXE (cognium-dev#167 / #173 / #170).
1193
+ - **3.102.0** — argv-form `ProcessBuilder`, JDK 8u121+ XXE hardening
1194
+ recognition (cognium-dev#179 Sink 1 / #166).
1195
+ - **3.103.0** — `throw new SQLException(...)` sink-line gate +
1196
+ `resource-leak` factory-method heuristic (cognium-dev#157 / #158).
1197
+ - **3.104.0** — PEM delimiter body-adjacency, CLI option-key
1198
+ kebab-case negative predicate, protocol-mandated DES / RC4 / MD4 /
1199
+ MD5 file-context allow-list (cognium-dev#176 / #174 / #175).
1200
+
1201
+ `circle-ir-ai@2.18.2` adds `ScanOptions.enableLLMVerify?: boolean`
1202
+ (default `true` when `enableLLM` is set) — cognium-ai#124, P1 of the
1203
+ 2026-06-24 baseline operating principles. MCP tools don't surface
1204
+ this knob; `verify_spec_conformance` and friends remain unchanged.
1205
+ No new MCP tool surface or JSON-RPC schema changes.
1206
+
1207
+ ### Verification
1208
+
1209
+ - `npm run typecheck` — clean.
1210
+ - `npm test` — **11 / 11 pass**.
1211
+ - `npm ls circle-ir circle-ir-ai` — resolves to `3.104.0` and
1212
+ `2.18.2` respectively (flat tree).
1213
+
1214
+ ## [0.6.4] - 2026-06-23
1215
+
1216
+ ### Dependencies
1217
+
1218
+ - Bump `circle-ir` `3.90.0` → `3.95.0`.
1219
+ - Bump `circle-ir-ai` `^2.18.0` → `^2.18.1`.
1220
+
1221
+ ### What this pulls in (via the engine cascade)
1222
+
1223
+ `circle-ir@3.91.0–3.95.0` adds:
1224
+
1225
+ - `#136` Tier 1 stereotype-bean classification (3.91.0).
1226
+ - `#142` defensive per-file finding cap (3.92.0).
1227
+ - `#154` Netty entry-point classifier (3.93.0).
1228
+ - `#153` pre-req — speculative-finding suppression infrastructure
1229
+ with `SastFinding.confidence` tri-state (3.94.0).
1230
+ - `#137` `AnalyzerOptions.enableEntryPointGate` opt-out toggle
1231
+ (3.95.0) — Java-only; default `true` matches existing behaviour.
1232
+
1233
+ `circle-ir-ai@2.18.1` is the engine-bump-only release that adopts
1234
+ the above. No new MCP tool surface or JSON-RPC schema changes.
1235
+
1236
+ ### Verification
1237
+
1238
+ - `npm run typecheck` — clean.
1239
+ - `npm test` — **11 / 11 pass**.
1240
+ - `npm ls circle-ir circle-ir-ai` — resolves to `3.95.0` and
1241
+ `2.18.1` respectively (flat tree).
1242
+
1243
+ ## [0.6.3] - 2026-06-22
1244
+
1245
+ ### Dependencies
1246
+
1247
+ - Bump `circle-ir-ai` `^2.17.0` → `^2.18.0`.
1248
+ - `circle-ir` pinned at `3.90.0` (unchanged from 0.6.2).
1249
+
1250
+ ### What this pulls in (via the engine bump)
1251
+
1252
+ `circle-ir-ai@2.18.0` adds `CIRCLE_IR_INSTRUMENT_FINDINGS=1` env-var
1253
+ wiring (cognium-dev#145 PR C). Setting the env var when invoking any
1254
+ MCP tool that calls into circle-ir's `analyze()` —
1255
+ `find_credential_exposure`, `verify_spec_conformance`, `find_pattern`
1256
+ — emits one `[finding]` JSON line per `SastFinding` plus one
1257
+ `[findings-summary]` line per file on stderr. The JSONL stream
1258
+ carries `dedup_group_id` for cognium-dev#143 coalesce-candidate
1259
+ measurement and is fully no-op when the env var is unset.
1260
+
1261
+ Tool inputs / JSON-RPC schemas unchanged. The env var is the entire
1262
+ control surface — clients control it by setting it in the MCP server's
1263
+ environment (or via the launch wrapper script).
1264
+
1265
+ ### Verification
1266
+
1267
+ - `npm install --prefer-online` — clean resolution; `npm ls
1268
+ circle-ir-ai` shows `2.18.0`; `npm ls circle-ir` shows `3.90.0`.
1269
+ - `npm run typecheck` — clean.
1270
+ - `npm test` — **11 / 11 pass**.
1271
+
1272
+ Tool surface unchanged — same 9 tools, same JSON-RPC schemas.
1273
+
1274
+ ## [0.6.2] - 2026-06-22
1275
+
1276
+ ### Dependencies
1277
+
1278
+ - Bump `circle-ir-ai` `^2.16.0` → `^2.17.0`.
1279
+ - Bump `circle-ir` `3.89.1` → `3.90.0` (pinned; flattens transitive
1280
+ drift with `circle-ir-ai@2.17.0`).
1281
+
1282
+ ### What this pulls in (via the engine bump)
1283
+
1284
+ `circle-ir@3.90.0` adds the **findings-emission instrumentation hook**
1285
+ (cognium-dev#145 PR B). `circle-ir-ai@2.17.0` re-exports it but does
1286
+ not wire it through the mastra `runPatternMatch` path yet (gated on
1287
+ PR C). The 9 MCP tools exposed here (`verify_spec_conformance`,
1288
+ `find_spec_drift`, `find_pattern`, `find_credential_exposure`,
1289
+ `check_license_compliance`, `find_stale_dependencies`,
1290
+ `find_install_script_risk`, `find_typosquats`,
1291
+ `find_excessive_permissions`) produce identical output to 0.6.1 in
1292
+ this release.
1293
+
1294
+ ### Verification
1295
+
1296
+ - `npm install --prefer-online` — clean resolution; `npm ls
1297
+ circle-ir-ai` shows `2.17.0`; `npm ls circle-ir` shows `3.90.0`.
1298
+ - `npm run build` — clean.
1299
+ - `npm run typecheck` — clean.
1300
+ - `npm test` — **11 / 11 pass**.
1301
+
1302
+ Tool surface unchanged — same 9 tools, same JSON-RPC schemas.
1303
+
1304
+ ## [0.6.1] - 2026-06-22
1305
+
1306
+ ### Dependencies
1307
+
1308
+ - Bump `circle-ir-ai` `^2.15.0` → `^2.16.0`.
1309
+ - `circle-ir` pinned at `3.89.1` (unchanged).
1310
+
1311
+ ### What this pulls in (via the engine bump)
1312
+
1313
+ 1. **Bound `scanGitHistory()` (ai#112)** — the `find_credential_exposure`
1314
+ MCP tool, when run against a repo with `scanHistory: true`, now
1315
+ honors the engine's three new bounds:
1316
+ `SecretScanOptions.historyScanTotalBudgetMs` (60_000ms default),
1317
+ `perCommitTimeoutMs` (5_000ms), `maxDiffBytes` (5 * 1024 * 1024).
1318
+ Tool inputs unchanged; bounds applied via engine defaults until a
1319
+ client opts in via a future input-schema extension. Partial results
1320
+ on bound trip carry the new `historyScanTimedOut` /
1321
+ `commitsSkippedLarge` / `commitsTimedOut` diagnostic fields when
1322
+ present in the engine result payload.
1323
+ 2. **`ProjectOptions.crossFileBudgetMs`** is plumbed through the
1324
+ `circle-ir-ai` `analyzeProject` consumer surface; no MCP tool
1325
+ currently calls into that path, so no tool input change today.
1326
+
1327
+ ### Verification
1328
+
1329
+ - `npm install --prefer-online` — clean resolution; `npm ls
1330
+ circle-ir-ai` shows `2.16.0`.
1331
+ - `npm run build` — clean.
1332
+ - `npm run typecheck` — clean.
1333
+ - `npm test` — **11 / 11 pass**.
1334
+
1335
+ Tool surface unchanged — same 9 tools, same JSON-RPC schemas, same
1336
+ defaults for callers that don't set the new engine fields.
1337
+
1338
+ ## [0.6.0] - 2026-06-22
1339
+
1340
+ ### Dependencies
1341
+
1342
+ - Bump `circle-ir` `3.88.1` → `3.89.1`.
1343
+ - Bump `circle-ir-ai` `2.14.1` → `2.15.0`.
1344
+
1345
+ ### What this pulls in (via the engine bump)
1346
+
1347
+ 1. **Cross-file pre-index perf (cognium-dev#141 mitigation)** —
1348
+ scan-class MCP tools (`find_pattern`, `verify_spec_conformance`,
1349
+ etc.) no longer hang on Java codebases of the sa-token-core shape
1350
+ (35+ CPU-min → 27ms wall).
1351
+ 2. **Cross-file budget breaker** — engine accepts
1352
+ `crossFileBudgetMs` (default `300_000`); partial results returned
1353
+ with `cross_file_budget_exceeded` flag when budget hit.
1354
+ 3. **`Finding.source.type`/`sink.type`** — present in scan-class
1355
+ tool outputs (already true since 0.5.1 via the engine path).
1356
+ 4. **Logger routing** — `info` → stderr by default; MCP stdio
1357
+ transport (the actual JSON-RPC payload on stdout) unaffected.
1358
+
1359
+ Tool surface unchanged — same 9 tools, same JSON-RPC schemas.
1360
+
1361
+ ### Verification
1362
+
1363
+ - `npm install --prefer-online` — clean resolution.
1364
+ - `npm run build` — clean.
1365
+ - `npm test` — **11 / 11 pass** (smoke + stdio transport).
1366
+
1367
+ ### Why minor (`0.5.1 → 0.6.0`)
1368
+
1369
+ Inherits the engine minor (additive `crossFileBudgetMs` option +
1370
+ `cross_file_budget_exceeded` flag). Bumping minor here to mirror
1371
+ the engine's observable-surface delta even though MCP doesn't yet
1372
+ plumb the option through tool inputs.
1373
+
1374
+ ## [0.5.1] - 2026-06-22
1375
+
1376
+ ### Dependencies
1377
+
1378
+ - Bump `circle-ir` `3.86.0` → `3.88.1`.
1379
+ - Bump `circle-ir-ai` `2.14.0` → `2.14.1`.
1380
+
1381
+ Picks up the cross-file taint type-axis dedup fix (cognium-dev#144,
1382
+ circle-ir 3.88.1): scan-class MCP tools now surface both findings
1383
+ when a direct flow and an interprocedural path land at the same
1384
+ `(file, line)` coordinates but carry different sink types. Also
1385
+ absorbs the required `Finding.line` field added in circle-ir 3.87.0
1386
+ (cognium-dev#134) via `circle-ir-ai@2.14.1`.
1387
+
1388
+ Tool surface unchanged — same 9 tools, same JSON-RPC schemas.
1389
+
1390
+ Verification:
1391
+ - `npm install --prefer-online` — clean resolution.
1392
+ - `npm run build` — clean.
1393
+ - `npm test` — **11 / 11 pass** (smoke + stdio transport).
1394
+
1395
+ ## [0.5.0] - 2026-06-21
1396
+
1397
+ ### Added — picks up cognium-dev#128 entry-point gate (via `circle-ir-ai@2.14.0`)
1398
+
1399
+ MCP tools that invoke the mastra workflow (security scan paths) now
1400
+ benefit from the cognium-dev#128 Tier-3 gate: speculative
1401
+ `interprocedural_param` taint sources on Java library-API methods are
1402
+ dropped before LLM verification.
1403
+
1404
+ Tool surface unchanged — same 9 tools, same JSON-RPC schemas. The
1405
+ behavior change is internal to `scan`-class invocations.
1406
+
1407
+ ### Dependencies
1408
+
1409
+ - Bump `circle-ir-ai` `2.13.4` → `2.14.0`.
1410
+ - `circle-ir` pin unchanged at `3.86.0`.
1411
+
1412
+ Verification:
1413
+ - `npm run typecheck` clean
1414
+ - `npm test` — **11 / 11 pass** (smoke covers stdio transport + tool list)
1415
+ - `npm ls circle-ir-ai` — `2.14.0` (clean dep graph)
1416
+
1417
+ Minor bump (0.4.22 → 0.5.0) reflects the observable scan output
1418
+ change inherited from `circle-ir-ai@2.14.0`.
1419
+
1420
+ References: see `circle-ir-ai/CHANGELOG.md` 2.14.0 for the full gate
1421
+ spec.
1422
+
1423
+ ## [0.4.22] - 2026-06-21
1424
+
1425
+ ### Dependencies
1426
+
1427
+ - Bump `circle-ir` `3.85.1` → `3.86.0`.
1428
+ - Bump `circle-ir-ai` `2.13.3` → `2.13.4`.
1429
+ - **Drop the `overrides` block** — `circle-ir-ai@2.13.4` pins
1430
+ `circle-ir@3.86.0` directly, so the normal dep graph resolves
1431
+ uniformly without the override. Mirrors the same cleanup that landed
1432
+ in `cognium-ai@2.15.1`.
1433
+
1434
+ No MCP-surface changes; routine dependency catch-up.
1435
+
1436
+ Verification:
1437
+ - `npm run typecheck` clean
1438
+ - `npm test` — 11/11 pass
1439
+
1440
+ ## [0.4.21] - 2026-06-21
1441
+
1442
+ ### Dependencies
1443
+
1444
+ - Bump `circle-ir` `3.82.0` → `3.85.1` (3-version catch-up).
1445
+ - Bump `circle-ir-ai` `2.12.5` → `2.13.3` (3-version catch-up).
1446
+
1447
+ Picks up the **cogniumhq/cognium-dev#126** hotfix from circle-ir@3.85.1
1448
+ — bounds the Gate 3 string-array constant-table span walker in the
1449
+ 4-gate hardcoded-credential-entropy detector so it no longer scans
1450
+ unbounded literal tables. Eliminates the 2.7×–14.5× scan regression
1451
+ that landed in 3.85.0 (timed out gson / Hystrix / openapi-generator /
1452
+ hutool on the top-25 Java OSS harness).
1453
+
1454
+ Also picks up intermediate circle-ir improvements 3.82.0 → 3.85.1
1455
+ (inter-procedural taint walker enhancements, cognium-dev#19 / #28 /
1456
+ #17 fixes) and circle-ir-ai 2.12.5 → 2.13.3 (engine sync).
1457
+
1458
+ No MCP-surface changes; routine catch-up release.
1459
+
1460
+ ## [0.4.20] - 2026-06-19
1461
+
1462
+ ### Dependencies
1463
+
1464
+ - Bump `circle-ir-ai` `2.12.4` → `2.12.5`.
1465
+
1466
+ Picks up the cognium-ai#109 fix — assertion utilities (Spring/hutool
1467
+ `Assert.*`, Guava `Preconditions`/`Verify.*`, `Objects.requireNonNull*`,
1468
+ Apache Commons `Validate.*`) are now suppressed by
1469
+ `isSuppressedSinkShape()` across all 12 taint-flow CWEs before the LLM
1470
+ verifier sees them. No MCP-surface changes; routine engine-sync release.
1471
+
1472
+ ## [0.4.19] - 2026-06-19
1473
+
1474
+ ### Dependencies
1475
+
1476
+ - Bump `circle-ir` `3.74.0` → `3.75.0`.
1477
+ - Bump `circle-ir-ai` `2.12.0` → `2.12.4`.
1478
+
1479
+ Routine upstream sync. 11 tests pass + typecheck clean.
1480
+
1481
+ ## [0.4.18] - 2026-06-19
1482
+
1483
+ ### Added — REFACTOR-019: expose LLM verify controls on find_credential_exposure
1484
+
1485
+ The `find_credential_exposure` MCP tool now accepts two new optional
1486
+ inputs that flow through to the engine's `scanForSecrets`:
1487
+
1488
+ - `llm_verify: boolean` (default: `false`) — enable LLM verification
1489
+ to reduce false positives. Requires `LLM_API_KEY` on auth-required
1490
+ endpoints; the engine silently falls back to static-only on missing
1491
+ config (ES-004).
1492
+ - `verify_budget: number` (default: `100`, min: `0`) — cap on LLM
1493
+ verifier calls per scan. `0` disables verify entirely even when
1494
+ `llm_verify: true` — matches cognium-ai 2.14.x semantics.
1495
+
1496
+ Defaulting `llm_verify` to `false` on the MCP surface is intentional:
1497
+ clients invoking tools via MCP may not have `LLM_API_KEY` available,
1498
+ so an opt-in surface is friendlier than a silent ON. (cognium-ai's
1499
+ CLI defaults `llmVerify` to ON because users opt into the CLI; MCP
1500
+ clients haven't.)
1501
+
1502
+ Closes loose-end REFACTOR-019 from the hardcoded-secrets implementation
1503
+ plan (`.specifica/hardcoded-secrets/tasks.md`).
1504
+
1505
+ ### Dependencies
1506
+
1507
+ - **circle-ir-ai** `2.11.5` → `2.12.0` — picks up the 4-tier verify
1508
+ + `DEFAULT_VERIFY_BUDGET` API surface that this change exposes.
1509
+
1510
+ Tests: 1 file / 11 pass (unchanged). Typecheck clean.
1511
+
1512
+ ## [0.4.17] - 2026-06-18
1513
+
1514
+ ### Dependencies
1515
+
1516
+ - **circle-ir** `3.71.0` → `3.74.0` (skips 3.72.0 / 3.72.1 / 3.73.0).
1517
+ - **circle-ir-ai** `2.11.4` → `2.11.5` — engine-consumer cascade for
1518
+ the circle-ir 3.74.0 bump. No MCP-tool surface change.
1519
+
1520
+ Tests: 1 file / 11 pass (unchanged). Typecheck clean.
1521
+
1522
+ ## [0.4.16] - 2026-06-18
1523
+
1524
+ ### Dependencies
1525
+
1526
+ - **circle-ir-ai** `2.11.3` → `2.11.4` — engine-consumer cascade
1527
+ for cognium-dev#21 boundary-audit cleanup. `dead-code` resolver
1528
+ now consumes `CallInfo.receiver_type` / `receiver_type_fqn`
1529
+ (circle-ir 3.43.0, cognium-dev#25); LLM-path sink-shape filter
1530
+ retained with surviving-rationale block. No MCP-tool surface
1531
+ change.
1532
+
1533
+ Tests: 1 file / 11 pass (unchanged).
1534
+
1535
+ ## [0.4.15] - 2026-06-18
1536
+
1537
+ ### Dependencies
1538
+
1539
+ - **circle-ir** `3.69.0` → `3.71.0` — Sprint 20/21 engine bump:
1540
+ - 3.70.0 adds the `cache-no-vary` pass (CWE-524, severity
1541
+ medium) for shared-cache leaks where an authenticated
1542
+ response is marked `Cache-Control: public` without `Vary`.
1543
+ Strict 3-signal auth-qualifier mode covers
1544
+ Express/Fastify/Koa, Flask/FastAPI/Django,
1545
+ `net/http`/gin, Spring/Servlet. Will surface through
1546
+ `find_pattern` when an MCP client searches for the new
1547
+ `cache-no-vary` rule.
1548
+ - 3.71.0 closes two real-world OOP safe-mirror sanitizer FPs
1549
+ (cognium-dev#105): FP-31 allowlist-guarded getter
1550
+ (`if x not in UPPER_SNAKE_CONST: raise`), FP-32 MongoDB
1551
+ value-bound filter dict
1552
+ (`{field: {"$lte": value}}` operator-injection now only
1553
+ fires when the operator key itself is user-controlled).
1554
+ Quieter `find_pattern` results for `nosql_injection` on
1555
+ Mongo aggregation pipelines.
1556
+ - **circle-ir-ai** `2.11.2` → `2.11.3` — corresponding bump,
1557
+ no API surface change.
1558
+
1559
+ ### Tooling
1560
+
1561
+ No tool-handler changes. All 9 tools (`verify_spec_conformance`,
1562
+ `find_spec_drift`, `find_pattern`,
1563
+ `find_credential_exposure`, `check_license_compliance`,
1564
+ `find_stale_dependencies`, `find_install_script_risk`,
1565
+ `find_typosquats`, `find_excessive_permissions`) continue to
1566
+ operate over the existing stdio + HTTP transports.
1567
+
1568
+ ## [0.4.14] - 2026-06-18
1569
+
1570
+ ### Dependencies
1571
+
1572
+ - **circle-ir** `3.66.0` → `3.69.0` — Sprint 17/18/19 engine bump:
1573
+ - 3.67.0 closes the Java safe-corpus FP long-tail (`SafeService`
1574
+ `path_traversal`+`xxe`, `FalsePositiveCorpus` cmdi switch→constant)
1575
+ that surfaced cognium-dev#103's closure review.
1576
+ - 3.68.0 adds Python `urllib.request.urlretrieve` sinks (ssrf +
1577
+ path_traversal) and locks the Python FP corpus.
1578
+ - 3.69.0 ships new `module-side-effect` pass (CWE-829) for
1579
+ supply-chain droppers across JS/TS/Python/Go/Rust.
1580
+ - **circle-ir-ai** `2.11.1` → `2.11.2` — corresponding engine
1581
+ re-export bump; no API surface change for `@cognium-ai/mcp-server`.
1582
+
1583
+ No tool-handler code changes; 1 file / 11 tests pass; typecheck clean.
1584
+
1585
+ ## [0.4.13] - 2026-06-18
1586
+
1587
+ ### Dependencies
1588
+
1589
+ - **circle-ir** `3.59.0` → `3.66.0` — promotes `tsx` to a first-class
1590
+ `SupportedLanguage` enum member (was previously a sub-bucket of
1591
+ `typescript`). Engine consumers (`circle-ir-ai`) handle the new
1592
+ variant; no direct surface change here. **Note:** `detectLanguage`
1593
+ still returns `undefined` for `.tsx`/`.jsx` extensions — the
1594
+ type infra is in place but extension wiring is incomplete
1595
+ (tracked at cognium-dev#88).
1596
+ - **circle-ir-ai** `2.11.0` → `2.11.1` — picks up the engine bump and
1597
+ the 4 `Record<SupportedLanguage, …>` map updates required by the
1598
+ `tsx` enum addition.
1599
+
1600
+ No surface-level changes to the 9 MCP tools; existing
1601
+ `verify_spec_conformance`, `find_spec_drift`, `find_pattern`,
1602
+ `find_credential_exposure`, `check_license_compliance`,
1603
+ `find_stale_dependencies`, `find_install_script_risk`,
1604
+ `find_typosquats`, `find_excessive_permissions` continue to behave
1605
+ identically. Smoke (`npm run smoke`) and the 11-test vitest suite
1606
+ pass against the new engine.
1607
+
1608
+ ## [0.4.12] - 2026-06-17
1609
+
1610
+ ### Fixed
1611
+
1612
+ - **`bin/cognium-mcp` no-op under npm symlinks** — the ESM `isMain`
1613
+ guard added in 0.4.x (`import.meta.url === \`file://${process.argv[1]}\``)
1614
+ silently exited 0 without attaching stdio when the binary was spawned
1615
+ via `node_modules/.bin/cognium-mcp`, because npm bin entries are
1616
+ symlinks: Node sets `import.meta.url` to the realpath of the executed
1617
+ module but leaves `process.argv[1]` as the symlink path, so the
1618
+ string compare never matches and `main()` never runs. MCP clients
1619
+ (e.g. cognium-code) saw `engine closed stdout before request id 1
1620
+ was answered`. Fixed by resolving `process.argv[1]` through
1621
+ `realpathSync` and comparing via `pathToFileURL(...).href` before
1622
+ the equality check. Library imports (`import { buildServer } from
1623
+ '@cognium-ai/mcp-server'`) remain unaffected — they still see
1624
+ `isMain === false` and skip the stdio bootstrap.
1625
+
1626
+ No dependency changes.
1627
+
1628
+ ## [0.4.11] - 2026-06-17
1629
+
1630
+ ### Dependencies
1631
+
1632
+ - **`circle-ir`** `3.57.0` → `3.59.0` **(exact pin)** — drop-in
1633
+ engine bump.
1634
+ - **`circle-ir-ai`** `2.10.1` → `2.11.0` **(exact pin)** — adopts
1635
+ circle-ir's `generateFindings()` in the mastra `runReport`
1636
+ no-verification branch (#26): canSourceReachSink + DFG/proximity
1637
+ gates now apply to the LLM-enrichment path; new additive
1638
+ `vulnerabilities[].discoveryMethod` field (`'static' | 'llm' |
1639
+ 'mixed'`); evidence-aware severity (proximity-only flows
1640
+ emit `'high'` instead of the old hardcoded `'critical'`).
1641
+
1642
+ No code changes in this package. 11 tests pass.
1643
+
1644
+ ## [0.4.10] - 2026-06-16
1645
+
1646
+ ### Dependencies
1647
+
1648
+ - **`circle-ir`** `3.56.0` → `3.57.0` **(exact pin)** — Sprint 8
1649
+ upstream release (cognium-dev #50, #51, #62, #73, #84, #90, #91):
1650
+ Java for-each element-taint propagation, Map.put + StringBuilder
1651
+ taint propagation, Go `filepath.Base`/`Clean`/`EvalSymlinks` +
1652
+ `path.Clean` path-traversal sanitizers, `SecurityHeadersPass`
1653
+ global-middleware suppression (helmet / Talisman /
1654
+ SecurityFilterChain), Bash function-local `$1`/`$2` no longer
1655
+ conflated with script-CLI positionals (regex-allowlist guard
1656
+ deferred to Sprint 9).
1657
+ - **`circle-ir-ai`** `2.10.0` → `2.10.1` **(exact pin)** — engine
1658
+ re-export bump for the above.
1659
+
1660
+ No surface changes to the 9 MCP tools (`verify_spec_conformance`,
1661
+ `find_spec_drift`, `find_pattern`, `find_credential_exposure`,
1662
+ `check_license_compliance`, `find_stale_dependencies`,
1663
+ `find_install_script_risk`, `find_typosquats`,
1664
+ `find_excessive_permissions`). Existing stdio + HTTP transports
1665
+ unchanged.
1666
+
1667
+ ## [0.4.9] - 2026-06-16
1668
+
1669
+ ### Dependencies
1670
+
1671
+ - **`circle-ir`** `3.52.0` → `3.56.0` **(exact pin)** — four upstream
1672
+ feature releases:
1673
+ - **3.53.0** (cognium-dev#52 + #87) — Text4Shell, FreeMarker SSTI,
1674
+ Zip-Slip source reclassify, Java weak-crypto config (IV / key /
1675
+ RSA), taint matcher receiver-type fix.
1676
+ - **3.54.0** (Sprint 5) — `jwt-verify-disabled` (CWE-347),
1677
+ `redos` sink (CWE-1333), `format_string` sink (CWE-134).
1678
+ - **3.55.0** (Sprint 6) — `crlf` sink (CWE-113), `mass_assignment`
1679
+ sink (CWE-915), `csrf-protection-disabled` (CWE-352),
1680
+ `xml-entity-expansion` (CWE-776), `mass-assignment` pattern.
1681
+ - **3.56.0** (Sprint 7) — Python + Go `weak-crypto` parity
1682
+ (ECB, hardcoded keys, weak RSA).
1683
+ - **`circle-ir-ai`** `2.9.0` → `2.10.0` **(exact pin)** — pure engine
1684
+ re-export; no LLM-layer changes.
1685
+
1686
+ MCP tool surface unchanged. Tool consumers may see additional
1687
+ `finding.type` values (`crlf`, `mass_assignment`, `redos`,
1688
+ `format_string`) in `find_pattern` results. Patch bump.
1689
+
1690
+ ## [0.4.8] - 2026-06-16
1691
+
1692
+ ### Dependencies
1693
+
1694
+ - **`circle-ir-ai`** `2.8.24` → `2.9.0` **(exact pin)** — picks up two
1695
+ LLM-verification improvements:
1696
+ - **cognium-ai#86** — windowed source/sink batch-verification.
1697
+ Extracts merged ±N line windows around each center (preserving
1698
+ original 1-based line numbers) instead of single-cut truncation.
1699
+ Two new env vars: `LLM_VERIFY_WINDOW_LINES` (default `80`),
1700
+ `LLM_VERIFY_MAX_CHUNKS` (default `4`).
1701
+ - **cognium-ai#102** — skip LLM verification on minified content.
1702
+ Conservative triple-condition heuristic (>50 KB AND max line
1703
+ >5,000 c AND avg line >500 c) short-circuits the verifier before
1704
+ any LLM call on minified / bundled single-line JS, where windowed
1705
+ chunking degenerates. Static-analysis findings unaffected.
1706
+
1707
+ MCP tool surface unchanged. Patch bump.
1708
+
1709
+ ## [0.4.7] - 2026-06-16
1710
+
1711
+ ### Dependencies
1712
+
1713
+ - **`circle-ir`** `3.50.0` → `3.52.0` **(exact pin)** — two upstream
1714
+ feature releases:
1715
+ - **3.51.0** (cognium-dev#88.1 + circle-ir#88.3): `.jsx` / `.cjs`
1716
+ routed to the JS plugin (no longer silently skipped). Go
1717
+ `text/template` modeled as `xss` / CWE-79 / high sink — Template.
1718
+ Execute and Template.ExecuteTemplate do NOT HTML-escape (only
1719
+ `html/template` does).
1720
+ - **3.52.0** (cognium-dev#60): **four new analysis passes** for
1721
+ config / absence patterns that were previously misregistered as
1722
+ taint sinks and never fired:
1723
+ - `weak-hash` (CWE-328) — MD2/MD4/MD5/SHA-1 across Java/Python/JS/Go.
1724
+ - `weak-crypto` (CWE-327) — DES/3DES/RC2/RC4/Blowfish/IDEA/SEED/
1725
+ CAST5 + ECB (incl. Java AES default = ECB).
1726
+ - `weak-random` (CWE-330) — non-CSPRNG (`Math.random`, `random.*`,
1727
+ `new Random()`, `math/rand`, import-aware).
1728
+ - `tls-verify-disabled` (CWE-295, new) — Go `InsecureSkipVerify`,
1729
+ Python `requests/httpx(verify=False)` +
1730
+ `ssl._create_unverified_context`, JS `rejectUnauthorized:false` +
1731
+ `NODE_TLS_REJECT_UNAUTHORIZED='0'`, Java NoopHostnameVerifier.
1732
+ - `insecure-cookie` extended to Python (Flask/Django/Starlette
1733
+ `response.set_cookie` without `secure=True`/`httponly=True`) and
1734
+ Java (`new javax.servlet.http.Cookie(...)` files missing
1735
+ `.setSecure(true)` + `.setHttpOnly(true)`).
1736
+ - **`circle-ir-ai`** `2.8.23` → `2.8.24` **(exact pin)** — surfaces the
1737
+ 3.52.0 passes through the engine layer.
1738
+
1739
+ No mcp-server source change — dep-only bump.
1740
+
1741
+ ## [0.4.6] - 2026-06-16
1742
+
1743
+ ### Dependencies
1744
+
1745
+ - **`circle-ir`** `3.49.0` → `3.50.0` **(exact pin)** — inline-source
1746
+ taint fix (circle-ir#83, subsumes #76). Bare-arg call/concat shapes
1747
+ where a tainted source appears inline as an argument now propagate
1748
+ to the sink without an intermediate variable:
1749
+ - Java: `Runtime.getRuntime().exec("echo " + req.getParameter("u"))`
1750
+ - JS/TS: `eval(req.query.x)`, `vm.runInThisContext(req.cookies.c)`,
1751
+ `child_process.exec(req.body.cmd)`
1752
+ - Python: `os.system("echo " + request.args.get("u"))` and for-loop
1753
+ iterables `for x in request.form.getlist("y"): ...`
1754
+ - Four upstream sub-fixes: inline-source colocation pass,
1755
+ Python for-loop iterable derivation w/ virtual http_param anchor,
1756
+ loosened empty-source early-returns, `canSourceReachSink` matrix
1757
+ expansion for JS RCE shapes (code_injection accepts http_param/
1758
+ query/header/cookie sources).
1759
+ - **`circle-ir-ai`** `2.8.22` → `2.8.23` **(exact pin)** — engine bump
1760
+ to pick up circle-ir@3.50.0.
1761
+
1762
+ No tool surface change. `find_pattern` and the 8 other MCP tools
1763
+ benefit transparently via the upgraded SAST base.
1764
+
1765
+ ## [0.4.5] - 2026-06-16
1766
+
1767
+ ### Dependencies
1768
+
1769
+ - **`circle-ir`** `3.48.0` → `3.49.0` **(exact pin)** — surfaces new
1770
+ upstream SAST coverage to MCP consumers:
1771
+ - `insecure-cookie` pass for JS/TS (CWE-614, circle-ir#43)
1772
+ - `log_injection` sinks for Java + JS/TS (CWE-117, circle-ir#44)
1773
+ - `nosql_injection` mongoose Model/Query coverage (CWE-943, #45)
1774
+ - Classless `open_redirect` for Express `res.redirect()` (CWE-601, #46)
1775
+ - Python `path_traversal` sanitizers: `os.path.realpath`,
1776
+ `os.path.abspath` (#48 pt 2)
1777
+ - Rust actix-web / axum typed extractor taint flows (#71)
1778
+ - **`circle-ir-ai`** `2.8.20` → `2.8.22` **(exact pin)** — engine bump
1779
+ that includes 2.8.21 (capability_mismatch severity inversion fix
1780
+ for over-declared skill capabilities, cognium-ai#100 Bug #2; bundled
1781
+ `MAX_CODE_CONTEXT_LENGTH` raised 8000 → 32000 to stop dropping
1782
+ ~85% of real vulnerability-bearing files; `LLM_MAX_CONCURRENT`
1783
+ raised 5 → 10) plus 2.8.22 (the circle-ir dep bump). No MCP tool
1784
+ API surface change in this release.
1785
+
1786
+ ## [0.4.4] - 2026-06-13
1787
+
1788
+ ### Dependencies
1789
+
1790
+ - **`circle-ir`** `3.39.0` → `3.48.0` **(exact pin)** — 9-minor bump
1791
+ rolling up taint-engine and pass improvements. No API surface change
1792
+ in the MCP tool layer; engine is consumed transitively via
1793
+ `circle-ir-ai`.
1794
+ - **`circle-ir-ai`** `2.8.14` → `2.8.20` **(exact pin)** — engine bump
1795
+ that bundles the cognium-ai#88 parse-failure visibility work
1796
+ (structured `parseFailure` records, always-on `[SKIP]` /
1797
+ `[PARSER_FAIL]` / `[LLM_FAIL]` stderr markers, additive
1798
+ `parseFailures[]` + `filesParseFailed` / `filesSkipped` counters on
1799
+ `ScanResult`, `withTimeout` wrap on the Mastra LLM path) and 5
1800
+ intermediate releases (`2.8.15`–`2.8.19` — ax-client robustness,
1801
+ FP-epic shape filters, deep LLM debug mode). MCP tools that surface
1802
+ scan output now pick up structured parse-failure detail through the
1803
+ same JSON spread.
1804
+
1805
+ Build clean, typecheck clean, 11 tests pass.
1806
+
1807
+ ## [0.4.3] - 2026-06-12
1808
+
1809
+ ### Dependencies
1810
+
1811
+ - **`circle-ir`** `3.38.0` → `3.39.0` **(exact pin)** — cross-instance
1812
+ field-binding taint propagation (`FieldTaintInfo` summaries for
1813
+ `@DataBoundConstructor` / `@Autowired` / `@Inject` annotated fields)
1814
+ and caller-body sink emission for cases where the final sink lives in
1815
+ the caller's own method body rather than a cross-file callee. Test
1816
+ suite expanded 1935 → 1939 (4 new Jenkins/Spring DI fixtures).
1817
+ - **`circle-ir-ai`** `2.8.13` → `2.8.14` **(exact pin)** — engine bump
1818
+ that consumes the new `circle-ir@3.39.0`; no API surface changes,
1819
+ drop-in upgrade for the 9 MCP tools.
1820
+
1821
+ ## [0.4.2] - 2026-06-12
1822
+
1823
+ ### Added
1824
+
1825
+ - Export `buildServer` from the package entry so HTTP transport hosts
1826
+ (e.g. circle-pack `/api/mcp`) can build and connect to a configured
1827
+ `McpServer` without spawning a subprocess.
1828
+ - `import.meta.url === file://${process.argv[1]}` guard around the
1829
+ stdio bootstrap so library imports do not silently start a stdio
1830
+ server on the host process's stdin/stdout.
1831
+
1832
+ ## [0.4.1] - 2026-06-11
1833
+
1834
+ - Pinned `circle-ir@3.38.0` + `circle-ir-ai@2.8.13` (exact).