@nerviq/cli 1.29.0 → 1.29.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.
- package/CHANGELOG.md +1527 -1493
- package/README.md +550 -538
- package/SECURITY.md +82 -82
- package/bin/cli.js +2562 -2558
- package/docs/api-reference.md +356 -356
- package/docs/audit-fix.md +109 -0
- package/docs/autofix.md +3 -62
- package/docs/getting-started.md +1 -1
- package/docs/index.html +592 -592
- package/docs/integration-contracts.md +287 -287
- package/docs/maintenance.md +128 -128
- package/docs/new-platform-guide.md +202 -202
- package/docs/release-process.md +63 -0
- package/docs/shallow-risk.md +244 -244
- package/docs/why-nerviq.md +82 -82
- package/package.json +67 -67
- package/src/aider/activity.js +226 -226
- package/src/aider/context.js +162 -162
- package/src/aider/freshness.js +123 -123
- package/src/aider/techniques.js +3465 -3465
- package/src/audit/layers.js +180 -180
- package/src/audit.js +1032 -1032
- package/src/benchmark.js +299 -299
- package/src/codex/activity.js +324 -324
- package/src/codex/freshness.js +142 -142
- package/src/codex/techniques.js +4895 -4895
- package/src/context.js +326 -326
- package/src/continuous-ops.js +11 -1
- package/src/convert.js +340 -340
- package/src/copilot/config-parser.js +280 -280
- package/src/copilot/context.js +218 -218
- package/src/copilot/freshness.js +177 -177
- package/src/copilot/patch.js +238 -238
- package/src/copilot/techniques.js +3578 -3578
- package/src/cursor/freshness.js +194 -194
- package/src/cursor/patch.js +243 -243
- package/src/cursor/techniques.js +3735 -3735
- package/src/doctor.js +201 -201
- package/src/fix-engine.js +511 -8
- package/src/formatters/csv.js +86 -86
- package/src/formatters/junit.js +123 -123
- package/src/formatters/markdown.js +164 -164
- package/src/formatters/otel.js +151 -151
- package/src/freshness.js +156 -156
- package/src/gemini/activity.js +402 -402
- package/src/gemini/context.js +290 -290
- package/src/gemini/freshness.js +183 -183
- package/src/gemini/patch.js +229 -229
- package/src/gemini/techniques.js +3811 -3811
- package/src/governance.js +533 -533
- package/src/harmony/audit.js +306 -306
- package/src/i18n.js +63 -63
- package/src/insights.js +119 -119
- package/src/integrations.js +134 -134
- package/src/locales/en.json +33 -33
- package/src/locales/es.json +33 -33
- package/src/migrate.js +354 -354
- package/src/opencode/activity.js +286 -286
- package/src/opencode/freshness.js +137 -137
- package/src/opencode/techniques.js +3450 -3450
- package/src/setup/analysis.js +12 -12
- package/src/setup.js +7 -6
- package/src/shallow-risk/index.js +56 -56
- package/src/shallow-risk/patterns/agent-config-cross-platform-drift.js +50 -50
- package/src/shallow-risk/patterns/agent-config-dangerous-autoapprove.js +46 -46
- package/src/shallow-risk/patterns/agent-config-deprecated-keys.js +46 -46
- package/src/shallow-risk/patterns/agent-config-missing-file.js +317 -317
- package/src/shallow-risk/patterns/agent-config-secret-literal.js +49 -49
- package/src/shallow-risk/patterns/agent-config-stack-contradiction.js +34 -34
- package/src/shallow-risk/patterns/hook-script-missing.js +70 -70
- package/src/shallow-risk/patterns/mcp-server-no-allowlist.js +52 -52
- package/src/shallow-risk/shared.js +648 -648
- package/src/source-urls.js +295 -295
- package/src/state-paths.js +85 -85
- package/src/supplemental-checks.js +805 -805
- package/src/telemetry.js +160 -160
- package/src/windsurf/context.js +359 -359
- package/src/windsurf/freshness.js +194 -194
- package/src/windsurf/patch.js +231 -231
- package/src/windsurf/techniques.js +3779 -3779
package/CHANGELOG.md
CHANGED
|
@@ -1,1493 +1,1527 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to the **Nerviq** CLI are documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [Unreleased]
|
|
9
|
-
|
|
10
|
-
## [1.29.
|
|
11
|
-
|
|
12
|
-
### Fixed —
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- **`
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
### Verified
|
|
77
|
-
|
|
78
|
-
- jest: **
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
- `
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
`
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
- `
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
-
|
|
338
|
-
|
|
339
|
-
`
|
|
340
|
-
|
|
341
|
-
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
- `
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
###
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
`
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
`
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
-
|
|
721
|
-
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
-
|
|
767
|
-
-
|
|
768
|
-
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
- **
|
|
805
|
-
|
|
806
|
-
###
|
|
807
|
-
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
## [1.
|
|
812
|
-
|
|
813
|
-
### Fixed —
|
|
814
|
-
|
|
815
|
-
- **
|
|
816
|
-
- **
|
|
817
|
-
- **
|
|
818
|
-
- **
|
|
819
|
-
|
|
820
|
-
### Measured
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
###
|
|
847
|
-
|
|
848
|
-
- **
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
-
|
|
855
|
-
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
- **
|
|
877
|
-
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
- **
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
-
|
|
888
|
-
- **
|
|
889
|
-
|
|
890
|
-
### Fixed
|
|
891
|
-
-
|
|
892
|
-
- **
|
|
893
|
-
- **
|
|
894
|
-
- **
|
|
895
|
-
- **
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
- **
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
- **
|
|
904
|
-
- **
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
-
|
|
911
|
-
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
- **
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
###
|
|
920
|
-
-
|
|
921
|
-
- **
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
- **
|
|
927
|
-
- **
|
|
928
|
-
- **
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
###
|
|
936
|
-
- **
|
|
937
|
-
- **
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
- **
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
- **
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
###
|
|
953
|
-
- **
|
|
954
|
-
- **
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
- **
|
|
960
|
-
- **
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
- **
|
|
970
|
-
- **
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
- **
|
|
988
|
-
- **
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
- **
|
|
992
|
-
- **
|
|
993
|
-
- **
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
- **
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
- **
|
|
1007
|
-
-
|
|
1008
|
-
-
|
|
1009
|
-
-
|
|
1010
|
-
-
|
|
1011
|
-
-
|
|
1012
|
-
-
|
|
1013
|
-
-
|
|
1014
|
-
-
|
|
1015
|
-
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
- **
|
|
1025
|
-
- **
|
|
1026
|
-
- **
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
- **
|
|
1032
|
-
- **
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
- **
|
|
1039
|
-
- **
|
|
1040
|
-
- **
|
|
1041
|
-
- **"
|
|
1042
|
-
-
|
|
1043
|
-
- **
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
-
|
|
1047
|
-
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
-
|
|
1051
|
-
-
|
|
1052
|
-
-
|
|
1053
|
-
|
|
1054
|
-
## [1.7
|
|
1055
|
-
|
|
1056
|
-
### Changed
|
|
1057
|
-
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
- **
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
- **
|
|
1072
|
-
- **
|
|
1073
|
-
- **
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
-
|
|
1080
|
-
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
- **
|
|
1106
|
-
- **
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
- **
|
|
1113
|
-
- **
|
|
1114
|
-
- **
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
- **
|
|
1125
|
-
- **
|
|
1126
|
-
- **
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
-
|
|
1146
|
-
-
|
|
1147
|
-
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
###
|
|
1157
|
-
-
|
|
1158
|
-
-
|
|
1159
|
-
-
|
|
1160
|
-
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
-
|
|
1169
|
-
-
|
|
1170
|
-
-
|
|
1171
|
-
-
|
|
1172
|
-
-
|
|
1173
|
-
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
-
|
|
1187
|
-
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
-
|
|
1203
|
-
-
|
|
1204
|
-
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
###
|
|
1209
|
-
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
-
|
|
1244
|
-
-
|
|
1245
|
-
|
|
1246
|
-
## [1.2.
|
|
1247
|
-
|
|
1248
|
-
###
|
|
1249
|
-
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
###
|
|
1254
|
-
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
###
|
|
1276
|
-
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
-
|
|
1296
|
-
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
-
|
|
1303
|
-
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
-
|
|
1324
|
-
|
|
1325
|
-
## [0.
|
|
1326
|
-
|
|
1327
|
-
###
|
|
1328
|
-
-
|
|
1329
|
-
-
|
|
1330
|
-
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
-
|
|
1366
|
-
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
-
|
|
1399
|
-
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
-
|
|
1418
|
-
|
|
1419
|
-
[
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
[
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
[
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
[1.
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
[
|
|
1453
|
-
[1.
|
|
1454
|
-
[1.
|
|
1455
|
-
[1.
|
|
1456
|
-
[1.
|
|
1457
|
-
[1.
|
|
1458
|
-
[1.
|
|
1459
|
-
[1.
|
|
1460
|
-
[1.
|
|
1461
|
-
[1.
|
|
1462
|
-
[1.
|
|
1463
|
-
[1.
|
|
1464
|
-
[1.
|
|
1465
|
-
[1.
|
|
1466
|
-
[1.
|
|
1467
|
-
[1.
|
|
1468
|
-
[1.
|
|
1469
|
-
[1.2
|
|
1470
|
-
[1.
|
|
1471
|
-
[1.
|
|
1472
|
-
[1.
|
|
1473
|
-
[1.
|
|
1474
|
-
[1.
|
|
1475
|
-
[1.
|
|
1476
|
-
[1.
|
|
1477
|
-
[1.0
|
|
1478
|
-
[1.0
|
|
1479
|
-
[1.
|
|
1480
|
-
[
|
|
1481
|
-
[
|
|
1482
|
-
[
|
|
1483
|
-
[
|
|
1484
|
-
[
|
|
1485
|
-
[
|
|
1486
|
-
[
|
|
1487
|
-
[
|
|
1488
|
-
[
|
|
1489
|
-
[
|
|
1490
|
-
[
|
|
1491
|
-
[
|
|
1492
|
-
[
|
|
1493
|
-
[
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the **Nerviq** CLI are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.29.1] - 2026-04-16
|
|
11
|
+
|
|
12
|
+
### Fixed — UX polish from external pilot feedback
|
|
13
|
+
|
|
14
|
+
Three small UX fixes surfaced by an external pilot session documented in
|
|
15
|
+
`research/pilot-feedback-2026-04-16-external-project.md`.
|
|
16
|
+
|
|
17
|
+
- **`setup --auto` counter no longer undercounts.** The end-of-setup
|
|
18
|
+
summary used an internal `created` counter that could drift from
|
|
19
|
+
`writtenFiles` (e.g. when `.claude/settings.json` was merged rather
|
|
20
|
+
than freshly created). The summary now reports
|
|
21
|
+
`writtenFiles.length` directly, matching the per-file log lines
|
|
22
|
+
above it. `--agent-mode` JSON output aligned to the same source of
|
|
23
|
+
truth.
|
|
24
|
+
- **`nerviq watch` compact output shows blocker keys inline.** The
|
|
25
|
+
`block=N` segment now appends up to three blocking check IDs (e.g.
|
|
26
|
+
`block=2 [permissionDeny, hookRegistration]`) so a failing gate is
|
|
27
|
+
actionable without a separate `nerviq audit` round-trip. A new
|
|
28
|
+
`blockingKeys` array is exposed on the continuous-status report for
|
|
29
|
+
programmatic consumers.
|
|
30
|
+
- **MONITOR help section disambiguates `watch` vs `serve` vs
|
|
31
|
+
`--drift-mode watch`.** Added a three-line orientation at the top
|
|
32
|
+
of the MONITOR block describing who each surface is aimed at
|
|
33
|
+
(local human, machine/HTTP, governance-posture flag).
|
|
34
|
+
|
|
35
|
+
### Not shipped (deferred)
|
|
36
|
+
|
|
37
|
+
- `nerviq --version` update-notifier. The CLI ships with **zero
|
|
38
|
+
runtime dependencies** by design; adding `update-notifier` would
|
|
39
|
+
pull ~20 transitive deps. A zero-dep implementation is viable but
|
|
40
|
+
needs its own spec (cache location, opt-out, telemetry). Tracked
|
|
41
|
+
in the pilot-feedback doc.
|
|
42
|
+
|
|
43
|
+
## [1.29.0] - 2026-04-14
|
|
44
|
+
|
|
45
|
+
### Fixed — Shallow-risk FP rate reduction (CTO-06b)
|
|
46
|
+
|
|
47
|
+
Tightens the shallow-risk pattern regexes based on the 60-repo FP
|
|
48
|
+
measurement from `research/exp-cto-06-fp-measurement-2026-04-14.md`.
|
|
49
|
+
|
|
50
|
+
- **`agent-config-missing-file`** — the single pattern that produced
|
|
51
|
+
essentially all the FPs. Overnight corpus measurement found 520
|
|
52
|
+
hits / 63.5% lower-bound FP rate across the PP-08 corpus (6.35×
|
|
53
|
+
above the 0.10 gate).
|
|
54
|
+
|
|
55
|
+
### Impact
|
|
56
|
+
|
|
57
|
+
- Corpus hits: **520 → 69 (-86.7%)**.
|
|
58
|
+
- Lower-bound FP rate: **63.5% → 8.7%** (under the 0.10 gate).
|
|
59
|
+
- All other 7 patterns remained at 0 hits across the corpus (nothing
|
|
60
|
+
to tighten this pass — they were already quiet).
|
|
61
|
+
|
|
62
|
+
### What got tightened
|
|
63
|
+
|
|
64
|
+
- Pointer regex no longer fires on:
|
|
65
|
+
- Fenced code-example bodies.
|
|
66
|
+
- URL-shape references.
|
|
67
|
+
- Well-known external conventions (e.g. `.github/CODEOWNERS`,
|
|
68
|
+
`node_modules/*`, `.git/*`, `vendor/*`).
|
|
69
|
+
- Host-document path resolution is strict to the repo root; relative
|
|
70
|
+
references that resolve outside the repo are now ignored
|
|
71
|
+
instead of reported as missing.
|
|
72
|
+
- Quote-wrapped example paths in prose (e.g. `"docs/SECURITY.md"` as
|
|
73
|
+
an illustration in a paragraph) distinguished from bare reference
|
|
74
|
+
paths.
|
|
75
|
+
|
|
76
|
+
### Verified
|
|
77
|
+
|
|
78
|
+
- jest: **475/475** passing — this is the `475`-test verification baseline. (was 452 + 23 new negative-fixture
|
|
79
|
+
tests in `test/shallow-risk.test.js`, each reproducing a FP
|
|
80
|
+
eliminated this pass).
|
|
81
|
+
- canonical CLI tests: **162/162** passing.
|
|
82
|
+
- `npm pack --dry-run`: clean.
|
|
83
|
+
- `node tools/validate-release-metadata.js`: validation passed for v1.29.0.
|
|
84
|
+
- Shallow-risk now runnable on real repos without drowning the
|
|
85
|
+
signal. Feature stays `Experimental` until the corpus measurement
|
|
86
|
+
sits below the 0.10 gate twice in a row.
|
|
87
|
+
|
|
88
|
+
Evidence: `research/exp-cto-06-fp-measurement-2026-04-14.md`
|
|
89
|
+
updated with a "2026-04-14 tightening pass" section including
|
|
90
|
+
per-pattern before/after.
|
|
91
|
+
|
|
92
|
+
## [1.28.0] - 2026-04-14
|
|
93
|
+
|
|
94
|
+
### Calibrated (not certified) — OpenCode Platform Parity (PP-05)
|
|
95
|
+
|
|
96
|
+
The last of the 8 supported platforms finally gets its calibration
|
|
97
|
+
pass. OpenCode moves from "untouched" to "calibrated" against 10
|
|
98
|
+
real OpenCode-using public repos. Same judgment bar as Windsurf
|
|
99
|
+
(PP-03) and Aider (PP-04) — strict-FP <5% met, all-10-≥70 not fully
|
|
100
|
+
met. Source landed in commit `5114834`.
|
|
101
|
+
|
|
102
|
+
10-repo corpus: 8/10 scored ≥70 post-calibration. PPI stays at
|
|
103
|
+
**0.75** — OpenCode public adoption at the mature-star tier is
|
|
104
|
+
sparse, same judgment pattern as Windsurf/Aider. Added to
|
|
105
|
+
`research/platform-parity-corpus.json`, evidence docs
|
|
106
|
+
`exp-pp-09-opencode-fp-2026-04-14.md` +
|
|
107
|
+
`exp-pp-10-opencode-external-2026-04-14.md`.
|
|
108
|
+
|
|
109
|
+
### Verified
|
|
110
|
+
|
|
111
|
+
- jest: **452/452** passing — this is the `452`-test verification baseline. (was 440 + 12 new opencode-pp05
|
|
112
|
+
regression tests).
|
|
113
|
+
- canonical CLI tests: **162/162** passing.
|
|
114
|
+
- `npm pack --dry-run`: clean.
|
|
115
|
+
- `node tools/validate-release-metadata.js`: validation passed for v1.28.0.
|
|
116
|
+
- All guard suites still green (claude-na-gates, layer-coverage,
|
|
117
|
+
framework-native, audit-evidence, score-preview, 3 format tests,
|
|
118
|
+
shallow-risk).
|
|
119
|
+
|
|
120
|
+
**All 8 platforms now calibrated or certified:** Claude, Cursor,
|
|
121
|
+
Codex, Copilot, Gemini (certified, PPI contribution 1.0 each) +
|
|
122
|
+
Windsurf, Aider, OpenCode (calibrated, 0.75 base). PPI 0.75 will
|
|
123
|
+
graduate to 0.875+ only when corpus expansion on one of
|
|
124
|
+
Windsurf/Aider/OpenCode produces a mature-repo set passing the
|
|
125
|
+
score floor.
|
|
126
|
+
|
|
127
|
+
## [1.27.1] - 2026-04-14
|
|
128
|
+
|
|
129
|
+
### Fixed — npm tarball completeness + Windows output encoding (MEMO wave)
|
|
130
|
+
|
|
131
|
+
Addresses two real npm-user issues surfaced by the Codex CTO/CEO +
|
|
132
|
+
Market Memo (2026-04-13 v2):
|
|
133
|
+
|
|
134
|
+
- **`package.json` `files` broadened** (MEMO-17): the published
|
|
135
|
+
tarball now includes `docs/`, `contracts/`, `sdk/README.md`,
|
|
136
|
+
`CHANGELOG.md`, and `SECURITY.md` alongside `bin/`, `src/`, and
|
|
137
|
+
`README.md`. Previously these docs surfaces were referenced in
|
|
138
|
+
the README but not shipped in the npm tarball, meaning external
|
|
139
|
+
users hit broken doc links post-install. Verified via
|
|
140
|
+
`npm pack --dry-run` — tarball now matches what the README
|
|
141
|
+
promises.
|
|
142
|
+
|
|
143
|
+
- **Windows output encoding** (MEMO-16): the CLI console output
|
|
144
|
+
previously rendered mojibake on Windows cmd.exe where the runtime
|
|
145
|
+
default code page did not support emoji (✅ ❌ ✔ ✗ U+2705 / U+274C /
|
|
146
|
+
U+2713 / U+2717). Introduced `src/output-icons.js` as a single
|
|
147
|
+
helper that emits clean ASCII fallbacks (`[OK]`, `[FAIL]`,
|
|
148
|
+
`[SKIP]`, `[WARN]`) when `NERVIQ_ASCII_OUTPUT=1` or auto-detected
|
|
149
|
+
from `process.platform === 'win32'` + non-TTY. Wired through
|
|
150
|
+
`src/setup/runtime.js`, `src/setup.js`, `src/init.js`,
|
|
151
|
+
`src/codex/setup.js`, `src/gemini/setup.js`, `test/run.js`.
|
|
152
|
+
2 new regression tests in `test/output-encoding.test.js`.
|
|
153
|
+
|
|
154
|
+
### Also this release
|
|
155
|
+
|
|
156
|
+
- **7 back-dated GitHub Releases** created for v1.21.0 through
|
|
157
|
+
v1.27.0 (MEMO-01). Previously the public GitHub release surface
|
|
158
|
+
lagged npm by 7 versions; it now reflects the full release
|
|
159
|
+
history.
|
|
160
|
+
- **3 stale GitHub issues closed** (MEMO-02: #24, #25, #26) —
|
|
161
|
+
feature requests for Markdown / JUnit / CSV output that were
|
|
162
|
+
actually shipped in v1.22.0. Each closed with a shipped-in
|
|
163
|
+
attribution comment.
|
|
164
|
+
|
|
165
|
+
### Verified
|
|
166
|
+
|
|
167
|
+
- jest: **440/440** passing — this is the `440`-test verification baseline. (was 438 + 2 new output-encoding
|
|
168
|
+
regression tests).
|
|
169
|
+
- canonical CLI tests: **162/162** passing.
|
|
170
|
+
- `npm pack --dry-run`: clean, includes the broadened files set.
|
|
171
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
172
|
+
validation passed for v1.27.1.
|
|
173
|
+
|
|
174
|
+
Evidence: `research/exp-memo-autonomous-wave-2026-04-14.md` in the
|
|
175
|
+
research repo.
|
|
176
|
+
|
|
177
|
+
## [1.27.0] - 2026-04-14
|
|
178
|
+
|
|
179
|
+
### Added — Shallow Risk Mode (experimental, CTO-06)
|
|
180
|
+
|
|
181
|
+
Opt-in `--shallow-risk` lane that surfaces obvious problems at the
|
|
182
|
+
intersection of agent configuration (CLAUDE.md, `.claude/`, `.cursor/`,
|
|
183
|
+
`.codex/`, `.aider.conf.yml`, `.windsurf/`, etc.) and the rest of
|
|
184
|
+
the codebase. Closes the 2026-04-08 UAT trust-break where evaluators
|
|
185
|
+
said "missed something obvious" — by catching a narrow, curated set
|
|
186
|
+
of issues **no generic scanner can find** because they require
|
|
187
|
+
understanding agent-config semantics.
|
|
188
|
+
|
|
189
|
+
Implementation follows the approved design doc v2 (commit `f425209`
|
|
190
|
+
in the research repo, `research/exp-cto-06-shallow-risk-design-2026-04-14.md`).
|
|
191
|
+
|
|
192
|
+
### The 8 initial patterns (all NERVIQ-native)
|
|
193
|
+
|
|
194
|
+
1. **`agent-config-missing-file`** — CLAUDE.md / AGENTS.md references
|
|
195
|
+
a repo file that doesn't exist; agent works with broken context.
|
|
196
|
+
2. **`agent-config-stack-contradiction`** — CLAUDE.md says "Go project"
|
|
197
|
+
but repo is Python; agent recommends wrong tooling every session.
|
|
198
|
+
3. **`agent-config-cross-platform-drift`** — Two platform configs
|
|
199
|
+
give contradictory instructions (Cursor ↔ Claude disagree on
|
|
200
|
+
primary language).
|
|
201
|
+
4. **`mcp-server-no-allowlist`** — MCP server declared with empty
|
|
202
|
+
permissions / wildcard allow = full shell access, no guardrail.
|
|
203
|
+
5. **`hook-script-missing`** — Hook declared in `.claude/settings.json`
|
|
204
|
+
but the script file doesn't exist; hook silently skipped.
|
|
205
|
+
6. **`agent-config-secret-literal`** — Secret token literal pasted
|
|
206
|
+
into CLAUDE.md / agent config as "example". Narrow secret scanning
|
|
207
|
+
scoped to our lane only (NOT broad repo secret scanning — use
|
|
208
|
+
gitleaks / truffleHog for that).
|
|
209
|
+
7. **`agent-config-deprecated-keys`** — Config uses keys the platform
|
|
210
|
+
removed in a later release (powered by our freshness manifest).
|
|
211
|
+
8. **`agent-config-dangerous-autoapprove`** — Auto-approve list
|
|
212
|
+
contains destructive patterns (`rm -rf *`, `git push --force`,
|
|
213
|
+
`drop table`). Never suppressed.
|
|
214
|
+
|
|
215
|
+
### Shallow-risk is a parallel lane — it does NOT affect the score
|
|
216
|
+
|
|
217
|
+
Findings emit through `auditResult.shallowRiskHints[]` and are
|
|
218
|
+
intentionally excluded from:
|
|
219
|
+
- `auditResult.score`
|
|
220
|
+
- `auditResult.organicScore`
|
|
221
|
+
- `auditResult.passed` / `failed` / `skipped`
|
|
222
|
+
- `auditResult.topNextActions`
|
|
223
|
+
- `auditResult.layerSummary.*.failed`
|
|
224
|
+
|
|
225
|
+
This keeps the governance pipeline stable while still surfacing
|
|
226
|
+
agent-config ↔ codebase red flags. Score-unchanged proof on
|
|
227
|
+
self-audit of the NERVIQ repo: governance score is **87** with and
|
|
228
|
+
without `--shallow-risk`; only `shallowRiskHints` differs (empty
|
|
229
|
+
vs. 17 hits).
|
|
230
|
+
|
|
231
|
+
### CLI UX
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
npx @nerviq/cli audit --shallow-risk # full audit + shallow risk
|
|
235
|
+
npx @nerviq/cli audit --shallow-risk-only # fast precommit mode
|
|
236
|
+
NERVIQ_SHALLOW_RISK=off npx @nerviq/cli audit --shallow-risk # kill switch
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Friendly banner rendered in text output and as a blockquote in
|
|
240
|
+
markdown:
|
|
241
|
+
|
|
242
|
+
> Shallow Risk mode (experimental, opt-in). NERVIQ checks 8 patterns
|
|
243
|
+
> that sit at the intersection of your AI agent configuration and
|
|
244
|
+
> your codebase — the kind of issues no generic scanner can find
|
|
245
|
+
> because they require understanding CLAUDE.md, .claude/settings.json,
|
|
246
|
+
> and similar files. For broader code-level security coverage, pair
|
|
247
|
+
> this with Semgrep, CodeQL, or a dedicated secret scanner.
|
|
248
|
+
|
|
249
|
+
### Competitive positioning (explicit)
|
|
250
|
+
|
|
251
|
+
NERVIQ `--shallow-risk` is **not** a replacement for Semgrep / ESLint
|
|
252
|
+
/ CodeQL / gitleiks / truffleHog / Dependabot — those tools work on
|
|
253
|
+
source code or dependency manifests. NERVIQ works on the bridge
|
|
254
|
+
between agent-declared intent and codebase reality. The 8 patterns
|
|
255
|
+
reflect that lane exclusively.
|
|
256
|
+
|
|
257
|
+
### Rendering in all output formats
|
|
258
|
+
|
|
259
|
+
- **JSON**: `auditResult.shallowRiskHints[]` — parallel to `results[]`.
|
|
260
|
+
- **Text**: separate `## Shallow Risk Hints (experimental, opt-in)`
|
|
261
|
+
block after `## Top next actions`, banner inline.
|
|
262
|
+
- **Markdown (`--format=markdown`)**: `### Shallow Risk (experimental,
|
|
263
|
+
opt-in)` section after `### Top next actions`, banner as blockquote,
|
|
264
|
+
each hint listed with severity / key / file:line.
|
|
265
|
+
- **JUnit (`--format=junit`)**: separate `<testsuite name="shallow-risk">`
|
|
266
|
+
so CI consumers can isolate or ignore it independently of the
|
|
267
|
+
governance suite.
|
|
268
|
+
- **CSV (`--format=csv`)**: hints appended as rows tagged
|
|
269
|
+
`layer=shallow-risk`. Contract documented in
|
|
270
|
+
`docs/integration-contracts.md` §7 and §8.1.
|
|
271
|
+
|
|
272
|
+
### Status: Experimental
|
|
273
|
+
|
|
274
|
+
Release: `Experimental`. Graduates to `Beta` after 30 days of real
|
|
275
|
+
telemetry with zero critical corpus-level false positives reported
|
|
276
|
+
and at least one external user reporting a pattern caught a real
|
|
277
|
+
issue. Graduates to `GA` after 50+ WAA using it on ≥5 distinct repos
|
|
278
|
+
each.
|
|
279
|
+
|
|
280
|
+
Reserved slots 9 and 10 are deliberately empty — they wait for 30
|
|
281
|
+
days of user telemetry to tell us which patterns users most want
|
|
282
|
+
that we didn't anticipate.
|
|
283
|
+
|
|
284
|
+
### Verified
|
|
285
|
+
|
|
286
|
+
- jest: **438/438** passing — this is the `438`-test verification baseline. (was 419 + 19 new: 16 shallow-risk
|
|
287
|
+
tests (positive + negative per pattern) + 3 format surface tests).
|
|
288
|
+
- canonical CLI tests: **162/162** passing.
|
|
289
|
+
- Guard coverage kept green: `claude-na-gates.test.js`,
|
|
290
|
+
`layer-coverage.test.js`, `framework-native.test.js`,
|
|
291
|
+
`audit-evidence.test.js`, `score-preview.test.js`, and the three
|
|
292
|
+
format tests.
|
|
293
|
+
- `npm pack --dry-run`: clean.
|
|
294
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
295
|
+
validation passed for v1.27.0.
|
|
296
|
+
- Self-audit smoke: score unchanged (87 with and without the flag),
|
|
297
|
+
17 shallow-risk hints found on the NERVIQ repo itself (mostly
|
|
298
|
+
`agent-config-missing-file` on `.claude/` docs).
|
|
299
|
+
|
|
300
|
+
### PP-08 gate
|
|
301
|
+
|
|
302
|
+
Added `fp_rate_threshold_shallow_risk: 0.10` lane in
|
|
303
|
+
`research/platform-parity-corpus.json`. Corpus FP measurement on
|
|
304
|
+
shallow-risk patterns is a separate follow-up task (not in this
|
|
305
|
+
release).
|
|
306
|
+
|
|
307
|
+
Evidence: `research/exp-cto-06-implementation-2026-04-14.md`.
|
|
308
|
+
|
|
309
|
+
## [1.26.0] - 2026-04-14
|
|
310
|
+
|
|
311
|
+
### Fixed — Framework-native verification depth (CTO-07)
|
|
312
|
+
|
|
313
|
+
Closes the trust-break documented in the 2026-04-08 UAT where Flutter
|
|
314
|
+
+ Swift projects got zero uplift from NERVIQ because valid verification
|
|
315
|
+
commands (`xcodebuild test`, `flutter test`, `gradle test`) were
|
|
316
|
+
treated as missing guidance, and mature Python ML + FastAPI repos
|
|
317
|
+
flattened because NERVIQ didn't recognise existing scaffolding
|
|
318
|
+
(pytest + `pyproject.toml` + poetry/uv + ruff/mypy).
|
|
319
|
+
|
|
320
|
+
Moves KPI memo §6.5 ("Are mobile, infra, and mature repos improving
|
|
321
|
+
with the same credibility as Node-oriented repos?") from NO → YES.
|
|
322
|
+
|
|
323
|
+
- `src/instruction-surfaces.js`: broadened surface bundle so repo
|
|
324
|
+
files like `pyproject.toml`, `Makefile`, `justfile`, `Podfile`,
|
|
325
|
+
`Cartfile`, `pubspec.yaml`, `Rakefile`, `build.gradle*`, and
|
|
326
|
+
`.github/workflows/*` count as verification evidence. Expanded
|
|
327
|
+
TEST/LINT/BUILD command patterns for Flutter (`flutter test`,
|
|
328
|
+
`flutter analyze`, `dart analyze`, `dart format`, `fvm flutter`),
|
|
329
|
+
iOS / Swift (`xcodebuild test`, `swift test`, `fastlane test`,
|
|
330
|
+
`swiftlint`, `swift-format lint`), Android (`./gradlew test`,
|
|
331
|
+
`./gradlew ktlintCheck`, `./gradlew detekt`), and Python (all of
|
|
332
|
+
`pytest`, `poetry run pytest`, `uv run pytest`, `pdm run pytest`,
|
|
333
|
+
`hatch run test`, `tox`, `nox`, `python -m pytest`, `python -m
|
|
334
|
+
unittest`, `ruff check`, `ruff`, `flake8`, `pylint`, `black
|
|
335
|
+
--check`, `mypy`, `pyright`, `pre-commit run`).
|
|
336
|
+
|
|
337
|
+
- `src/techniques/shared.js`: 10 new memoized stack helpers
|
|
338
|
+
(`hasIosXcodeProject`, `hasAndroidGradle`, `hasFlutterProject`,
|
|
339
|
+
`hasPythonPoetry`, `hasPythonUv`, `hasPythonPdm`, `hasPythonHatch`,
|
|
340
|
+
`hasFastApiProject`, `hasMlScaffolding`, `hasConfiguredTooling`).
|
|
341
|
+
These let stack-specific checks detect "this project HAS
|
|
342
|
+
verification wired up" directly from repo files rather than only
|
|
343
|
+
from CLAUDE.md / AGENTS.md mentions — legitimate evidence because
|
|
344
|
+
an agent working in the repo can observe these files itself.
|
|
345
|
+
|
|
346
|
+
### Re-audit — per-archetype uplift
|
|
347
|
+
|
|
348
|
+
| Archetype | Before | After | Δ | Framework FNs resolved |
|
|
349
|
+
|---|---:|---:|---:|---|
|
|
350
|
+
| Flutter mobile | 14 | 25 | **+11** | 4 → 1 (build cmd advisory only) |
|
|
351
|
+
| iOS Swift | 11 | 26 | **+15** | 4 → 0 |
|
|
352
|
+
| Python ML | 14 | 23 | **+9** | 4 → 1 |
|
|
353
|
+
| Python FastAPI | 11 | 21 | **+10** | 4 → 1 |
|
|
354
|
+
|
|
355
|
+
Average uplift: **+11.25 points**. 14/15 framework-native false
|
|
356
|
+
negatives flipped to pass/N/A; the residual 4 × `buildCommand` are
|
|
357
|
+
legitimately advisory (category (c)).
|
|
358
|
+
|
|
359
|
+
### What is NOT changed
|
|
360
|
+
|
|
361
|
+
- No new top-level checks. Catalog count stays at 2,441.
|
|
362
|
+
- No check semantics inverted.
|
|
363
|
+
- No scoring weights, severity values, or rating values touched.
|
|
364
|
+
- CTO-08 `layer` tags preserved on every check.
|
|
365
|
+
- Claude PP-06 calibration unaffected: `strict_false_positive_keys.
|
|
366
|
+
claude` stays empty; `claude-na-gates.test.js` passes unchanged.
|
|
367
|
+
|
|
368
|
+
### Verified
|
|
369
|
+
|
|
370
|
+
- jest: **419/419** passing — this is the `419`-test verification baseline. (was 403 + 16 new framework-native
|
|
371
|
+
regression tests organised by stack in
|
|
372
|
+
`test/framework-native.test.js`).
|
|
373
|
+
- canonical CLI tests: **162/162** passing.
|
|
374
|
+
- `npm pack --dry-run`: clean.
|
|
375
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
376
|
+
validation passed for v1.26.0.
|
|
377
|
+
|
|
378
|
+
Evidence: `research/exp-cto-07-framework-native-2026-04-14.md`
|
|
379
|
+
includes the full archetype survey, before/after re-audit, and
|
|
380
|
+
methodology note on the deterministic fixtures used in Phase 3.
|
|
381
|
+
|
|
382
|
+
## [1.25.0] - 2026-04-14
|
|
383
|
+
|
|
384
|
+
### Added — 5-layer scope clarity (CTO-08)
|
|
385
|
+
|
|
386
|
+
Every check in the NERVIQ audit is now tagged with exactly one of
|
|
387
|
+
four layers. Closes the boundary-blur gap documented in the
|
|
388
|
+
2026-04-14 CTO memo §6 ("Do evaluators understand the product
|
|
389
|
+
boundary before trust breaks?") and moves KPI question §6.2 from
|
|
390
|
+
PARTIAL → YES with measurable evidence. Source landed in commit
|
|
391
|
+
`a8676b1`; this commit packages the release.
|
|
392
|
+
|
|
393
|
+
The four layers:
|
|
394
|
+
|
|
395
|
+
- **`governance`** — agent configuration posture: presence, content,
|
|
396
|
+
and quality of agent-instruction files and platform settings.
|
|
397
|
+
Example: `claudeMdExists`, `geminiSettingsExists`, MCP server
|
|
398
|
+
declarations, hook presence.
|
|
399
|
+
- **`drift`** — cross-platform consistency and declared-vs-actual
|
|
400
|
+
alignment. Example: Harmony drift, Gemini propagation completeness,
|
|
401
|
+
rules consistency across surfaces.
|
|
402
|
+
- **`hygiene`** — repo-level cleanliness adjacent to agents (the
|
|
403
|
+
engineering baseline that makes an agent's job easier). Example:
|
|
404
|
+
`.gitignore`, CHANGELOG, SECURITY.md, LICENSE, Node version
|
|
405
|
+
pinning, editorconfig.
|
|
406
|
+
- **`shallow-risk`** — reserved for CTO-06 (agent-config ↔ codebase
|
|
407
|
+
boundary hints). No checks currently populate this layer; the
|
|
408
|
+
constant exists so formatters and downstream consumers know about
|
|
409
|
+
it for the future.
|
|
410
|
+
|
|
411
|
+
There is **no `deep-review` or `security` layer**, by design. NERVIQ
|
|
412
|
+
audits agent configuration and the cleanliness of the repo boundary
|
|
413
|
+
an agent operates inside. It does not perform dataflow analysis,
|
|
414
|
+
SAST, or general code review — those are out of scope and left to
|
|
415
|
+
dedicated tools. This is the contract that lets evaluators know
|
|
416
|
+
where our claim to ground-truth starts and stops.
|
|
417
|
+
|
|
418
|
+
### Final layer distribution (2,441 checks)
|
|
419
|
+
|
|
420
|
+
| Layer | Count | % |
|
|
421
|
+
|---|---:|---:|
|
|
422
|
+
| governance | 1,102 | 45.1% |
|
|
423
|
+
| drift | 39 | 1.6% |
|
|
424
|
+
| hygiene | 1,300 | 53.3% |
|
|
425
|
+
| shallow-risk | 0 (reserved) | 0% |
|
|
426
|
+
|
|
427
|
+
Disambiguation rules (codified in `src/audit/layers.js` and
|
|
428
|
+
`docs/integration-contracts.md` §8):
|
|
429
|
+
- "Does my agent know X?" → `governance`.
|
|
430
|
+
- "Do two places agree on X?" → `drift`.
|
|
431
|
+
- "Does the repo have standard engineering hygiene?" → `hygiene`.
|
|
432
|
+
- When in doubt, default to `hygiene` (a mild misclassification is
|
|
433
|
+
recoverable; a missing tag breaks the coverage contract).
|
|
434
|
+
|
|
435
|
+
### Surfaced in every output format
|
|
436
|
+
|
|
437
|
+
- **JSON**: `auditResult.results[].layer`,
|
|
438
|
+
`auditResult.topNextActions[].layer`, and a new
|
|
439
|
+
`auditResult.layerSummary` giving per-layer
|
|
440
|
+
`{ total, passed, failed, skipped }`.
|
|
441
|
+
- **Text**: "Coverage by layer:" summary block plus a small
|
|
442
|
+
`[layer]` prefix on failed-check names.
|
|
443
|
+
- **Markdown (`--format=markdown`)**: `layer` column in the failed-
|
|
444
|
+
checks table; `_layer: X_` suffix on each top-action checklist item.
|
|
445
|
+
- **JUnit (`--format=junit`)**: `layer="..."` attribute on every
|
|
446
|
+
`<testcase>`.
|
|
447
|
+
- **CSV (`--format=csv`)**: new `layer` column between `category`
|
|
448
|
+
and `rating`. Updated contract in `docs/integration-contracts.md` §7.
|
|
449
|
+
|
|
450
|
+
### Verified
|
|
451
|
+
|
|
452
|
+
- jest: **403/403** passing — this is the `403`-test verification baseline. (was 391 + 7 coverage tests + 5
|
|
453
|
+
format surface tests).
|
|
454
|
+
- canonical CLI tests: **162/162** passing.
|
|
455
|
+
- `npm pack --dry-run`: clean.
|
|
456
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
457
|
+
validation passed for v1.25.0.
|
|
458
|
+
|
|
459
|
+
Evidence: `research/exp-cto-08-layer-clarity-2026-04-14.md` includes
|
|
460
|
+
the full distribution, ambiguous-call log, and KPI mapping.
|
|
461
|
+
|
|
462
|
+
## [1.24.0] - 2026-04-14
|
|
463
|
+
|
|
464
|
+
### Fixed — Claude calibration debt resolved (CTO-09 / PP-06)
|
|
465
|
+
|
|
466
|
+
Eleven Claude audit checks that were systematically firing as
|
|
467
|
+
false-positives on repos that did not opt in to their respective
|
|
468
|
+
agent-config surfaces now return `N/A` (null) instead of `false`.
|
|
469
|
+
Previously these were captured in a post-hoc allowlist
|
|
470
|
+
(`platform-parity-fp-rules.json.strict_false_positive_keys.claude`);
|
|
471
|
+
now the checks are honest at source.
|
|
472
|
+
|
|
473
|
+
The affected keys:
|
|
474
|
+
|
|
475
|
+
- `claudeLocalMd`, `autoMemoryAwareness`, `importSyntax`
|
|
476
|
+
(in `src/techniques/instructions.js`) — N/A when the repo does
|
|
477
|
+
not opt in to the overrides/memory/import-syntax conventions.
|
|
478
|
+
`importSyntax` becomes a positive-signal check: it passes when
|
|
479
|
+
`@`-imports are present in CLAUDE.md, and is advisory only on
|
|
480
|
+
long (≥80 lines) CLAUDE.md files that would clearly benefit.
|
|
481
|
+
- `mcpServers`, `multipleMcpServers`, `context7Mcp`
|
|
482
|
+
(in `src/techniques/tools.js`) — N/A on repos that have no MCP
|
|
483
|
+
references anywhere. A new `_repoOptsInToMcp()` helper centralises
|
|
484
|
+
the detection.
|
|
485
|
+
- `dockerfile`, `dockerCompose`, `terraformFiles`, `hooksNotificationEvent`,
|
|
486
|
+
`subagentStopHook`
|
|
487
|
+
(in `src/techniques/automation.js`) — N/A when no infra signal
|
|
488
|
+
exists (Dockerfile/`.tf`/`docker-compose*`) or when
|
|
489
|
+
`.claude/settings.json` has no `hooks` block. New
|
|
490
|
+
`_repoHasInfraSignal()` and `_repoHasHooksBlock()` helpers.
|
|
491
|
+
|
|
492
|
+
### Impact
|
|
493
|
+
|
|
494
|
+
- **PP-08 CI gate threshold restored to 0.05** (from the 0.15
|
|
495
|
+
holding pattern). The `fp_rate_threshold_notes` in
|
|
496
|
+
`research/platform-parity-corpus.json` documents the resolution:
|
|
497
|
+
any drift above 0.05 is now a real regression, not a calibration
|
|
498
|
+
debt issue.
|
|
499
|
+
- **Claude strict-FP rate dropped from ~11.99% to 0.00%** on the
|
|
500
|
+
cleanly-cloned repos in the PP-08 corpus (8/9 — one long-path
|
|
501
|
+
checkout failure on Windows unrelated to CLI).
|
|
502
|
+
- **Per-repo total failures dropped by 6–10 checks each** on Claude
|
|
503
|
+
audits, matching the expected ~7.6 opt-in hits per repo that moved
|
|
504
|
+
from `false` → `null`.
|
|
505
|
+
- **`strict_false_positive_keys.claude` is now empty.** The post-hoc
|
|
506
|
+
allowlist is no longer needed.
|
|
507
|
+
|
|
508
|
+
### Verified
|
|
509
|
+
|
|
510
|
+
- jest: **391/391** passing — this is the `391`-test verification baseline. (was 369 + 22 new N/A-gate
|
|
511
|
+
regression tests in `test/claude-na-gates.test.js`, two per key).
|
|
512
|
+
- canonical CLI tests: **162/162** passing.
|
|
513
|
+
- `npm pack --dry-run`: clean.
|
|
514
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
515
|
+
validation passed for v1.24.0.
|
|
516
|
+
- PP-08 CI gate: all 6 platforms (claude, codex, cursor, gemini,
|
|
517
|
+
windsurf, aider) PASS at the restored 0.05 threshold.
|
|
518
|
+
|
|
519
|
+
Evidence: `research/exp-pp-06-claude-recalibration-debt-2026-04-14.md`
|
|
520
|
+
updated with a Resolution section at the top (per-key table,
|
|
521
|
+
before/after gate output, verification).
|
|
522
|
+
|
|
523
|
+
## [1.23.0] - 2026-04-14
|
|
524
|
+
|
|
525
|
+
### Added — Trust-recovery depth (CTO-04, CTO-05)
|
|
526
|
+
|
|
527
|
+
Ships the two deepest items from the 2026-04-14 CTO memo — the
|
|
528
|
+
evaluator-stated reasons trust breaks in real audits. Closing them
|
|
529
|
+
moves KPI questions §6.3 (file-level evidence) and §6.4 (score
|
|
530
|
+
impact before write) from NO/UNKNOWN → YES with verifiable evidence.
|
|
531
|
+
Formatter source landed in commit `e06ae64`; this commit packages
|
|
532
|
+
the release.
|
|
533
|
+
|
|
534
|
+
- **CTO-04 — File-level evidence (`file:line:snippet`).** Every
|
|
535
|
+
failed check that has a sensible file-level source now emits
|
|
536
|
+
`file`, `line`, and a `snippet` (2–5 lines of context, 300-char
|
|
537
|
+
cap) so markdown/junit/text outputs can point at real evidence
|
|
538
|
+
rather than abstract advice.
|
|
539
|
+
- New resolver registry in `src/audit/evidence.js` for the 20
|
|
540
|
+
highest-hitting check keys identified in a fresh self-audit.
|
|
541
|
+
- Survey result on self-audit of the nerviq repo: 0 of 23 failed
|
|
542
|
+
checks previously carried evidence; **9 of 23 now do**. The
|
|
543
|
+
remaining 14 are either category (c) — "absence-of-file"
|
|
544
|
+
checks like `claudeLocalMd` where a null pointer is the correct
|
|
545
|
+
semantic — or roll-ups where evidence would be misleading.
|
|
546
|
+
- Backlog of unresolved category (b) keys documented in the
|
|
547
|
+
evidence doc. 1 deferred (`skillUsesPaths`, blocked on CTO-06).
|
|
548
|
+
- Markdown formatter renders snippet as a fenced code block under
|
|
549
|
+
each checklist item; JUnit formatter appends it to the
|
|
550
|
+
`<failure>` body after `---`; CSV intentionally unchanged
|
|
551
|
+
(snippet newlines/commas would hurt downstream parsing).
|
|
552
|
+
|
|
553
|
+
- **CTO-05 — Score-impact preview before `--apply`.** Each
|
|
554
|
+
`topNextActions` item now carries `projectedScoreDelta`,
|
|
555
|
+
`projectedOrganicScoreDelta`, and `projectedScoreAfter` so the
|
|
556
|
+
user sees "this fix moves score 67 → 74 (+7 pts)" before any
|
|
557
|
+
write. Projection is computed by one O(1) recompute per top
|
|
558
|
+
action using the existing scoring function (no extra full
|
|
559
|
+
audits, no scoring-algorithm changes).
|
|
560
|
+
- Text output appends ` (+N pts → X/100)` per top action.
|
|
561
|
+
- Markdown formatter shows the same suffix inline in the
|
|
562
|
+
checklist.
|
|
563
|
+
- CSV adds two trailing columns
|
|
564
|
+
`projectedScoreDelta,projectedScoreAfter` — populated only
|
|
565
|
+
for rows whose key appears in `topNextActions` (projection is
|
|
566
|
+
per-top-action, not per-every-check); other rows leave both
|
|
567
|
+
columns empty. Contract documented in
|
|
568
|
+
`docs/integration-contracts.md` §7.
|
|
569
|
+
- JUnit intentionally unchanged (testcases don't naturally carry
|
|
570
|
+
scores).
|
|
571
|
+
|
|
572
|
+
### Verified
|
|
573
|
+
|
|
574
|
+
- jest: **369/369** passing — this is the `369`-test verification baseline. (was 354 + 9 new
|
|
575
|
+
evidence tests + 3 new score-preview tests + 3 markdown extensions
|
|
576
|
+
+ 1 junit extension + 2 csv extensions).
|
|
577
|
+
- canonical CLI tests: **162/162** passing.
|
|
578
|
+
- `npm pack --dry-run`: clean (213 files, 757 kB).
|
|
579
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
580
|
+
validation passed for v1.23.0.
|
|
581
|
+
|
|
582
|
+
Evidence: `research/exp-cto-04-05-trust-recovery-2026-04-14.md`
|
|
583
|
+
in the research repo (~263 lines) includes the full per-check
|
|
584
|
+
survey, worked projection example, markdown + CSV samples with
|
|
585
|
+
the new fields, and explicit mapping back to the 8 memo KPI
|
|
586
|
+
questions.
|
|
587
|
+
|
|
588
|
+
## [1.22.0] - 2026-04-14
|
|
589
|
+
|
|
590
|
+
### Added — CI output format pack (CTO-01, CTO-02, CTO-03)
|
|
591
|
+
|
|
592
|
+
Three new output formats for `nerviq audit`, designed to plug the CLI
|
|
593
|
+
straight into standard CI surfaces. Closes the "Markdown PR comment /
|
|
594
|
+
JUnit XML / CSV" gap called out in the 2026-04-14 CTO memo §8 — the
|
|
595
|
+
plumbing required before "no serious multi-agent repo merges without
|
|
596
|
+
a Nerviq check" is even claimable as positioning.
|
|
597
|
+
|
|
598
|
+
- **`--format=markdown` (CTO-01)** — GitHub-flavoured markdown
|
|
599
|
+
suitable for a PR comment. Includes a `## Score: N/100` header with
|
|
600
|
+
shields.io badge, a `### Top next actions` task-list checklist (up
|
|
601
|
+
to 5 items, each with severity + key + optional `file:line`), a
|
|
602
|
+
collapsible `<details>` block listing all failed checks in a pipe
|
|
603
|
+
table, and a `Generated by [Nerviq](https://nerviq.net)` footer.
|
|
604
|
+
Pipe characters inside cells are backslash-escaped. No raw HTML
|
|
605
|
+
beyond `<details>` / `<summary>`.
|
|
606
|
+
|
|
607
|
+
- **`--format=junit` (CTO-02)** — Jenkins-compatible JUnit XML.
|
|
608
|
+
`<testsuites name="nerviq" tests="N" failures="F" skipped="S">`
|
|
609
|
+
root, one `<testsuite>` per check category, one `<testcase>` per
|
|
610
|
+
check (`classname=category`, `name=key`). Failed checks emit
|
|
611
|
+
`<failure message="..." type="SEVERITY">` with body containing
|
|
612
|
+
`name [at file:line] [(sourceUrl)]`. Skipped checks emit `<skipped/>`.
|
|
613
|
+
All attribute values + text nodes XML-escape `& < > " '`. Parses
|
|
614
|
+
cleanly with GitHub Actions test reporter, GitLab JUnit reporter,
|
|
615
|
+
and Jenkins JUnit plugin.
|
|
616
|
+
|
|
617
|
+
- **`--format=csv` (CTO-03)** — RFC 4180 CSV. Header row
|
|
618
|
+
`key,id,name,category,rating,severity,passed,file,line,sourceUrl,fix`
|
|
619
|
+
followed by one row per check. Fields containing comma, double-quote,
|
|
620
|
+
CR, or LF are wrapped in double-quotes; internal double-quotes are
|
|
621
|
+
escaped by doubling. No UTF-8 BOM (avoids pandas / Excel friction).
|
|
622
|
+
LF line separator.
|
|
623
|
+
|
|
624
|
+
Wired into `bin/cli.js` `--format` switch alongside existing
|
|
625
|
+
`json|sarif|otel`. Format contracts documented in
|
|
626
|
+
`docs/integration-contracts.md` §7 as the stable consumer API for
|
|
627
|
+
downstream wrappers (GitHub Actions, Jenkins plugins, GitLab reporters,
|
|
628
|
+
dashboards) — bind to these shapes rather than scraping text output.
|
|
629
|
+
|
|
630
|
+
### Verified
|
|
631
|
+
|
|
632
|
+
- jest: **354/354** passing — this is the `354`-test verification baseline. (was 335 + 19 new format tests:
|
|
633
|
+
`test/format-markdown.test.js`, `test/format-junit.test.js`,
|
|
634
|
+
`test/format-csv.test.js` covering field shape, escaping rules,
|
|
635
|
+
edge cases like missing `file:line`, and full round-trip parse
|
|
636
|
+
on synthetic audit results).
|
|
637
|
+
- canonical CLI tests: **162/162** passing.
|
|
638
|
+
- `npm pack --dry-run`: clean (212 files, 754 kB).
|
|
639
|
+
- `node tools/validate-release-metadata.js --research <path>`:
|
|
640
|
+
validation passed for v1.22.0.
|
|
641
|
+
|
|
642
|
+
Evidence: `research/exp-cto-01-03-formats-2026-04-14.md` in the
|
|
643
|
+
research repo includes sample outputs and a GitHub Actions integration
|
|
644
|
+
recipe.
|
|
645
|
+
|
|
646
|
+
## [1.21.0] - 2026-04-14
|
|
647
|
+
|
|
648
|
+
### Calibrated (not certified) — Aider platform audit (PP-04)
|
|
649
|
+
|
|
650
|
+
Aider platform audit recalibrated against 10 real Aider-using repos
|
|
651
|
+
(`Aider-AI/aider`, `sysown/proxysql`, `Provenance-Emu/Provenance`,
|
|
652
|
+
`disler/always-on-ai-assistant`, `SquirrelJME/SquirrelJME`, `ad-si/tu`,
|
|
653
|
+
`Aider-AI/conventions`, `commit-0/commit0`, `roychri/mcp-server-asana`,
|
|
654
|
+
`attestate/kiwistand`).
|
|
655
|
+
|
|
656
|
+
Seven systematic 10/10 false-positives eliminated:
|
|
657
|
+
|
|
658
|
+
- `aiderUndoSafetyAware` (10/10 → 5/10)
|
|
659
|
+
- `aiderEditorModelConfigured` (10/10 → 0/10)
|
|
660
|
+
- `aiderWeakModelConfigured` (10/10 → 5/10)
|
|
661
|
+
- `aiderModelSettingsFileExists` (10/10 → 5/10)
|
|
662
|
+
- `aiderAiderignoreExists` (10/10 → 5/10)
|
|
663
|
+
- `aiderEnvFileExists` (10/10 → 5/10) — true FP: `.env` is gitignored;
|
|
664
|
+
now accepts `.env.example` / `.sample` / `.template`.
|
|
665
|
+
- `aiderAllConfigSurfacesPresent` (10/10 → 5/10) — true FP, same root cause.
|
|
666
|
+
|
|
667
|
+
Four additional ≥9/10 FPs sharply reduced: `aiderGitHooksForPreCommit` 9→3,
|
|
668
|
+
`aiderBrowserModeForDocs` 9→5, `aiderPlaywrightUrlScraping` 9→4,
|
|
669
|
+
`aiderVersionPinned` 9→0 (N/A on non-Python projects).
|
|
670
|
+
|
|
671
|
+
Six opt-in tuning knobs converted to pass-or-N/A semantics:
|
|
672
|
+
`aiderMapTokensConfigured`, `aiderEditFormatConfigured`,
|
|
673
|
+
`aiderArchitectModeAvailable`, `aiderCachePromptsEnabled`,
|
|
674
|
+
`aiderCommitPrefixConfigured`, `aiderVoiceModeAware` — they no longer
|
|
675
|
+
fire as advisories on repos that do not opt in.
|
|
676
|
+
|
|
677
|
+
Newly recognised conventions: `.aider.conf.yaml` (alt extension),
|
|
678
|
+
`AGENTS.md` / `CLAUDE.md` / `.ai/instructions.md` / `AIDER.md` as
|
|
679
|
+
alternative convention surfaces, `.env.example` / `.sample` / `.template`
|
|
680
|
+
as env-contract surfaces.
|
|
681
|
+
|
|
682
|
+
10-repo corpus moved from baseline 38–64 → final 44–82. 2/10 reach ≥70
|
|
683
|
+
(kiwistand 82, proxysql 72). The other 8 are below 70 due to documented
|
|
684
|
+
genuine content gaps in the audited repos themselves, not audit bugs.
|
|
685
|
+
|
|
686
|
+
**Why "calibrated, not certified":** same judgment as Windsurf (PP-03).
|
|
687
|
+
Strict-FP <5% bar is met; all-10-≥70 + mature-repos-≥73 bar is not,
|
|
688
|
+
because public Aider adoption above 500 stars is sparse. PPI stays at
|
|
689
|
+
**0.75** until corpus expansion.
|
|
690
|
+
|
|
691
|
+
### Fixed — release drift guard prefers `-main` worktrees
|
|
692
|
+
|
|
693
|
+
`tools/validate-release-metadata.js` now prefers `../nerviq-research-main`
|
|
694
|
+
and `../nerviq-site-main` when those worktrees exist, falling back to
|
|
695
|
+
`../nerviq-research` / `../nerviq-site` otherwise. When a parallel-agent
|
|
696
|
+
worktree on a feature branch occupies the canonical `nerviq-research`
|
|
697
|
+
directory, the drift guard was reading the feature-branch state and
|
|
698
|
+
refusing publish even though the actual main branch was synced.
|
|
699
|
+
Single-worktree setups are unaffected.
|
|
700
|
+
|
|
701
|
+
### Verified
|
|
702
|
+
|
|
703
|
+
- jest: **335/335** passing — this is the `335`-test verification baseline.
|
|
704
|
+
- canonical CLI tests: **162/162** passing.
|
|
705
|
+
- aider matrix: **315/315** passing (was 308, +6 PP-04 regression tests).
|
|
706
|
+
- `npm pack --dry-run`: clean.
|
|
707
|
+
- `node tools/validate-release-metadata.js --research <path>`: validation
|
|
708
|
+
passed for v1.21.0.
|
|
709
|
+
- PP-08 CI gate: all 6 platforms (claude, codex, cursor, gemini, windsurf,
|
|
710
|
+
aider) PASS at the current threshold.
|
|
711
|
+
|
|
712
|
+
## [1.20.1] - 2026-04-14
|
|
713
|
+
|
|
714
|
+
### Fixed — Critical: bin/cli.js shebang regression
|
|
715
|
+
|
|
716
|
+
`bin/cli.js` was missing the `#!/usr/bin/env node` shebang since v1.16.x (commit `40c27b8` on 2026-04-12, which fixed a macOS pipe-flush issue and accidentally dropped the shebang while restructuring the file). Without a shebang, `npx @nerviq/cli` failed on Linux and Mac because the OS fell back to `/bin/sh` and tried to execute JavaScript as a shell script (`//: Permission denied / Syntax error`). Windows installs were unaffected because npm generates `.cmd` wrappers that invoke `node` explicitly.
|
|
717
|
+
|
|
718
|
+
This was discovered when wiring up the PP-08 CI gate against `npx @nerviq/cli@1.20.0`. Likely affected production users on Linux/macOS doing fresh `npx` installs since 2026-04-12.
|
|
719
|
+
|
|
720
|
+
- Restored `#!/usr/bin/env node` as the first line of `bin/cli.js`.
|
|
721
|
+
- Added `test/bin-shebang.test.js` regression test that scans every `bin` entry in `package.json` and asserts the shebang exists. Will catch any future drop of the shebang line on any bin script.
|
|
722
|
+
|
|
723
|
+
### Fixed — claudeMdContent pointer expansion accepts `@` imports
|
|
724
|
+
|
|
725
|
+
`ProjectContext.claudeMdContent()` in `src/context.js` recognizes when CLAUDE.md is a thin pointer to another file (e.g., `AGENTS.md`) and expands it. The expansion regex `/^[a-zA-Z0-9_./-]+\.(md|txt|rst)$/` did not accept Claude Code's standard `@`-prefixed import syntax (`@AGENTS.md`, `@./docs/CODING.md`). Repos using the standard syntax saw all memory/prompting/quality checks fail because the auditor only saw the 1-line pointer.
|
|
726
|
+
|
|
727
|
+
Discovered while investigating the NERVIQ site's self-dogfood score (25 → 85 after this fix plus content enrichment).
|
|
728
|
+
|
|
729
|
+
- Updated regex to `/^@?\.?\/?[a-zA-Z0-9_./-]+\.(md|txt|rst)$/`; resolver strips `@` and `./` prefixes before `fileContent()`.
|
|
730
|
+
- Added `test/context.test.js` (+6 tests) covering raw content, bare-filename pointer, `@`-prefix, `@./`-prefix, nested-subdir, and null-fixture cases.
|
|
731
|
+
|
|
732
|
+
### Added — `prepublishOnly` lifecycle script
|
|
733
|
+
|
|
734
|
+
`package.json` now wires the existing pre-publish drift guard (`tools/pre-publish.js`) to npm's `prepublishOnly` lifecycle, in addition to the manual `prepublish:check` alias. `npm publish` now blocks automatically on dirty tree, branch drift, missing CHANGELOG entry, jest failure, or release-metadata drift. `npm pack --dry-run` does not trigger it (verified) so local development is unaffected.
|
|
735
|
+
|
|
736
|
+
### Calibrated (not certified) — Windsurf platform audit (PP-03)
|
|
737
|
+
|
|
738
|
+
Windsurf platform audit recalibrated against 10 real Windsurf-using repos (`grapeot/devin.cursorrules`, `hyper-mcp-rs/hyper-mcp`, `dxos/dxos`, `snowflakedb/gosnowflake`, `ShareX/XerahS`, `Brawl345/Image-Reverse-Search-WebExtension`, `rudrankriyam/Ichi`, `snyk/snyk-intellij-plugin`, `wepublish/wepublish`, `AmadeusITGroup/otter`).
|
|
739
|
+
|
|
740
|
+
Three systematic 10/10 false-positives eliminated:
|
|
741
|
+
- `windsurfMemoriesConfigured` — opt-in memories surface; now N/A when absent.
|
|
742
|
+
- `windsurfPackMcpRecommended` — opt-in MCP recommendation; now N/A when absent.
|
|
743
|
+
- `windsurfAdvisoryMcpHealth` — **real bug fix**: was reading the host's `os.platform()` and asserting it inside the audited repo's advisory. Now host-agnostic; uses repo-local evidence only (Windows/WSL gate generalised).
|
|
744
|
+
|
|
745
|
+
Other improvements: pointer/`@import` expansion for Windsurf instruction surfaces (`.windsurf/rules/*`, `WINDSURF.md`, pointer files like `.ai/instructions.md`), `.windsurfrules/` directory form support, fallback to `AGENTS.md`/`CLAUDE.md` for stack-marker generalisation, frontmatter realism for `.mdc` files.
|
|
746
|
+
|
|
747
|
+
10-repo corpus moved from baseline 9–70 → final 32–83. 7/10 ≥70. The 3 below 70 (hyper-mcp 69, Ichi 64, wepublish 60) are documented genuine content-depth gaps in the audited repos themselves, not audit bugs. The 32 outlier (`grapeot/devin.cursorrules`) uses the deprecated single-file `.windsurfrules` legacy format.
|
|
748
|
+
|
|
749
|
+
**Why "calibrated, not certified":** Gemini PP-02 cleared "all 10 ≥70" and "all mature (>10K stars) ≥73". Windsurf cleared the strict-FP <5% bar (the primary criterion) but Windsurf public adoption is thinner than Gemini at equivalent star thresholds — the largest mature repo found was 5.9K stars. PPI stays at **0.75** until corpus expansion produces a mature-repo set passing the score floor. No inflated PPI claim shipped.
|
|
750
|
+
|
|
751
|
+
### Verified
|
|
752
|
+
|
|
753
|
+
- jest: **335/335** passing (was 326 + 6 new context tests + 3 new shebang tests) — this is the `335`-test verification baseline.
|
|
754
|
+
- canonical CLI tests: **162/162** passing.
|
|
755
|
+
- matrix: **311/0** passing.
|
|
756
|
+
- `npm pack --dry-run`: clean.
|
|
757
|
+
- `node tools/validate-release-metadata.js --research ../nerviq-research-main`: validation passed.
|
|
758
|
+
|
|
759
|
+
## [1.20.0] - 2026-04-13
|
|
760
|
+
|
|
761
|
+
### Fixed — Gemini Platform Parity (PP-02, 10-repo calibration)
|
|
762
|
+
|
|
763
|
+
Gemini becomes the **5th certified platform** (PPI 0.625 → **0.75**). Calibrated against 10 real Gemini-using repos (google-gemini/gemini-cli, google-gemini/cookbook, GoogleCloudPlatform/generative-ai, obra/superpowers, JuliusBrussee/caveman, google/site-kit-wp, google/dotprompt, vdesabou/kafka-docker-playground, OthmanAdi/planning-with-files, mscraftsman/generative-ai).
|
|
764
|
+
|
|
765
|
+
Key calibrations:
|
|
766
|
+
- `_expandGeminiMdImports` resolves `@path.md` imports and single-line-pointer `GEMINI.md` files (observed in google/dotprompt).
|
|
767
|
+
- Fallback chain for Gemini instruction surface: AGENTS.md → CLAUDE.md → `.gemini/styleguide.md` (Gemini Code Assist convention).
|
|
768
|
+
- `isMcpOnlySettings` helper: 5 CLI-behaviour checks go N/A on MCP-only `.gemini/settings.json`.
|
|
769
|
+
- `geminiSettingsExists` / `geminiCommandsExist` now N/A when the directory is absent rather than flagging a failure — these surfaces are opt-in.
|
|
770
|
+
- Broadened `docsBundle` to accept AGENTS/CLAUDE/CONTRIBUTING/ARCHITECTURE/DEVELOPMENT as documentation evidence.
|
|
771
|
+
- `geminiEnvApiKey` credits ADC, Vertex AI, `gemini auth`, and service-account flows (not just `GEMINI_API_KEY`).
|
|
772
|
+
- Tightened `geminiPropagationCompleteness`: the bare word "skills" was firing FPs.
|
|
773
|
+
- **Bug fix:** `context.fileName` can legally be an array per the Gemini CLI schema. `path.join` crashed with `TypeError` on `google/site-kit-wp`. Now handled.
|
|
774
|
+
|
|
775
|
+
### Measured (strict FP <5% across 10-repo corpus)
|
|
776
|
+
|
|
777
|
+
| Repo | Stars | Before | After |
|
|
778
|
+
|---|---|---|---|
|
|
779
|
+
| obra/superpowers | 148K | 73 | **88** |
|
|
780
|
+
| google-gemini/gemini-cli | 101K | 74 | **89** |
|
|
781
|
+
| JuliusBrussee/caveman | 21K | 75 | **94** |
|
|
782
|
+
| OthmanAdi/planning-with-files | 18K | 72 | **73** |
|
|
783
|
+
| google-gemini/cookbook | 17K | 73 | **94** |
|
|
784
|
+
| GoogleCloudPlatform/generative-ai | 17K | 73 | **88** |
|
|
785
|
+
| google/site-kit-wp | 1.4K | crash | **78** |
|
|
786
|
+
| vdesabou/kafka-docker-playground | 778 | 68 | **83** |
|
|
787
|
+
| google/dotprompt | 507 | 64 | **75** |
|
|
788
|
+
| mscraftsman/generative-ai | 206 | 64 | **70** |
|
|
789
|
+
|
|
790
|
+
All 10 repos ≥ 70; all 6 mature repos (>10K stars) ≥ 73.
|
|
791
|
+
|
|
792
|
+
- **Gemini Platform Parity: certified**. PPI: 0.625 → **0.75** (Claude + Cursor + Codex + Copilot + Gemini).
|
|
793
|
+
|
|
794
|
+
326/326 tests pass (+2 PP-02 regressions on top of v1.19.0's 324) — this is the `326`-test verification baseline.
|
|
795
|
+
|
|
796
|
+
## [1.19.0] - 2026-04-13
|
|
797
|
+
|
|
798
|
+
### Added
|
|
799
|
+
- **EXP-04: `nerviq audit --fix` autofix flow**. `audit --fix` now runs the audit, applies fixable critical fixes, writes rollback manifests for successful writes, and re-audits before returning an exit code.
|
|
800
|
+
- **Autofix docs**. Added `docs/autofix.md` with command examples, safety behavior, and exit-code semantics for the new one-shot flow.
|
|
801
|
+
- **GOV-03: Time-to-First-Value benchmark** (`tools/ttfv-benchmark.py`). Measured harness across 4×4 install/repo combos; verdict on "<2 min" claim: TRUE (slowest median 16.1s on npx cold × nerviq-research).
|
|
802
|
+
|
|
803
|
+
### Changed
|
|
804
|
+
- **Shared fix engine now covers instruction-surface autofix**. Missing `CLAUDE.md`, verification guidance, and safe hygiene templates can now be applied through the same fix pipeline used by the CLI write paths.
|
|
805
|
+
|
|
806
|
+
### Tests
|
|
807
|
+
- Added `test/audit-fix.test.js` coverage for dry-run, auto-apply, rollback artifacts, `DO NOT AUTOEDIT` safety skips, exit-code handling, and hygiene rollback verification.
|
|
808
|
+
|
|
809
|
+
324/324 tests pass.
|
|
810
|
+
|
|
811
|
+
## [1.18.0] - 2026-04-13
|
|
812
|
+
|
|
813
|
+
### Fixed — Copilot Platform Parity (PP-01, 10-repo calibration)
|
|
814
|
+
|
|
815
|
+
- **Copilot audit now recognizes real-world repo conventions.** Calibrated against 10 active Copilot-using repos (home-assistant/core, block/goose, microsoft/vscode, astral-sh/uv, microsoft/playwright, langchain-ai/langchain, microsoft/typescript-go, microsoft/semantic-kernel, dotnet/aspire, github/awesome-copilot).
|
|
816
|
+
- **JSONC tolerance in `.vscode/settings.json`**: parser now strips comments/trailing commas before evaluation (Copilot/VSCode honor JSONC; strict-JSON parsing produced false CP-B06 failures).
|
|
817
|
+
- **Context fallback for AGENTS.md / CLAUDE.md**: repos that centralize agent guidance in AGENTS.md or CLAUDE.md at repo root are no longer penalized for `.github/copilot-instructions.md` substance checks.
|
|
818
|
+
- **Stack-docs bundle helper**: 45 stack/domain checks now accept a documented bundle of per-stack signals (pyproject.toml + ruff.toml, Cargo.toml + rustfmt.toml, go.mod + golangci.yml, etc.) rather than requiring a single canonical file.
|
|
819
|
+
|
|
820
|
+
### Measured (strict FP rate < 5% across 10-repo corpus)
|
|
821
|
+
|
|
822
|
+
| Repo | Stars | Before | After |
|
|
823
|
+
|---|---|---|---|
|
|
824
|
+
| home-assistant/core | 86K | 42 | **76** |
|
|
825
|
+
| block/goose | 41K | 41 | **76** |
|
|
826
|
+
| microsoft/vscode | 183K | 46 | **61** |
|
|
827
|
+
| astral-sh/uv | 83K | 28 | **75** |
|
|
828
|
+
| microsoft/playwright | 86K | 46 | **66** |
|
|
829
|
+
| langchain-ai/langchain | 133K | 23 | **65** |
|
|
830
|
+
| microsoft/typescript-go | 25K | — | **66** |
|
|
831
|
+
| microsoft/semantic-kernel | 27K | 33 | **53** |
|
|
832
|
+
| dotnet/aspire | 6K | 35 | **59** |
|
|
833
|
+
| github/awesome-copilot | — | 45 | **59** |
|
|
834
|
+
|
|
835
|
+
All 10 repos ≥ 40; all 9 mature repos (>10K stars) ≥ 53.
|
|
836
|
+
|
|
837
|
+
- **Copilot Platform Parity: certified**. PPI: 0.5 → **0.625** (Claude + Cursor + Codex + Copilot).
|
|
838
|
+
|
|
839
|
+
### Added
|
|
840
|
+
- EXPERIMENTAL qualifiers surfaced consistently on all user-facing Synergy mentions in README, docs/why-nerviq.md, docs/api-reference.md (SYN-04 audit).
|
|
841
|
+
|
|
842
|
+
317/317 tests pass.
|
|
843
|
+
|
|
844
|
+
## [1.17.3] - 2026-04-12
|
|
845
|
+
|
|
846
|
+
### Fixed — Codex Platform Parity (Issue #35, 10-repo scale-up)
|
|
847
|
+
|
|
848
|
+
- **Hook checks now require Codex-specific evidence**. hooksClaimed() previously matched any generic 'hook' mention in AGENTS.md — triggering FPs on git hooks, React hooks, or dependency names like 'hookable'. Now requires .codex/hooks/, .codex/hooks.json, [hooks]/codex_hooks in config.toml, specific Codex event names (SessionStart, PreToolUse, PostToolUse, UserPromptSubmit), or explicit 'codex hooks' phrase. Fixes jessfraz/dotfiles, ModelEngine-Group/fit-framework, finbarr/yolobox.
|
|
849
|
+
- **codexPackRecommendationQuality accepts .NET / Gradle manifests**. Added .sln, .slnx, .csproj, .fsproj, .vbproj, Directory.Packages.props, Directory.Build.props, global.json, gradlew. Fixes Megabit/Blazorise.
|
|
850
|
+
- **codexNoInstructionContradictions ignores line-ending guidance**. CRLF/LF/trailing-newline/EOF rules are style preferences, not logical contradictions.
|
|
851
|
+
- **codexAgentsMd accepts .codex/AGENTS.md**. Some repos store AGENTS.md inside .codex/.
|
|
852
|
+
|
|
853
|
+
### Measured
|
|
854
|
+
- jessfraz/dotfiles: 50 → 67 (hook FPs removed, +17 points)
|
|
855
|
+
- Codex strict FP rate: 5.98% → <5% on 10-repo scale-up
|
|
856
|
+
- **Codex Platform Parity: certified**. PPI: 0.375 → **0.5** (Claude + Cursor + Codex)
|
|
857
|
+
|
|
858
|
+
315/315 tests pass.
|
|
859
|
+
|
|
860
|
+
Closes #35
|
|
861
|
+
|
|
862
|
+
## [1.17.2] - 2026-04-12
|
|
863
|
+
|
|
864
|
+
### Fixed
|
|
865
|
+
- **`.codex/AGENTS.md` now recognized as a valid Codex instruction surface**. `agentsMdPath()` previously only checked root `AGENTS.md`, missing the emerging pattern of keeping Codex instructions inside `.codex/` (e.g., jessfraz/dotfiles stores a 12KB AGENTS.md there). This fix cascades to every check that reads `agentsContent()`, including `codexPackRecommendationQuality` — the last remaining FP in Codex re-validation.
|
|
866
|
+
|
|
867
|
+
### Measured
|
|
868
|
+
- jessfraz/dotfiles: 47 → 50, `codexPackRecommendationQuality` FAIL → PASS
|
|
869
|
+
- Codex strict FP rate: <5% across both re-validation repos → ready to scale to 10
|
|
870
|
+
|
|
871
|
+
## [1.17.1] - 2026-04-12
|
|
872
|
+
|
|
873
|
+
### Fixed — Platform Parity re-validation (after v1.17.0)
|
|
874
|
+
|
|
875
|
+
- **codexPythonPackageStructure (CX-PY19)**: Now probes common package layouts directly via filesystem scan instead of relying on `ctx.files` (which only lists root entries). Correctly detects `src/<package>/__init__.py` and flat `<package>/__init__.py` layouts. Fixes false negative on openai/openai-agents-python.
|
|
876
|
+
- **codexPackRecommendationQuality (CX-N03)**: Returns N/A for dotfiles/config-only repos (detected via 2+ signals from `.zshrc`, `.bashrc`, `.vimrc`, `.tmux.conf`, `.gitconfig`, `install.sh`, `bootstrap.sh`). Pack recommendations are not meaningful for non-code repos.
|
|
877
|
+
- **cursorBugbotEnabled (CU-J01)**: Severity downgraded medium → low. Returns N/A unless repo shows BugBot evidence (bugbot config file, `.github/workflows` reference, or docs mention). BugBot is an optional Cursor enterprise feature — no sense failing every repo that doesn't use it.
|
|
878
|
+
|
|
879
|
+
### Measured
|
|
880
|
+
- **PP-02 Codex**: openai-agents-python 72 → 73. 2 remaining FPs resolved.
|
|
881
|
+
- **PP-02 Cursor**: CU-J01 no longer fires on every repo with rules. Strict FP rate 4.9% → 0%.
|
|
882
|
+
|
|
883
|
+
## [1.17.0] - 2026-04-12
|
|
884
|
+
|
|
885
|
+
### Fixed — Cursor (from Platform Parity audit, Issue #32)
|
|
886
|
+
- **CU-A01 (cursorRulesExist)**: Now follows file-redirect pattern. When `.cursor/rules` is a text file pointing to another path (e.g., `agents/rules/`), the rules are read from the redirect target. Fixes false negative on cal.com-style layouts.
|
|
887
|
+
- **CU-A02 (cursorNoLegacyCursorrules)**: Returns N/A when repo has zero Cursor configuration. Fixes the calibration inversion where no-config repos outscored legacy-format repos.
|
|
888
|
+
- **CU-C01 (cursorPrivacyMode)**: Severity downgraded from `critical` to `low`. Returns N/A when no rules exist. Privacy Mode is stored in SQLite state.vscdb and not meaningfully auditable from repo files.
|
|
889
|
+
|
|
890
|
+
### Fixed — Codex (from Platform Parity audit, Issue #33)
|
|
891
|
+
- **codexAgentsArchitecture (CX-A04)**: Expanded heading recognition to include "Project Structure Guide", "Repo Structure", "Repository Layout", "Codebase Guide", "Key Directories" and enumerated directory maps. Fixes false negative on openai/openai-agents-python.
|
|
892
|
+
- **codexCliAuthCredentialsStoreExplicit (CX-B12)**: Tightened managed-machine heuristic to require explicit terms (`managed device`, `shared workstation`, `multi-user host`, `VDI`, `kiosk`, `enterprise-managed`). No longer triggers on generic words like "shared utilities" or "server-managed".
|
|
893
|
+
- **codexMcpPresentIfRepoNeedsExternalTools (CX-F01)**: Returns N/A for SDK/library repos (detected via package manifest + README patterns). SDKs document integrations without needing project-scoped MCP.
|
|
894
|
+
- **codexSkillsHaveMetadata**: Now accepts YAML frontmatter (`name`, `description`) as valid metadata. Fixes false negative on repos using OpenAI-style SKILL.md.
|
|
895
|
+
- **codexPythonFormatterConfigured (CX-PY08)**: Accepts broader Ruff setups (any `[tool.ruff]` section, not just `[tool.ruff.format]`), yapf, autopep8, and standalone config files.
|
|
896
|
+
- **codexPythonFastapiEntryDocumented (CX-PY10)**: Returns N/A when FastAPI appears only in examples/dev deps. Also checks AGENTS.md for entry point documentation.
|
|
897
|
+
- **codexPythonMigrationsDocumented (CX-PY11)**: Returns N/A for SDK/library repos and when repo has no DB dependencies.
|
|
898
|
+
- **codexPythonPackageStructure (CX-PY19)**: Path-separator-agnostic regex works correctly on Windows.
|
|
899
|
+
- **codexPackRecommendationQuality (CX-N03)**: Removed `package.json` as universal requirement. Now accepts any primary manifest (pyproject.toml, Cargo.toml, go.mod, Gemfile, flake.nix, Makefile, etc.). Returns N/A when no signals exist.
|
|
900
|
+
|
|
901
|
+
### Measured
|
|
902
|
+
- **PP-02/PP-03 Cursor**: FP rate 15% → <5% after fixes. Score range 14–76 → 20–68 (still differentiated).
|
|
903
|
+
- **PP-02/PP-03 Codex**: Strict FP 27.8% → <5% after fixes. openai-agents-python 65 → 72.
|
|
904
|
+
- **Platform Parity Index (PPI)**: 0.125 → 0.375 (Claude + Cursor + Codex validated).
|
|
905
|
+
|
|
906
|
+
## [1.16.0] - 2026-04-12
|
|
907
|
+
|
|
908
|
+
### Added
|
|
909
|
+
- **MOAT-01 — Harmony-first default onboarding**: When `nerviq audit` runs on a repo with 2+ configured AI platforms and no explicit `--platform`, the CLI now prints a one-line Harmony Score + drift summary *before* the single-platform audit. Cross-platform alignment becomes the first impression, in line with the durable moat positioning.
|
|
910
|
+
- **`--no-harmony-first` flag**: Suppresses the new Harmony header for users who want strictly single-platform output.
|
|
911
|
+
- **`harmony` envelope in `audit --json`**: On multi-platform repos, JSON output now includes `{ harmony: { score, driftCount, platforms } }` at the root, alongside the existing per-platform fields.
|
|
912
|
+
|
|
913
|
+
### Changed
|
|
914
|
+
- **FB-05 — framework-aware fix rewriting**: On repos where no Node/JS stack is detected (Python, Go, Rust, Ruby, Java/Kotlin, Elixir, .NET), failure-message recommendations no longer hard-code `npm test` / `npm ci` / `npm install`. The audit post-processes `fix` text and substitutes the stack-appropriate equivalent (e.g. `pytest`, `go test ./...`, `cargo test`, `bundle exec rspec`, `./gradlew test`, `mix test`, `dotnet test`). No change on Node repos.
|
|
915
|
+
- **Release-sync surfaces now reflect the `315`-test verification baseline** (was 307 in v1.15.0). `test/harmony-first.test.js` (5 cases) covers MOAT-01; `test/framework-aware-fixes.test.js` (3 cases) covers FB-05.
|
|
916
|
+
|
|
917
|
+
## [1.15.0] - 2026-04-11
|
|
918
|
+
|
|
919
|
+
### Added
|
|
920
|
+
- **`--dir` flag**: Audit any directory without changing cwd (`nerviq audit --dir /path/to/repo`).
|
|
921
|
+
- **Opt-in telemetry foundation**: Anonymous local usage tracking for audit, harmony-audit, and setup commands. Activated only when `NERVIQ_TELEMETRY=1` is set. No data leaves the machine.
|
|
922
|
+
|
|
923
|
+
### Fixed
|
|
924
|
+
- **`--dir` flag was silently ignored**: The flag was parsed but not recognized as a value flag, causing `nerviq audit --dir /path` to always audit the current directory instead of the target. Critical fix for CI and scripted usage.
|
|
925
|
+
- **CLAUDE.md reference following**: When CLAUDE.md is short and contains a file reference (e.g., `AGENTS.md`), the referenced file is now read and included in content checks. Fixes false negatives on projects like home-assistant/core.
|
|
926
|
+
- **Build/test/lint checks use repo scope**: Quality checks now read all instruction surfaces (AGENTS.md, .cursorrules, copilot-instructions.md) instead of only CLAUDE.md.
|
|
927
|
+
- **testCoverage regex expanded**: Now matches "## Testing", "writing tests", "run tests", and "test command" patterns.
|
|
928
|
+
- **CHANGELOG check accepts variants**: Now recognizes CHANGES.md, HISTORY.md, NEWS.md in addition to CHANGELOG.md.
|
|
929
|
+
|
|
930
|
+
### Measured
|
|
931
|
+
- **External repo audit (EXP-11)**: 10 popular repos (213K combined stars). Score range: 15–59. FP rate: ~2–4%.
|
|
932
|
+
|
|
933
|
+
## [1.14.0] - 2026-04-11
|
|
934
|
+
|
|
935
|
+
### Added
|
|
936
|
+
- **Harmony Score standalone command**: `nerviq harmony-score` outputs 0-100 cross-platform alignment score with `--badge` (shields.io markdown), `--threshold N` (CI gate with exit code 1 on failure), `--quiet` (score number only for piping), and `--json` (full platform breakdown).
|
|
937
|
+
- **Harmony Demo**: `nerviq harmony-demo` creates a temporary multi-platform project (Claude + Cursor + Copilot) with intentional drift and runs a live harmony audit — zero setup required.
|
|
938
|
+
- **Cross-platform CI matrix**: CI now runs on 3 OS (Ubuntu, Windows, macOS) x 3 Node versions (18, 20, 22) for 9 total verification combinations.
|
|
939
|
+
|
|
940
|
+
## [1.13.0] - 2026-04-10
|
|
941
|
+
|
|
942
|
+
### Added
|
|
943
|
+
- **Self-audit compliance**: CLAUDE.md now includes XML constraint blocks, mermaid architecture diagram, project description, lint command reference, and trust boundary — self-audit score 73→84.
|
|
944
|
+
- **Hardened platform freshness**: all 8 platforms now have version-specific freshness coverage in the check engine.
|
|
945
|
+
- **Cross-surface contract regression**: a new regression pack validates that public integration contracts, API docs, and MCP transport docs stay consistent across releases.
|
|
946
|
+
|
|
947
|
+
### Changed
|
|
948
|
+
- **Flagship CLAUDE.md refactored**: instruction surface is now concise, modular, and follows the patterns Nerviq recommends to users.
|
|
949
|
+
- **Audit and setup modules split**: `audit.js` split into recommendation + instruction modules; `setup.js` split into analysis + runtime modules — cleaner boundaries, same public API.
|
|
950
|
+
- **HTTP API docs separated from MCP transport**: each integration surface now has its own documentation entry point.
|
|
951
|
+
|
|
952
|
+
### Fixed
|
|
953
|
+
- **CI token gating**: research metadata validation is now gated on repo token, preventing false failures in forks and public CI.
|
|
954
|
+
- **Live site metadata guard**: relaxed rendered-HTML guard to support Vercel's dynamic page output without spurious drift warnings.
|
|
955
|
+
|
|
956
|
+
## [1.12.0] - 2026-04-09
|
|
957
|
+
|
|
958
|
+
### Added
|
|
959
|
+
- **Adaptive governance guidance**: `augment` / `suggest-only` now classify repo archetypes, recommend operating profiles, and emit adopt / defer / ignore decisions with explicit explainability fields.
|
|
960
|
+
- **Continuous operating mode**: Nerviq now supports managed baselines, diff-aware drift mode for CI / PR / watch flows, named upgrade campaigns, lifecycle snapshot milestones, and expiry-backed exception workflows.
|
|
961
|
+
- **Behavioral drift outcome layer**: `deep-review --behavioral` now provides an opt-in local report for structural drift, intent-vs-outcome mismatches, and behavioral snapshots over time.
|
|
962
|
+
- **Org and integration standard surfaces**: added org policy inheritance, fleet score semantics, public integration contracts, first-tier integration gate docs, category definition kit, and a public benchmark corpus.
|
|
963
|
+
|
|
964
|
+
### Changed
|
|
965
|
+
- **Proof quality is deeper and more specific**: high-volume source URLs now point to more relevant official documentation pages instead of generic roots.
|
|
966
|
+
- **Claude techniques are now modularized internally**: the legacy `src/techniques.js` monolith was split into 12 fragments plus shared helpers, while keeping the public export contract unchanged.
|
|
967
|
+
|
|
968
|
+
### Fixed
|
|
969
|
+
- **GitHub Actions contract stability**: org-scan JSON output now flushes safely in CI, modern action runtimes are aligned, and workflow stability remains green on Node 18 and Node 20.
|
|
970
|
+
- **Public surfaces stay synchronized with shipped verification**: release-facing docs and site examples now reflect the current `307`-test verification baseline and `1.12.0` API/version examples.
|
|
971
|
+
|
|
972
|
+
## [1.11.0] - 2026-04-09
|
|
973
|
+
|
|
974
|
+
### Changed
|
|
975
|
+
- **Instruction budget warnings now speak in tokens**: large instruction-file warnings use approximate token counts instead of raw byte thresholds, making context-window guidance more aligned with real model pressure.
|
|
976
|
+
- **Deny-rule evaluation now normalizes paths consistently**: symlink aliases collapse into one effective deny rule, repo-escape traversal patterns no longer inflate posture, and explicit absolute-path deny rules remain visible as intentional coverage.
|
|
977
|
+
|
|
978
|
+
### Fixed
|
|
979
|
+
- **Claude deny-rule parity across audit surfaces**: audit techniques, anti-pattern detection, and suggest-only analysis now share the same deny-rule normalization contract instead of evaluating path patterns differently.
|
|
980
|
+
- **GitHub automation contract stability**: workspace audit JSON is now CI-safe and Aider freshness output matches the shared `fresh` / `stale` workflow contract.
|
|
981
|
+
- **Jest suite alignment with current contracts**: server envelope responses and bootstrap copy are now validated against the live `{ data, meta }` API surface and current history/suggest-rules messaging.
|
|
982
|
+
|
|
983
|
+
## [1.10.0] - 2026-04-09
|
|
984
|
+
|
|
985
|
+
### Changed
|
|
986
|
+
- **Product boundary clarified across product surfaces**: CLI, docs, and site now consistently position Nerviq as AI agent governance / configuration intelligence rather than a full SAST replacement.
|
|
987
|
+
- **Score semantics aligned end to end**: live audit, snapshot, benchmark, dashboard, workspace, and harmony scores are now labeled distinctly so one repo cannot appear contradictory without explanation.
|
|
988
|
+
- **Monorepo workspace semantics clarified**: `audit --workspace` now separates root governance health from workspace aggregate/package coverage and explains the relationship directly in CLI output.
|
|
989
|
+
|
|
990
|
+
### Fixed
|
|
991
|
+
- **Audit vs anti-pattern parity**: shared instruction-surface detection now keeps verification guidance and anti-pattern reporting in sync across `.claude/commands`, `AGENTS.md`, and related instruction docs.
|
|
992
|
+
- **Cold-start lifecycle guidance**: `history`, `compare`, `trend`, and `suggest-rules` now bootstrap users with actionable next steps instead of near-empty no-data output.
|
|
993
|
+
- **Framework-aware verification detection**: Flutter, Swift/Xcode, Python, Go, and .NET verification command variants now count correctly, reducing false negatives on mature repos.
|
|
994
|
+
|
|
995
|
+
### Docs
|
|
996
|
+
- **Proof and first-run surfaces matured**: published beta case studies, public before/after proof repo, Harmony-first homepage, simplified six-step getting-started flow, clearer Harmony-vs-Synergy maturity messaging, and reduced concept-load across first-touch docs.
|
|
997
|
+
|
|
998
|
+
## [1.9.0] - 2026-04-07
|
|
999
|
+
|
|
1000
|
+
### Added
|
|
1001
|
+
- **Dockerfile best practices checks** (#8): multi-stage build detection, .dockerignore validation (node_modules + .env), no secrets in build args
|
|
1002
|
+
- **Terraform check category** (#10): terraform fmt in CI/pre-commit, .terraform in .gitignore, state file not committed, remote backend configured
|
|
1003
|
+
- **i18n / Spanish language support** (#12): new `src/i18n.js` module, `--lang` CLI flag, Spanish locale (`es.json`). Usage: `nerviq audit --lang es`
|
|
1004
|
+
|
|
1005
|
+
### Fixed
|
|
1006
|
+
- **P0 freshness URLs** (#14-#20): fixed 41 broken documentation URLs across all 7 platforms
|
|
1007
|
+
- Claude Code: `docs.anthropic.com` → `code.claude.com/docs`
|
|
1008
|
+
- Cursor: `docs.cursor.com` → `cursor.com/docs`, background-agent → cloud-agent
|
|
1009
|
+
- Copilot: restructured to `how-tos/`, `concepts/`, `responsible-use/`
|
|
1010
|
+
- Gemini: `ai.google.dev` → `google-gemini.github.io/gemini-cli/`
|
|
1011
|
+
- Windsurf: rules merged into memories, MCP moved to `plugins/cascade/mcp`
|
|
1012
|
+
- OpenCode: added `/docs/` prefix to config/plugins/permissions paths
|
|
1013
|
+
- Codex: `docs.codex.ai` → `developers.openai.com/codex`
|
|
1014
|
+
- All 53 P0 sources now have `verifiedAt: 2026-04-07`
|
|
1015
|
+
- Check count: 2,431 → 2,438 (7 new checks)
|
|
1016
|
+
|
|
1017
|
+
## [1.8.9] - 2026-04-06
|
|
1018
|
+
|
|
1019
|
+
### Fixed (Expert Round — FAANG-level review)
|
|
1020
|
+
- **Setup preserves custom deny rules**: merge via union+deduplicate instead of overwrite — existing deny rules never lost
|
|
1021
|
+
- **Setup creates rollback artifacts**: setup operations now have rollback support like fix/apply
|
|
1022
|
+
- **protect-secrets covers Bash tool**: hook matcher expanded to `Read|Write|Edit|Bash`, checks `tool_input.command` for `cat .env`, `grep .env`, `base64 .env` etc.
|
|
1023
|
+
- **audit --out writes file**: `--out` flag now works for the audit command (was silently ignored)
|
|
1024
|
+
- **scan filters irrelevant categories**: stack-specific categories (flutter, ruby, etc.) hidden when 0 checks pass and stack not detected
|
|
1025
|
+
- **profile load supports built-in profiles**: `profile load read-only` now works by falling back to governance profiles
|
|
1026
|
+
- **Certification requires security gates**: Bronze needs gitIgnoreEnv+secretsProtection passing, Silver adds no critical anti-patterns, Gold needs harmony>=80
|
|
1027
|
+
- **SDK input validation**: all functions throw on null/invalid dir, unknown platform, empty description
|
|
1028
|
+
- **SDK TypeScript definitions**: added `passing`, `total`, `average` to type interfaces
|
|
1029
|
+
- **REST API consistent envelope**: all endpoints return `{ data, meta: { version, timestamp } }` format
|
|
1030
|
+
- **REST API CORS headers**: `Access-Control-Allow-Origin: *` for browser dashboard support
|
|
1031
|
+
- **benchmark organic score prominent**: organic improvement shown first as primary metric
|
|
1032
|
+
- **synergy-report implemented**: replaced "coming soon" with working multi-platform synergy dashboard
|
|
1033
|
+
|
|
1034
|
+
## [1.8.8] - 2026-04-06
|
|
1035
|
+
|
|
1036
|
+
### Fixed
|
|
1037
|
+
- **Setup hooks registration**: hooks are now always registered in settings.json (merge, not overwrite) — previously hooks files were created but never connected
|
|
1038
|
+
- **Platform-specific setup**: `setup --platform windsurf/aider/cursor` now routes to platform-specific setup functions instead of only creating Claude files
|
|
1039
|
+
- **Rollback artifacts**: rollback now correctly records created/patched files (written after fixes, not before)
|
|
1040
|
+
- **fix --dry-run**: properly separated from --auto — shows what would be fixed without writing files
|
|
1041
|
+
- **fix removes allow:["*"]**: secretsProtection fixer now removes overly broad allow rules when adding deny rules
|
|
1042
|
+
- **--profile flag**: now loads and applies governance profiles (read-only, suggest-only, safe-write, power-user) to audit
|
|
1043
|
+
- **profile load**: now applies deny rules and threshold to settings.json instead of just displaying
|
|
1044
|
+
- **SDK passing/total**: added `passing`, `total`, and `average` aliases to SDK audit/harmony results
|
|
1045
|
+
- **Swift detection**: Swift projects (Package.swift, .xcodeproj) now detected in subdirectories
|
|
1046
|
+
- **Python repository rules**: repository.md now references pyproject.toml instead of package.json for Python projects
|
|
1047
|
+
- **convert filename doubling**: strips all known extensions (.md, .mdc, .txt) preventing CLAUDE.md.md
|
|
1048
|
+
- **convert frontmatter leak**: MDC frontmatter stripped for all non-cursor targets (copilot, claude, codex, etc.)
|
|
1049
|
+
- **scan vs org scan**: `scan` now shows detailed per-repo breakdown; `org scan` shows aggregated summary
|
|
1050
|
+
- **migrate --platform cursor**: added migrate to FULL_COMMAND_SET so platform dispatch works correctly
|
|
1051
|
+
- **Hooks fail-closed**: protect-secrets hook now blocks on error instead of allowing (fail-closed, not fail-open)
|
|
1052
|
+
- **Settings merge**: setup now merges all fields (hooks, permissions, mcpServers, nerviqSetup) into existing settings.json
|
|
1053
|
+
|
|
1054
|
+
## [1.8.7] - 2026-04-06
|
|
1055
|
+
|
|
1056
|
+
### Changed
|
|
1057
|
+
- **Complete CLAUDEX → NERVIQ rebrand**: all internal references, env vars (`NERVIQ_NO_INSIGHTS`), JSON keys (`_nerviq_managed`), and property names updated
|
|
1058
|
+
- **Restored audit-repo skill template**: Claude-native skill for running `npx @nerviq/cli --json` from within Claude Code
|
|
1059
|
+
- **Updated .gitignore**: fixed legacy `claudex-setup` reference
|
|
1060
|
+
|
|
1061
|
+
## [1.8.6] - 2026-04-06
|
|
1062
|
+
|
|
1063
|
+
### Changed
|
|
1064
|
+
- **Confidence calibration**: 5-tier system (0.3/0.6/0.7/0.8/0.9) based on actual evidence quality — stack checks=0.6, default=0.7, with-template=0.8, runtime-verified=0.9
|
|
1065
|
+
- **SDK dogfooding**: CLI now imports `audit`, `detectPlatforms`, `getCatalog` from public SDK API instead of internal modules
|
|
1066
|
+
- Updated test count badge: 293 tests
|
|
1067
|
+
|
|
1068
|
+
## [1.8.5] - 2026-04-06
|
|
1069
|
+
|
|
1070
|
+
### Changed — Honesty & Maturity Overhaul (Stream 23)
|
|
1071
|
+
- **Check count messaging**: All surfaces now show "2,431 checks (8 platforms × ~300 governance rules)" instead of inflated raw number
|
|
1072
|
+
- **Synergy → [EXPERIMENTAL]**: Synergy dashboard, CLI output, and site docs now carry experimental label with disclaimer about static routing rules
|
|
1073
|
+
- **Feature maturity labels**: Introduced GA/Beta/Experimental system — Harmony=GA, Plugins=GA, SDK=Beta, Synergy=Experimental
|
|
1074
|
+
- **"evidence-based" → accurate**: Changed to "rule-based audit engine with evidence tracking" in methodology docs
|
|
1075
|
+
- **Positioning**: Added "Best for teams going from 0→governed" and "Not designed for deeply customized setups" to README and site
|
|
1076
|
+
- **sourceUrl audit**: Verified 100% coverage (2,306/2,306 checks), identified 78 unique URLs for future specificity improvement
|
|
1077
|
+
|
|
1078
|
+
### Fixed
|
|
1079
|
+
- Fixed 15 failing tests with stale check counts (2,306→2,431, domain packs 40→62)
|
|
1080
|
+
- Jest version verified: ^30.3.0 valid (30.2.0 installed)
|
|
1081
|
+
|
|
1082
|
+
### Added
|
|
1083
|
+
- 14 new Harmony integration tests (full pipeline, drift scenarios, add platform, state persistence, governance, advisor)
|
|
1084
|
+
- Total test count: 293 passing across 28 suites
|
|
1085
|
+
- MaturityBadge component on nerviq.net docs pages
|
|
1086
|
+
|
|
1087
|
+
## [1.7.1] - 2026-04-07
|
|
1088
|
+
|
|
1089
|
+
### Changed
|
|
1090
|
+
- README synced: added 8 missing commands (rollback, check-health, anti-patterns, freshness, rules-export, org scan), 4 missing options (--full, --config-only, --only, --workspace), fixed NERVIQ→NERVIQ branding
|
|
1091
|
+
|
|
1092
|
+
## [1.7.0] - 2026-04-07
|
|
1093
|
+
|
|
1094
|
+
### Added — Final P2 batch
|
|
1095
|
+
- **UAT-11: `nerviq rollback`** — Undo the most recent apply by deleting all created files. Supports `--list` (show rollback points), `--dry-run` (preview), and auto-cleanup of rollback artifacts after use.
|
|
1096
|
+
- **UAT-18**: `apply --only hooks,commands` already worked (verified)
|
|
1097
|
+
- **UAT-19**: Benchmark messaging improved for post-setup runs
|
|
1098
|
+
|
|
1099
|
+
## [1.6.5] - 2026-04-07
|
|
1100
|
+
|
|
1101
|
+
### Added — More P2 UX from UAT
|
|
1102
|
+
- **UAT-14**: Governance shows top 5 domain/MCP packs by default, `--verbose` for all
|
|
1103
|
+
- **UAT-20**: Frontend.md rule no longer generated for backend-only projects (Express, NestJS)
|
|
1104
|
+
- **UAT-23**: `rules-export` shows human-readable summary by default, `--json` for full output
|
|
1105
|
+
- **UAT-24**: `history --prune N` to clean old snapshots (keeps last N)
|
|
1106
|
+
- **UAT-21**: Harmony task routing already dynamic (via UAT-04 phantom platform fix)
|
|
1107
|
+
|
|
1108
|
+
## [1.6.4] - 2026-04-07
|
|
1109
|
+
|
|
1110
|
+
### Added — P2 UX improvements from UAT
|
|
1111
|
+
- **UAT-12**: Setup now lists every file created (`+ CLAUDE.md`, `+ .claude/settings.json`, ...)
|
|
1112
|
+
- **UAT-13**: Lite mode shows pass/fail count: `Score: 78/100 (62/86 checks passing)`
|
|
1113
|
+
- **UAT-15**: Audit header shows detected config files: `Found: CLAUDE.md, AGENTS.md, .cursorrules`
|
|
1114
|
+
- **UAT-17**: Suggested next command includes `--platform` for non-Claude platforms
|
|
1115
|
+
- **UAT-22**: History shows HH:MM timestamps when multiple snapshots share same date
|
|
1116
|
+
|
|
1117
|
+
## [1.6.3] - 2026-04-07
|
|
1118
|
+
|
|
1119
|
+
### Fixed — P1 from UAT
|
|
1120
|
+
- **UAT-04**: Harmony only audits platforms with detected config files (was always 8/8)
|
|
1121
|
+
- **UAT-05**: `apply --rollback` now shows clear error instead of silently re-applying
|
|
1122
|
+
- **UAT-06**: Harmony drift now auto-recorded — compares scores to previous audit, records deltas ≥5 points
|
|
1123
|
+
- **UAT-07**: Migrate error message includes usage example
|
|
1124
|
+
- **UAT-08**: Doctor aider freshness gate no longer crashes (null safety)
|
|
1125
|
+
- **UAT-09**: `nerviq fix` now auto-fixes `gitIgnoreEnv` (.env to .gitignore) and `secretsProtection` (deny rules in settings.json) — the two most common critical findings
|
|
1126
|
+
- **UAT-10**: Rails/Laravel/.NET false positives in `fix` output eliminated (was caused by same null-inclusion bug as UAT-02)
|
|
1127
|
+
|
|
1128
|
+
## [1.6.2] - 2026-04-07
|
|
1129
|
+
|
|
1130
|
+
### Fixed — P0 from UAT (ship-stoppers)
|
|
1131
|
+
- **UAT-01 BLOCKER**: `npx @nerviq/cli audit` now works — added `@nerviq/cli` bin alias
|
|
1132
|
+
- **UAT-02**: `nerviq fix` was showing 375 failed checks (including skipped) vs audit's 77. Fixed: now filters `r.passed === false` only, matching audit count exactly
|
|
1133
|
+
- **UAT-03**: Confidence label `[MEDIUM]` was shown on critical items (confusing). Changed threshold: 0.7 confidence now shows `[HIGH]` instead of `[MEDIUM]`
|
|
1134
|
+
|
|
1135
|
+
## [1.6.1] - 2026-04-07
|
|
1136
|
+
|
|
1137
|
+
### Added
|
|
1138
|
+
- **F3-01: `nerviq check-health`** — Detects regressions between audit snapshots. Compares per-check pass/fail state and flags checks that went from passing to failing. When 3+ checks in the same category regress, alerts as "potential platform format change."
|
|
1139
|
+
- **F3-03: Regression tests** — 3 new tests for check-health: no-snapshots, stable state, and regression detection
|
|
1140
|
+
- Supports `--json` for CI integration
|
|
1141
|
+
|
|
1142
|
+
## [1.6.0] - 2026-04-07
|
|
1143
|
+
|
|
1144
|
+
### Changed — ACCURACY OVERHAUL
|
|
1145
|
+
- **Stack detection accuracy**: Checks for Python, Go, Rust, Java, Ruby, PHP, .NET, Flutter, Swift, Kotlin now skip when the stack is only present in `examples/`, `docs/`, `test/`, `vendor/` directories — not at project root. Previously these fired false positives on monorepos and repos with example code.
|
|
1146
|
+
- **Generic quality checks scoped**: 132 checks (observability, caching, i18n, rate-limiting, etc.) are now skipped by default — they measure general software quality, not AI agent configuration. Use `--verbose` to include them.
|
|
1147
|
+
- **Urgency count fix**: Skipped (not-applicable) checks were incorrectly counted as critical/high in the lite output summary. Now only actual failures are counted.
|
|
1148
|
+
|
|
1149
|
+
### Impact
|
|
1150
|
+
- supabase/supabase: Failed 120 → 55 (65 false positives eliminated)
|
|
1151
|
+
- Nerviq's own repo: Fake "🔴 3 critical" → accurate "🔵 19 recommended"
|
|
1152
|
+
- All failed checks are now relevant to AI agent configuration
|
|
1153
|
+
|
|
1154
|
+
## [1.5.3] - 2026-04-07
|
|
1155
|
+
|
|
1156
|
+
### Added
|
|
1157
|
+
- **T4-01:** Confidence labels (`[HIGH]` / `[MEDIUM]` / `[HEURISTIC]`) on every failed check in full audit
|
|
1158
|
+
- **T4-02:** Safety modes documented in README: read-only, suggest-only, dry-run, config-only, safe-write, power-user
|
|
1159
|
+
- **T4-02:** `--config-only` flag added — restricts writes to config files only
|
|
1160
|
+
- **B4:** Suggest-only markdown export verified working (`nerviq suggest-only --out report.md`)
|
|
1161
|
+
|
|
1162
|
+
### Fixed
|
|
1163
|
+
- Report header rebranded from "Nerviq" to "Nerviq" in markdown export
|
|
1164
|
+
|
|
1165
|
+
## [1.5.2] - 2026-04-07
|
|
1166
|
+
|
|
1167
|
+
### Added
|
|
1168
|
+
- **F1-01: Lite-by-default** — `nerviq audit` now shows quick scan (score + top 3 actions). Use `--full` for complete output.
|
|
1169
|
+
- **F1-02: Urgency tiers** — Lite output shows `🔴 critical / 🟡 high / 🔵 recommended` summary and per-item tier icons
|
|
1170
|
+
- **F2-01: `nerviq fix` command** — Auto-fix checks with templates, show manual guidance for others, display score impact
|
|
1171
|
+
- `nerviq fix` — List fixable and manual-fix checks
|
|
1172
|
+
- `nerviq fix <key>` — Fix a specific check with before/after score
|
|
1173
|
+
- `nerviq fix --all-critical` — Fix all critical issues at once
|
|
1174
|
+
- `nerviq fix --dry-run` — Preview without writing
|
|
1175
|
+
|
|
1176
|
+
### Changed
|
|
1177
|
+
- Default `nerviq audit` is now lite mode (previously showed full output)
|
|
1178
|
+
- `--full` flag added to restore previous full-output behavior
|
|
1179
|
+
- `--verbose` still shows full output plus medium-priority recommendations
|
|
1180
|
+
- Lite output streamlined: single fix line per item instead of redundant Why/Fix
|
|
1181
|
+
|
|
1182
|
+
## [1.5.1] - 2026-04-06
|
|
1183
|
+
|
|
1184
|
+
### Added
|
|
1185
|
+
- "Get Started by Role" section in README (solo dev / team lead / enterprise paths)
|
|
1186
|
+
- "What Nerviq Is — and Isn't" section in README (honest limitations, confidence levels)
|
|
1187
|
+
- CHANGELOG entries for v1.2.5 through v1.5.0 (previously undocumented)
|
|
1188
|
+
|
|
1189
|
+
### Changed
|
|
1190
|
+
- Check counts synced across all surfaces (README, package.json, badge): 2,431 total
|
|
1191
|
+
- Removed stale "v1.0" reference from README
|
|
1192
|
+
- Tagline sharpened: "Standardize and govern your AI coding agent setup"
|
|
1193
|
+
- Platform check counts updated to match actual catalog
|
|
1194
|
+
- Removed self-certification badge
|
|
1195
|
+
|
|
1196
|
+
## [1.5.0] - 2026-04-05
|
|
1197
|
+
|
|
1198
|
+
### Added
|
|
1199
|
+
- Stream 8 Self-Dependent Execution — intelligence hardening
|
|
1200
|
+
- New CLI commands: `nerviq rules-export`, `nerviq anti-patterns`, `nerviq freshness`
|
|
1201
|
+
- A2: Recommendation rules export to JSON
|
|
1202
|
+
- A3: Shared contract schemas (technique + pack)
|
|
1203
|
+
- A6: 22 anti-pattern definitions with detection
|
|
1204
|
+
- A7: Last-verified date tracking for 123 checks
|
|
1205
|
+
- B5: External benchmark path (`nerviq benchmark --external /path`)
|
|
1206
|
+
- B8: Governance hook risk level classification (high/medium/low)
|
|
1207
|
+
|
|
1208
|
+
### Changed
|
|
1209
|
+
- B3: Augment now preserves and displays top 10 strengths
|
|
1210
|
+
|
|
1211
|
+
## [1.4.1] - 2026-04-05
|
|
1212
|
+
|
|
1213
|
+
### Fixed
|
|
1214
|
+
- npm README display alignment
|
|
1215
|
+
|
|
1216
|
+
## [1.4.0] - 2026-04-05
|
|
1217
|
+
|
|
1218
|
+
### Added
|
|
1219
|
+
- Stream 13: 84 new coverage checks across 15 directions
|
|
1220
|
+
- MC-A (HIGH): Observability, Accessibility, GDPR, Error Tracking, Supply Chain — 31 checks
|
|
1221
|
+
- MC-B (MED): i18n, API Versioning, Caching, Rate Limiting, Feature Flags, Docs, Monorepo, Performance — 43 checks
|
|
1222
|
+
- MC-C (LOW): WebSocket/Real-time, GraphQL — 10 checks
|
|
1223
|
+
- Total reached 2,039 checks across 96 categories
|
|
1224
|
+
|
|
1225
|
+
## [1.3.2] - 2026-04-05
|
|
1226
|
+
|
|
1227
|
+
### Changed
|
|
1228
|
+
- README fully updated: badge, platform table, category table, stack languages table
|
|
1229
|
+
- package.json description synced to 1,955 checks
|
|
1230
|
+
- Added `harmony-add` command to docs
|
|
1231
|
+
|
|
1232
|
+
## [1.3.1] - 2026-04-05
|
|
1233
|
+
|
|
1234
|
+
### Added
|
|
1235
|
+
- Stream 5D: 35 mobile stack checks (Flutter 15, Swift 10, Kotlin 10)
|
|
1236
|
+
- Stream 4 Batch 2: 22 new domain packs (healthcare to energy)
|
|
1237
|
+
- Stream 5 complete: 172 stack checks across 10 languages
|
|
1238
|
+
|
|
1239
|
+
## [1.3.0] - 2026-04-05
|
|
1240
|
+
|
|
1241
|
+
### Added
|
|
1242
|
+
- Stream 5: Stack-specific checks for 7 languages (137 new checks)
|
|
1243
|
+
- Python (26), Go (21), Rust (21), Java/Spring (21), Ruby (16), PHP (16), .NET (16)
|
|
1244
|
+
- QP-D02: API reference documentation (`docs/api-reference.md`)
|
|
1245
|
+
|
|
1246
|
+
## [1.2.7] - 2026-04-05
|
|
1247
|
+
|
|
1248
|
+
### Changed
|
|
1249
|
+
- Version bump for npm publish alignment
|
|
1250
|
+
|
|
1251
|
+
## [1.2.6] - 2026-04-05
|
|
1252
|
+
|
|
1253
|
+
### Added
|
|
1254
|
+
- EC1-EC8: All 6 new ECC-inspired checks + 2 advisor task types
|
|
1255
|
+
|
|
1256
|
+
### Fixed
|
|
1257
|
+
- Flaky `compareLatest` test (timestamp tiebreaker sort)
|
|
1258
|
+
|
|
1259
|
+
## [1.2.5] - 2026-04-05
|
|
1260
|
+
|
|
1261
|
+
### Added
|
|
1262
|
+
- 3 ECC-inspired checks: `llms.txt`, MCP budget warning, hook exit code docs
|
|
1263
|
+
|
|
1264
|
+
### Changed
|
|
1265
|
+
- Complete NERVIQ → NERVIQ rebrand across docs, content, action, landing page
|
|
1266
|
+
- CHANGELOG rewritten to Keep a Changelog format with full version history
|
|
1267
|
+
|
|
1268
|
+
## [1.2.4] - 2026-04-05
|
|
1269
|
+
|
|
1270
|
+
### Added
|
|
1271
|
+
- H8: Unified platform capability matrices into a single source of truth
|
|
1272
|
+
- Windsurf, Aider, and OpenCode intelligence added to Harmony module
|
|
1273
|
+
- Codex platform additions synced to metadata
|
|
1274
|
+
|
|
1275
|
+
### Changed
|
|
1276
|
+
- MG5-MG11: Complete NERVIQ to NERVIQ migration in CLI codebase
|
|
1277
|
+
- Hardcoded `.claude/nerviq-cli/` paths migrated to `.nerviq/` with fallback
|
|
1278
|
+
|
|
1279
|
+
## [1.2.3] - 2026-04-05
|
|
1280
|
+
|
|
1281
|
+
### Added
|
|
1282
|
+
- Batch Q1: check-matrix and golden-matrix tests for Windsurf, Aider, OpenCode
|
|
1283
|
+
- Quality Perfection Q1: Gold certification, harmony+synergy proof
|
|
1284
|
+
- SDK/server tests and plugin dogfood validation
|
|
1285
|
+
|
|
1286
|
+
### Changed
|
|
1287
|
+
- Self-audit score improved from 80 to 90
|
|
1288
|
+
- CI self-audit integrated into pipeline
|
|
1289
|
+
|
|
1290
|
+
## [1.2.1] - 2026-04-05
|
|
1291
|
+
|
|
1292
|
+
### Fixed
|
|
1293
|
+
- Skip API/DB/Auth/Monitoring checks on irrelevant projects (false positive reduction)
|
|
1294
|
+
- Self-dogfood: added `.mcp.json` to own project
|
|
1295
|
+
- LICENSE updated to AGPL-3.0 full text
|
|
1296
|
+
- CI test assertions updated for new error messages and .npmignore changes
|
|
1297
|
+
|
|
1298
|
+
## [1.2.0] - 2026-04-05
|
|
1299
|
+
|
|
1300
|
+
### Added
|
|
1301
|
+
- Massive expansion: 673 to 2,306 checks (+1,633)
|
|
1302
|
+
- Batch 4: 25 case studies (10 single-platform + 10 harmony/synergy + 5 existing) with INDEX
|
|
1303
|
+
- Batch 3: +104 experiments (228 to 332) and +133 research docs (315 to 448)
|
|
1304
|
+
- 27 cross-platform research documents
|
|
1305
|
+
|
|
1306
|
+
## [1.1.1] - 2026-04-05
|
|
1307
|
+
|
|
1308
|
+
### Added
|
|
1309
|
+
- Batch 2: +24 domain packs (16 to 40) and +23 MCP packs (26 to 49) across all 8 platforms
|
|
1310
|
+
|
|
1311
|
+
## [1.1.0] - 2026-04-05
|
|
1312
|
+
|
|
1313
|
+
### Added
|
|
1314
|
+
- Batch 1: +383 checks (673 to 1,056) across 8 new categories for all 8 platforms
|
|
1315
|
+
|
|
1316
|
+
## [1.0.2] - 2026-04-05
|
|
1317
|
+
|
|
1318
|
+
### Fixed
|
|
1319
|
+
- Scorecard: 15 dimensions improved (privacy, security, monorepo, org, integrations, telemetry, OTel, SLSA, versioning, errors, audit log, deprecation, large files, relevance decay, case studies)
|
|
1320
|
+
|
|
1321
|
+
### Added
|
|
1322
|
+
- Methodology documentation, FP ranking, SBOM, CI experiments
|
|
1323
|
+
- Improved `.npmignore` and `test:all` script
|
|
1324
|
+
|
|
1325
|
+
## [1.0.1] - 2026-03-31
|
|
1326
|
+
|
|
1327
|
+
### Fixed
|
|
1328
|
+
- Mermaid diagram rendering in README
|
|
1329
|
+
- macOS `grep` compatibility issue
|
|
1330
|
+
- Version stamp display
|
|
1331
|
+
|
|
1332
|
+
## [1.0.0] - 2026-04-05
|
|
1333
|
+
|
|
1334
|
+
### Changed
|
|
1335
|
+
- **Renamed from nerviq-cli to Nerviq** — "The intelligent nervous system for AI coding agents"
|
|
1336
|
+
- Full rebrand across CLI, docs, and package metadata
|
|
1337
|
+
|
|
1338
|
+
## [0.9.6] - 2026-04-05
|
|
1339
|
+
|
|
1340
|
+
### Added
|
|
1341
|
+
- SDK for programmatic access
|
|
1342
|
+
- REST API server with Express
|
|
1343
|
+
- Plugin system for extensibility
|
|
1344
|
+
- SLSA provenance for supply chain security
|
|
1345
|
+
- CONTRIBUTING.md for open-source contributors
|
|
1346
|
+
|
|
1347
|
+
## [0.9.5] - 2026-04-05
|
|
1348
|
+
|
|
1349
|
+
### Added
|
|
1350
|
+
- VS Code extension
|
|
1351
|
+
- `catalog` command for browsing checks
|
|
1352
|
+
- Performance baselines and benchmarks
|
|
1353
|
+
- Feedback loop for community contributions
|
|
1354
|
+
|
|
1355
|
+
### Changed
|
|
1356
|
+
- All 673 checks now include `sourceUrl` and `confidence` metadata
|
|
1357
|
+
|
|
1358
|
+
## [0.9.4] - 2026-04-05
|
|
1359
|
+
|
|
1360
|
+
### Added
|
|
1361
|
+
- GitHub Action for CI/CD integration
|
|
1362
|
+
- MCP server for tool integration
|
|
1363
|
+
- `doctor`, `convert`, and `migrate` commands
|
|
1364
|
+
- Freshness pipeline for check staleness detection
|
|
1365
|
+
- 3 case studies with real project data
|
|
1366
|
+
- Harmony, Synergy, and E2E test suites (187 total tests)
|
|
1367
|
+
|
|
1368
|
+
## [0.9.3] - 2026-04-05
|
|
1369
|
+
|
|
1370
|
+
### Fixed
|
|
1371
|
+
- Checks updated from experiment findings: Gemini +5, Copilot +5, Cursor +4, Aider +3, Windsurf/OpenCode fixes
|
|
1372
|
+
- Stale checks cleaned and new checks added
|
|
1373
|
+
- CI: added `npm ci` step for dependency install
|
|
1374
|
+
|
|
1375
|
+
### Changed
|
|
1376
|
+
- README updated with beta notice and coming-soon platform list
|
|
1377
|
+
|
|
1378
|
+
## [0.9.x] - 2026-04-04
|
|
1379
|
+
|
|
1380
|
+
### Changed
|
|
1381
|
+
- README updated with nerviq-cli to Nerviq migration notice
|
|
1382
|
+
|
|
1383
|
+
## [0.5.1] - 2026-03-31
|
|
1384
|
+
|
|
1385
|
+
### Changed
|
|
1386
|
+
- Deep-review auto-detects Claude Code presence (no API key needed)
|
|
1387
|
+
- Landing page and help text updated
|
|
1388
|
+
|
|
1389
|
+
## [0.5.0] - 2026-03-31
|
|
1390
|
+
|
|
1391
|
+
### Added
|
|
1392
|
+
- AI-powered `deep-review` command using Claude API
|
|
1393
|
+
- Intelligent analysis beyond static checks
|
|
1394
|
+
|
|
1395
|
+
## [0.4.0] - 2026-03-31
|
|
1396
|
+
|
|
1397
|
+
### Added
|
|
1398
|
+
- 9 quality-deep checks for veteran Claude Code users
|
|
1399
|
+
- Deeper analysis for experienced workflows
|
|
1400
|
+
|
|
1401
|
+
### Changed
|
|
1402
|
+
- Community feedback addressed: improved honesty, no-overwrite behavior, less dogmatic tone
|
|
1403
|
+
|
|
1404
|
+
## [0.3.2] - 2026-03-31
|
|
1405
|
+
|
|
1406
|
+
### Changed
|
|
1407
|
+
- README v2: all commands documented, smart gen showcase, 54 checks table, GitHub Action, privacy section
|
|
1408
|
+
|
|
1409
|
+
## [0.3.1] - 2026-03-31
|
|
1410
|
+
|
|
1411
|
+
### Added
|
|
1412
|
+
- Anonymous insights collection
|
|
1413
|
+
- Weakest areas analysis
|
|
1414
|
+
- Community statistics dashboard
|
|
1415
|
+
|
|
1416
|
+
### Fixed
|
|
1417
|
+
- Insights endpoint corrected to `nerviq.workers.dev`
|
|
1418
|
+
|
|
1419
|
+
## [0.3.0] - 2026-03-31
|
|
1420
|
+
|
|
1421
|
+
### Added
|
|
1422
|
+
- Interactive wizard for guided setup
|
|
1423
|
+
- Watch mode for continuous monitoring
|
|
1424
|
+
- Landing page with FAQ, trust signals, badges
|
|
1425
|
+
|
|
1426
|
+
## [0.2.1] - 2026-03-31
|
|
1427
|
+
|
|
1428
|
+
### Added
|
|
1429
|
+
- Smart `CLAUDE.md` generator based on project analysis
|
|
1430
|
+
- `badge` command for README status badges
|
|
1431
|
+
- GitHub Action for automated auditing
|
|
1432
|
+
- Quick wins recommendations
|
|
1433
|
+
|
|
1434
|
+
## [0.2.0] - 2026-03-31
|
|
1435
|
+
|
|
1436
|
+
### Added
|
|
1437
|
+
- Expanded to 54 checks across 18 technology stacks
|
|
1438
|
+
- Improved CLAUDE.md templates
|
|
1439
|
+
|
|
1440
|
+
### Fixed
|
|
1441
|
+
- Security: removed hardcoded Dev.to API key from CLAUDE.md
|
|
1442
|
+
- Security: made NERVIQ catalog links private
|
|
1443
|
+
|
|
1444
|
+
## [0.1.0] - 2026-03-30
|
|
1445
|
+
|
|
1446
|
+
### Added
|
|
1447
|
+
- Initial release of nerviq-cli (later renamed to Nerviq)
|
|
1448
|
+
- Project audit and optimization for Claude Code workflows
|
|
1449
|
+
- Landing page (GitHub Pages ready)
|
|
1450
|
+
- Launch content and community posts
|
|
1451
|
+
|
|
1452
|
+
[Unreleased]: https://github.com/nerviq/nerviq/compare/v1.29.1...HEAD
|
|
1453
|
+
[1.29.1]: https://github.com/nerviq/nerviq/compare/v1.29.0...v1.29.1
|
|
1454
|
+
[1.29.0]: https://github.com/nerviq/nerviq/compare/v1.28.0...v1.29.0
|
|
1455
|
+
[1.28.0]: https://github.com/nerviq/nerviq/compare/v1.27.1...v1.28.0
|
|
1456
|
+
[1.27.1]: https://github.com/nerviq/nerviq/compare/v1.27.0...v1.27.1
|
|
1457
|
+
[1.27.0]: https://github.com/nerviq/nerviq/compare/v1.26.0...v1.27.0
|
|
1458
|
+
[1.26.0]: https://github.com/nerviq/nerviq/compare/v1.25.0...v1.26.0
|
|
1459
|
+
[1.25.0]: https://github.com/nerviq/nerviq/compare/v1.24.0...v1.25.0
|
|
1460
|
+
[1.24.0]: https://github.com/nerviq/nerviq/compare/v1.23.0...v1.24.0
|
|
1461
|
+
[1.23.0]: https://github.com/nerviq/nerviq/compare/v1.22.0...v1.23.0
|
|
1462
|
+
[1.22.0]: https://github.com/nerviq/nerviq/compare/v1.21.0...v1.22.0
|
|
1463
|
+
[1.21.0]: https://github.com/nerviq/nerviq/compare/v1.20.1...v1.21.0
|
|
1464
|
+
[1.20.1]: https://github.com/nerviq/nerviq/compare/v1.20.0...v1.20.1
|
|
1465
|
+
[1.20.0]: https://github.com/nerviq/nerviq/compare/v1.19.0...v1.20.0
|
|
1466
|
+
[1.19.0]: https://github.com/nerviq/nerviq/compare/v1.18.0...v1.19.0
|
|
1467
|
+
[1.18.0]: https://github.com/nerviq/nerviq/compare/v1.17.3...v1.18.0
|
|
1468
|
+
[1.17.3]: https://github.com/nerviq/nerviq/compare/v1.17.2...v1.17.3
|
|
1469
|
+
[1.17.2]: https://github.com/nerviq/nerviq/compare/v1.17.1...v1.17.2
|
|
1470
|
+
[1.17.1]: https://github.com/nerviq/nerviq/compare/v1.17.0...v1.17.1
|
|
1471
|
+
[1.17.0]: https://github.com/nerviq/nerviq/compare/v1.16.0...v1.17.0
|
|
1472
|
+
[1.16.0]: https://github.com/nerviq/nerviq/compare/v1.15.0...v1.16.0
|
|
1473
|
+
[1.15.0]: https://github.com/nerviq/nerviq/compare/v1.14.0...v1.15.0
|
|
1474
|
+
[1.14.0]: https://github.com/nerviq/nerviq/compare/v1.13.0...v1.14.0
|
|
1475
|
+
[1.13.0]: https://github.com/nerviq/nerviq/compare/v1.12.0...v1.13.0
|
|
1476
|
+
[1.12.0]: https://github.com/nerviq/nerviq/compare/v1.11.0...v1.12.0
|
|
1477
|
+
[1.11.0]: https://github.com/nerviq/nerviq/compare/v1.10.0...v1.11.0
|
|
1478
|
+
[1.10.0]: https://github.com/nerviq/nerviq/compare/v1.9.0...v1.10.0
|
|
1479
|
+
[1.9.0]: https://github.com/nerviq/nerviq/compare/v1.8.9...v1.9.0
|
|
1480
|
+
[1.8.9]: https://github.com/nerviq/nerviq/compare/v1.8.8...v1.8.9
|
|
1481
|
+
[1.8.8]: https://github.com/nerviq/nerviq/compare/v1.8.7...v1.8.8
|
|
1482
|
+
[1.8.7]: https://github.com/nerviq/nerviq/compare/v1.8.6...v1.8.7
|
|
1483
|
+
[1.8.6]: https://github.com/nerviq/nerviq/compare/v1.8.5...v1.8.6
|
|
1484
|
+
[1.8.5]: https://github.com/nerviq/nerviq/compare/v1.7.1...v1.8.5
|
|
1485
|
+
[1.7.1]: https://github.com/nerviq/nerviq/compare/v1.7.0...v1.7.1
|
|
1486
|
+
[1.7.0]: https://github.com/nerviq/nerviq/compare/v1.6.5...v1.7.0
|
|
1487
|
+
[1.6.5]: https://github.com/nerviq/nerviq/compare/v1.6.4...v1.6.5
|
|
1488
|
+
[1.6.4]: https://github.com/nerviq/nerviq/compare/v1.6.3...v1.6.4
|
|
1489
|
+
[1.6.3]: https://github.com/nerviq/nerviq/compare/v1.6.2...v1.6.3
|
|
1490
|
+
[1.6.2]: https://github.com/nerviq/nerviq/compare/v1.6.1...v1.6.2
|
|
1491
|
+
[1.6.1]: https://github.com/nerviq/nerviq/compare/v1.6.0...v1.6.1
|
|
1492
|
+
[1.6.0]: https://github.com/nerviq/nerviq/compare/v1.5.3...v1.6.0
|
|
1493
|
+
[1.5.3]: https://github.com/nerviq/nerviq/compare/v1.5.2...v1.5.3
|
|
1494
|
+
[1.5.2]: https://github.com/nerviq/nerviq/compare/v1.5.1...v1.5.2
|
|
1495
|
+
[1.5.1]: https://github.com/nerviq/nerviq/compare/v1.5.0...v1.5.1
|
|
1496
|
+
[1.5.0]: https://github.com/nerviq/nerviq/compare/v1.4.1...v1.5.0
|
|
1497
|
+
[1.4.1]: https://github.com/nerviq/nerviq/compare/v1.4.0...v1.4.1
|
|
1498
|
+
[1.4.0]: https://github.com/nerviq/nerviq/compare/v1.3.2...v1.4.0
|
|
1499
|
+
[1.3.2]: https://github.com/nerviq/nerviq/compare/v1.3.1...v1.3.2
|
|
1500
|
+
[1.3.1]: https://github.com/nerviq/nerviq/compare/v1.3.0...v1.3.1
|
|
1501
|
+
[1.3.0]: https://github.com/nerviq/nerviq/compare/v1.2.7...v1.3.0
|
|
1502
|
+
[1.2.7]: https://github.com/nerviq/nerviq/compare/v1.2.6...v1.2.7
|
|
1503
|
+
[1.2.6]: https://github.com/nerviq/nerviq/compare/v1.2.5...v1.2.6
|
|
1504
|
+
[1.2.5]: https://github.com/nerviq/nerviq/compare/v1.2.4...v1.2.5
|
|
1505
|
+
[1.2.4]: https://github.com/nerviq/nerviq/compare/v1.2.3...v1.2.4
|
|
1506
|
+
[1.2.3]: https://github.com/nerviq/nerviq/compare/v1.2.1...v1.2.3
|
|
1507
|
+
[1.2.1]: https://github.com/nerviq/nerviq/compare/v1.2.0...v1.2.1
|
|
1508
|
+
[1.2.0]: https://github.com/nerviq/nerviq/compare/v1.1.1...v1.2.0
|
|
1509
|
+
[1.1.1]: https://github.com/nerviq/nerviq/compare/v1.1.0...v1.1.1
|
|
1510
|
+
[1.1.0]: https://github.com/nerviq/nerviq/compare/v1.0.2...v1.1.0
|
|
1511
|
+
[1.0.2]: https://github.com/nerviq/nerviq/compare/v1.0.1...v1.0.2
|
|
1512
|
+
[1.0.1]: https://github.com/nerviq/nerviq/compare/v1.0.0...v1.0.1
|
|
1513
|
+
[1.0.0]: https://github.com/nerviq/nerviq/compare/v0.9.6...v1.0.0
|
|
1514
|
+
[0.9.6]: https://github.com/nerviq/nerviq/compare/v0.9.5...v0.9.6
|
|
1515
|
+
[0.9.5]: https://github.com/nerviq/nerviq/compare/v0.9.4...v0.9.5
|
|
1516
|
+
[0.9.4]: https://github.com/nerviq/nerviq/compare/v0.9.3...v0.9.4
|
|
1517
|
+
[0.9.3]: https://github.com/nerviq/nerviq/compare/v0.9.x...v0.9.3
|
|
1518
|
+
[0.9.x]: https://github.com/nerviq/nerviq/compare/v0.5.1...v0.9.x
|
|
1519
|
+
[0.5.1]: https://github.com/nerviq/nerviq/compare/v0.5.0...v0.5.1
|
|
1520
|
+
[0.5.0]: https://github.com/nerviq/nerviq/compare/v0.4.0...v0.5.0
|
|
1521
|
+
[0.4.0]: https://github.com/nerviq/nerviq/compare/v0.3.2...v0.4.0
|
|
1522
|
+
[0.3.2]: https://github.com/nerviq/nerviq/compare/v0.3.1...v0.3.2
|
|
1523
|
+
[0.3.1]: https://github.com/nerviq/nerviq/compare/v0.3.0...v0.3.1
|
|
1524
|
+
[0.3.0]: https://github.com/nerviq/nerviq/compare/v0.2.1...v0.3.0
|
|
1525
|
+
[0.2.1]: https://github.com/nerviq/nerviq/compare/v0.2.0...v0.2.1
|
|
1526
|
+
[0.2.0]: https://github.com/nerviq/nerviq/compare/v0.1.0...v0.2.0
|
|
1527
|
+
[0.1.0]: https://github.com/nerviq/nerviq/releases/tag/v0.1.0
|