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