llm-mock-server 1.0.2 → 1.0.4
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/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/canonical_import_20260315_050000.json +286 -0
- package/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/canonical_import_20260315_050028.json +303 -0
- package/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/claude_launch_prompt.md +17 -0
- package/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/review_result.json +297 -0
- package/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/review_result.template.json +22 -0
- package/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/reviewer_instructions.md +20 -0
- package/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/session.json +20 -0
- package/.desloppify/query.json +31 -103
- package/.desloppify/review_packet_blind.json +134 -188
- package/.desloppify/review_packets/holistic_packet_20260315_045546.json +1480 -0
- package/.desloppify/state-typescript.json +2285 -846
- package/.desloppify/state-typescript.json.bak +2252 -840
- package/.editorconfig +12 -0
- package/.github/workflows/test.yml +3 -0
- package/.oxfmtrc.json +9 -0
- package/README.md +5 -0
- package/package.json +5 -2
- package/scorecard.png +0 -0
- package/src/cli-validators.ts +12 -4
- package/src/cli.ts +25 -11
- package/src/formats/anthropic/parse.ts +24 -5
- package/src/formats/anthropic/schema.ts +16 -8
- package/src/formats/anthropic/serialize.ts +112 -28
- package/src/formats/openai/parse.ts +12 -2
- package/src/formats/openai/schema.ts +43 -30
- package/src/formats/openai/serialize.ts +73 -17
- package/src/formats/request-helpers.ts +2 -1
- package/src/formats/responses/parse.ts +17 -3
- package/src/formats/responses/schema.ts +34 -20
- package/src/formats/responses/serialize.ts +235 -40
- package/src/formats/serialize-helpers.ts +10 -2
- package/src/formats/types.ts +16 -3
- package/src/index.ts +3 -1
- package/src/loader.ts +48 -12
- package/src/logger.ts +25 -7
- package/src/mock-server.ts +28 -7
- package/src/route-handler.ts +49 -14
- package/src/rule-engine.ts +43 -12
- package/src/types/reply.ts +6 -2
- package/src/types.ts +24 -3
- package/test/cli-validators.test.ts +16 -4
- package/test/formats/anthropic.test.ts +95 -19
- package/test/formats/openai.test.ts +85 -24
- package/test/formats/parse-helpers.test.ts +47 -7
- package/test/formats/responses.test.ts +111 -30
- package/test/history.test.ts +18 -5
- package/test/loader.test.ts +52 -17
- package/test/logger.test.ts +59 -9
- package/test/mock-server.test.ts +76 -22
- package/test/rule-engine.test.ts +49 -19
- /package/{ARCHITECTURE.md → docs/ARCHITECTURE.md} +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
3
|
"created": "2026-03-14T23:49:53+00:00",
|
|
4
|
-
"last_scan": "2026-03-
|
|
5
|
-
"scan_count":
|
|
6
|
-
"overall_score":
|
|
4
|
+
"last_scan": "2026-03-15T05:08:48+00:00",
|
|
5
|
+
"scan_count": 10,
|
|
6
|
+
"overall_score": 93.6,
|
|
7
7
|
"objective_score": 100.0,
|
|
8
|
-
"strict_score":
|
|
9
|
-
"verified_strict_score":
|
|
8
|
+
"strict_score": 87.7,
|
|
9
|
+
"verified_strict_score": 85.4,
|
|
10
10
|
"stats": {
|
|
11
|
-
"total":
|
|
11
|
+
"total": 114,
|
|
12
12
|
"open": 0,
|
|
13
13
|
"fixed": 0,
|
|
14
|
-
"auto_resolved":
|
|
14
|
+
"auto_resolved": 83,
|
|
15
15
|
"wontfix": 31,
|
|
16
16
|
"false_positive": 0,
|
|
17
17
|
"by_tier": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"3": {
|
|
26
26
|
"open": 0,
|
|
27
27
|
"fixed": 0,
|
|
28
|
-
"auto_resolved":
|
|
28
|
+
"auto_resolved": 50,
|
|
29
29
|
"wontfix": 31,
|
|
30
30
|
"false_positive": 0
|
|
31
31
|
},
|
|
@@ -248,35 +248,35 @@
|
|
|
248
248
|
"file": "test/mock-server.test.ts",
|
|
249
249
|
"tier": 3,
|
|
250
250
|
"confidence": "low",
|
|
251
|
-
"summary": "Needs decomposition: large (
|
|
251
|
+
"summary": "Needs decomposition: large (619 LOC)",
|
|
252
252
|
"detail": {
|
|
253
|
-
"loc":
|
|
253
|
+
"loc": 619
|
|
254
254
|
},
|
|
255
255
|
"status": "wontfix",
|
|
256
|
-
"note": "
|
|
256
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
257
257
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
258
|
-
"last_seen": "2026-03-
|
|
259
|
-
"resolved_at": "2026-03-
|
|
260
|
-
"reopen_count":
|
|
258
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
259
|
+
"resolved_at": "2026-03-15T05:09:08+00:00",
|
|
260
|
+
"reopen_count": 2,
|
|
261
261
|
"lang": "typescript",
|
|
262
262
|
"zone": "test",
|
|
263
263
|
"suppressed": false,
|
|
264
264
|
"suppressed_at": null,
|
|
265
265
|
"suppression_pattern": null,
|
|
266
|
-
"wontfix_scan_count":
|
|
266
|
+
"wontfix_scan_count": 10,
|
|
267
267
|
"wontfix_snapshot": {
|
|
268
|
-
"captured_at": "2026-03-
|
|
269
|
-
"scan_count":
|
|
268
|
+
"captured_at": "2026-03-15T05:09:08+00:00",
|
|
269
|
+
"scan_count": 10,
|
|
270
270
|
"tier": 3,
|
|
271
271
|
"confidence": "low",
|
|
272
272
|
"detail": {
|
|
273
|
-
"loc":
|
|
273
|
+
"loc": 619
|
|
274
274
|
}
|
|
275
275
|
},
|
|
276
276
|
"resolution_attestation": {
|
|
277
277
|
"kind": "manual",
|
|
278
|
-
"text": "I have actually reviewed
|
|
279
|
-
"attested_at": "2026-03-
|
|
278
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
279
|
+
"attested_at": "2026-03-15T05:09:08+00:00",
|
|
280
280
|
"scan_verified": false
|
|
281
281
|
}
|
|
282
282
|
},
|
|
@@ -292,20 +292,20 @@
|
|
|
292
292
|
"sole_importer": "src/route-handler.ts"
|
|
293
293
|
},
|
|
294
294
|
"status": "wontfix",
|
|
295
|
-
"note": "
|
|
295
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
296
296
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
297
|
-
"last_seen": "2026-03-
|
|
298
|
-
"resolved_at": "2026-03-
|
|
299
|
-
"reopen_count":
|
|
297
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
298
|
+
"resolved_at": "2026-03-15T05:09:03+00:00",
|
|
299
|
+
"reopen_count": 2,
|
|
300
300
|
"lang": "typescript",
|
|
301
301
|
"zone": "production",
|
|
302
302
|
"suppressed": false,
|
|
303
303
|
"suppressed_at": null,
|
|
304
304
|
"suppression_pattern": null,
|
|
305
|
-
"wontfix_scan_count":
|
|
305
|
+
"wontfix_scan_count": 10,
|
|
306
306
|
"wontfix_snapshot": {
|
|
307
|
-
"captured_at": "2026-03-
|
|
308
|
-
"scan_count":
|
|
307
|
+
"captured_at": "2026-03-15T05:09:03+00:00",
|
|
308
|
+
"scan_count": 10,
|
|
309
309
|
"tier": 3,
|
|
310
310
|
"confidence": "medium",
|
|
311
311
|
"detail": {
|
|
@@ -315,8 +315,8 @@
|
|
|
315
315
|
},
|
|
316
316
|
"resolution_attestation": {
|
|
317
317
|
"kind": "manual",
|
|
318
|
-
"text": "I have actually
|
|
319
|
-
"attested_at": "2026-03-
|
|
318
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
319
|
+
"attested_at": "2026-03-15T05:09:03+00:00",
|
|
320
320
|
"scan_verified": false
|
|
321
321
|
}
|
|
322
322
|
},
|
|
@@ -359,35 +359,35 @@
|
|
|
359
359
|
"file": "src/cli.ts",
|
|
360
360
|
"tier": 3,
|
|
361
361
|
"confidence": "medium",
|
|
362
|
-
"summary": "Orphaned file (
|
|
362
|
+
"summary": "Orphaned file (146 LOC): zero importers, not an entry point",
|
|
363
363
|
"detail": {
|
|
364
|
-
"loc":
|
|
364
|
+
"loc": 146
|
|
365
365
|
},
|
|
366
366
|
"status": "wontfix",
|
|
367
|
-
"note": "
|
|
367
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
368
368
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
369
|
-
"last_seen": "2026-03-
|
|
370
|
-
"resolved_at": "2026-03-
|
|
371
|
-
"reopen_count":
|
|
369
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
370
|
+
"resolved_at": "2026-03-15T05:09:05+00:00",
|
|
371
|
+
"reopen_count": 2,
|
|
372
372
|
"lang": "typescript",
|
|
373
373
|
"zone": "production",
|
|
374
374
|
"suppressed": false,
|
|
375
375
|
"suppressed_at": null,
|
|
376
376
|
"suppression_pattern": null,
|
|
377
|
-
"wontfix_scan_count":
|
|
377
|
+
"wontfix_scan_count": 10,
|
|
378
378
|
"wontfix_snapshot": {
|
|
379
|
-
"captured_at": "2026-03-
|
|
380
|
-
"scan_count":
|
|
379
|
+
"captured_at": "2026-03-15T05:09:05+00:00",
|
|
380
|
+
"scan_count": 10,
|
|
381
381
|
"tier": 3,
|
|
382
382
|
"confidence": "medium",
|
|
383
383
|
"detail": {
|
|
384
|
-
"loc":
|
|
384
|
+
"loc": 146
|
|
385
385
|
}
|
|
386
386
|
},
|
|
387
387
|
"resolution_attestation": {
|
|
388
388
|
"kind": "manual",
|
|
389
|
-
"text": "I have actually
|
|
390
|
-
"attested_at": "2026-03-
|
|
389
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
390
|
+
"attested_at": "2026-03-15T05:09:05+00:00",
|
|
391
391
|
"scan_verified": false
|
|
392
392
|
}
|
|
393
393
|
},
|
|
@@ -402,20 +402,20 @@
|
|
|
402
402
|
"loc": 18
|
|
403
403
|
},
|
|
404
404
|
"status": "wontfix",
|
|
405
|
-
"note": "
|
|
405
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
406
406
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
407
|
-
"last_seen": "2026-03-
|
|
408
|
-
"resolved_at": "2026-03-
|
|
409
|
-
"reopen_count":
|
|
407
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
408
|
+
"resolved_at": "2026-03-15T05:09:10+00:00",
|
|
409
|
+
"reopen_count": 2,
|
|
410
410
|
"lang": "typescript",
|
|
411
411
|
"zone": "config",
|
|
412
412
|
"suppressed": false,
|
|
413
413
|
"suppressed_at": null,
|
|
414
414
|
"suppression_pattern": null,
|
|
415
|
-
"wontfix_scan_count":
|
|
415
|
+
"wontfix_scan_count": 10,
|
|
416
416
|
"wontfix_snapshot": {
|
|
417
|
-
"captured_at": "2026-03-
|
|
418
|
-
"scan_count":
|
|
417
|
+
"captured_at": "2026-03-15T05:09:10+00:00",
|
|
418
|
+
"scan_count": 10,
|
|
419
419
|
"tier": 3,
|
|
420
420
|
"confidence": "medium",
|
|
421
421
|
"detail": {
|
|
@@ -424,8 +424,8 @@
|
|
|
424
424
|
},
|
|
425
425
|
"resolution_attestation": {
|
|
426
426
|
"kind": "manual",
|
|
427
|
-
"text": "I have actually
|
|
428
|
-
"attested_at": "2026-03-
|
|
427
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
428
|
+
"attested_at": "2026-03-15T05:09:10+00:00",
|
|
429
429
|
"scan_verified": false
|
|
430
430
|
}
|
|
431
431
|
},
|
|
@@ -473,11 +473,11 @@
|
|
|
473
473
|
"confidence": "medium",
|
|
474
474
|
"summary": "'delta' has 2 different signatures across 3 files",
|
|
475
475
|
"detail": {},
|
|
476
|
-
"status": "
|
|
477
|
-
"note": "
|
|
476
|
+
"status": "auto_resolved",
|
|
477
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
478
478
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
479
479
|
"last_seen": "2026-03-15T00:25:14+00:00",
|
|
480
|
-
"resolved_at": "2026-03-
|
|
480
|
+
"resolved_at": "2026-03-15T05:00:28+00:00",
|
|
481
481
|
"reopen_count": 1,
|
|
482
482
|
"lang": "typescript",
|
|
483
483
|
"zone": "production",
|
|
@@ -493,10 +493,10 @@
|
|
|
493
493
|
"detail": {}
|
|
494
494
|
},
|
|
495
495
|
"resolution_attestation": {
|
|
496
|
-
"kind": "
|
|
497
|
-
"text": "
|
|
498
|
-
"attested_at": "2026-03-
|
|
499
|
-
"scan_verified":
|
|
496
|
+
"kind": "scan_verified",
|
|
497
|
+
"text": "Disappeared from detector output",
|
|
498
|
+
"attested_at": "2026-03-15T05:00:28+00:00",
|
|
499
|
+
"scan_verified": true
|
|
500
500
|
}
|
|
501
501
|
},
|
|
502
502
|
"test_coverage::src/sse-writer.ts::transitive_only": {
|
|
@@ -513,20 +513,20 @@
|
|
|
513
513
|
"loc_weight": 5.916079783099616
|
|
514
514
|
},
|
|
515
515
|
"status": "wontfix",
|
|
516
|
-
"note": "
|
|
516
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
517
517
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
518
|
-
"last_seen": "2026-03-
|
|
519
|
-
"resolved_at": "2026-03-
|
|
520
|
-
"reopen_count":
|
|
518
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
519
|
+
"resolved_at": "2026-03-15T05:09:04+00:00",
|
|
520
|
+
"reopen_count": 2,
|
|
521
521
|
"lang": "typescript",
|
|
522
522
|
"zone": "production",
|
|
523
523
|
"suppressed": false,
|
|
524
524
|
"suppressed_at": null,
|
|
525
525
|
"suppression_pattern": null,
|
|
526
|
-
"wontfix_scan_count":
|
|
526
|
+
"wontfix_scan_count": 10,
|
|
527
527
|
"wontfix_snapshot": {
|
|
528
|
-
"captured_at": "2026-03-
|
|
529
|
-
"scan_count":
|
|
528
|
+
"captured_at": "2026-03-15T05:09:04+00:00",
|
|
529
|
+
"scan_count": 10,
|
|
530
530
|
"tier": 3,
|
|
531
531
|
"confidence": "medium",
|
|
532
532
|
"detail": {
|
|
@@ -538,8 +538,8 @@
|
|
|
538
538
|
},
|
|
539
539
|
"resolution_attestation": {
|
|
540
540
|
"kind": "manual",
|
|
541
|
-
"text": "I have actually
|
|
542
|
-
"attested_at": "2026-03-
|
|
541
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
542
|
+
"attested_at": "2026-03-15T05:09:04+00:00",
|
|
543
543
|
"scan_verified": false
|
|
544
544
|
}
|
|
545
545
|
},
|
|
@@ -549,41 +549,41 @@
|
|
|
549
549
|
"file": "src/formats/openai/serialize.ts",
|
|
550
550
|
"tier": 3,
|
|
551
551
|
"confidence": "medium",
|
|
552
|
-
"summary": "No direct tests (
|
|
552
|
+
"summary": "No direct tests (146 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
553
553
|
"detail": {
|
|
554
554
|
"kind": "transitive_only",
|
|
555
|
-
"loc":
|
|
555
|
+
"loc": 146,
|
|
556
556
|
"importer_count": 1,
|
|
557
|
-
"loc_weight":
|
|
557
|
+
"loc_weight": 12.083045973594572
|
|
558
558
|
},
|
|
559
559
|
"status": "wontfix",
|
|
560
|
-
"note": "
|
|
560
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
561
561
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
562
|
-
"last_seen": "2026-03-
|
|
563
|
-
"resolved_at": "2026-03-
|
|
564
|
-
"reopen_count":
|
|
562
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
563
|
+
"resolved_at": "2026-03-15T05:09:07+00:00",
|
|
564
|
+
"reopen_count": 2,
|
|
565
565
|
"lang": "typescript",
|
|
566
566
|
"zone": "production",
|
|
567
567
|
"suppressed": false,
|
|
568
568
|
"suppressed_at": null,
|
|
569
569
|
"suppression_pattern": null,
|
|
570
|
-
"wontfix_scan_count":
|
|
570
|
+
"wontfix_scan_count": 10,
|
|
571
571
|
"wontfix_snapshot": {
|
|
572
|
-
"captured_at": "2026-03-
|
|
573
|
-
"scan_count":
|
|
572
|
+
"captured_at": "2026-03-15T05:09:07+00:00",
|
|
573
|
+
"scan_count": 10,
|
|
574
574
|
"tier": 3,
|
|
575
575
|
"confidence": "medium",
|
|
576
576
|
"detail": {
|
|
577
577
|
"kind": "transitive_only",
|
|
578
|
-
"loc":
|
|
578
|
+
"loc": 146,
|
|
579
579
|
"importer_count": 1,
|
|
580
|
-
"loc_weight":
|
|
580
|
+
"loc_weight": 12.083045973594572
|
|
581
581
|
}
|
|
582
582
|
},
|
|
583
583
|
"resolution_attestation": {
|
|
584
584
|
"kind": "manual",
|
|
585
|
-
"text": "I have actually
|
|
586
|
-
"attested_at": "2026-03-
|
|
585
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
586
|
+
"attested_at": "2026-03-15T05:09:07+00:00",
|
|
587
587
|
"scan_verified": false
|
|
588
588
|
}
|
|
589
589
|
},
|
|
@@ -624,41 +624,41 @@
|
|
|
624
624
|
"file": "src/formats/anthropic/serialize.ts",
|
|
625
625
|
"tier": 3,
|
|
626
626
|
"confidence": "medium",
|
|
627
|
-
"summary": "No direct tests (
|
|
627
|
+
"summary": "No direct tests (179 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
628
628
|
"detail": {
|
|
629
629
|
"kind": "transitive_only",
|
|
630
|
-
"loc":
|
|
630
|
+
"loc": 179,
|
|
631
631
|
"importer_count": 1,
|
|
632
|
-
"loc_weight":
|
|
632
|
+
"loc_weight": 13.379088160259652
|
|
633
633
|
},
|
|
634
634
|
"status": "wontfix",
|
|
635
|
-
"note": "
|
|
635
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
636
636
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
637
|
-
"last_seen": "2026-03-
|
|
638
|
-
"resolved_at": "2026-03-
|
|
639
|
-
"reopen_count":
|
|
637
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
638
|
+
"resolved_at": "2026-03-15T05:09:06+00:00",
|
|
639
|
+
"reopen_count": 2,
|
|
640
640
|
"lang": "typescript",
|
|
641
641
|
"zone": "production",
|
|
642
642
|
"suppressed": false,
|
|
643
643
|
"suppressed_at": null,
|
|
644
644
|
"suppression_pattern": null,
|
|
645
|
-
"wontfix_scan_count":
|
|
645
|
+
"wontfix_scan_count": 10,
|
|
646
646
|
"wontfix_snapshot": {
|
|
647
|
-
"captured_at": "2026-03-
|
|
648
|
-
"scan_count":
|
|
647
|
+
"captured_at": "2026-03-15T05:09:06+00:00",
|
|
648
|
+
"scan_count": 10,
|
|
649
649
|
"tier": 3,
|
|
650
650
|
"confidence": "medium",
|
|
651
651
|
"detail": {
|
|
652
652
|
"kind": "transitive_only",
|
|
653
|
-
"loc":
|
|
653
|
+
"loc": 179,
|
|
654
654
|
"importer_count": 1,
|
|
655
|
-
"loc_weight":
|
|
655
|
+
"loc_weight": 13.379088160259652
|
|
656
656
|
}
|
|
657
657
|
},
|
|
658
658
|
"resolution_attestation": {
|
|
659
659
|
"kind": "manual",
|
|
660
|
-
"text": "I have actually
|
|
661
|
-
"attested_at": "2026-03-
|
|
660
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
661
|
+
"attested_at": "2026-03-15T05:09:06+00:00",
|
|
662
662
|
"scan_verified": false
|
|
663
663
|
}
|
|
664
664
|
},
|
|
@@ -668,41 +668,41 @@
|
|
|
668
668
|
"file": "src/formats/responses/parse.ts",
|
|
669
669
|
"tier": 3,
|
|
670
670
|
"confidence": "medium",
|
|
671
|
-
"summary": "No direct tests (
|
|
671
|
+
"summary": "No direct tests (70 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
672
672
|
"detail": {
|
|
673
673
|
"kind": "transitive_only",
|
|
674
|
-
"loc":
|
|
674
|
+
"loc": 70,
|
|
675
675
|
"importer_count": 1,
|
|
676
|
-
"loc_weight":
|
|
676
|
+
"loc_weight": 8.366600265340756
|
|
677
677
|
},
|
|
678
678
|
"status": "wontfix",
|
|
679
|
-
"note": "
|
|
679
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
680
680
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
681
|
-
"last_seen": "2026-03-
|
|
682
|
-
"resolved_at": "2026-03-
|
|
683
|
-
"reopen_count":
|
|
681
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
682
|
+
"resolved_at": "2026-03-15T05:09:09+00:00",
|
|
683
|
+
"reopen_count": 2,
|
|
684
684
|
"lang": "typescript",
|
|
685
685
|
"zone": "production",
|
|
686
686
|
"suppressed": false,
|
|
687
687
|
"suppressed_at": null,
|
|
688
688
|
"suppression_pattern": null,
|
|
689
|
-
"wontfix_scan_count":
|
|
689
|
+
"wontfix_scan_count": 10,
|
|
690
690
|
"wontfix_snapshot": {
|
|
691
|
-
"captured_at": "2026-03-
|
|
692
|
-
"scan_count":
|
|
691
|
+
"captured_at": "2026-03-15T05:09:09+00:00",
|
|
692
|
+
"scan_count": 10,
|
|
693
693
|
"tier": 3,
|
|
694
694
|
"confidence": "medium",
|
|
695
695
|
"detail": {
|
|
696
696
|
"kind": "transitive_only",
|
|
697
|
-
"loc":
|
|
697
|
+
"loc": 70,
|
|
698
698
|
"importer_count": 1,
|
|
699
|
-
"loc_weight":
|
|
699
|
+
"loc_weight": 8.366600265340756
|
|
700
700
|
}
|
|
701
701
|
},
|
|
702
702
|
"resolution_attestation": {
|
|
703
703
|
"kind": "manual",
|
|
704
|
-
"text": "I have actually
|
|
705
|
-
"attested_at": "2026-03-
|
|
704
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
705
|
+
"attested_at": "2026-03-15T05:09:09+00:00",
|
|
706
706
|
"scan_verified": false
|
|
707
707
|
}
|
|
708
708
|
},
|
|
@@ -743,41 +743,41 @@
|
|
|
743
743
|
"file": "src/route-handler.ts",
|
|
744
744
|
"tier": 3,
|
|
745
745
|
"confidence": "medium",
|
|
746
|
-
"summary": "No direct tests (
|
|
746
|
+
"summary": "No direct tests (148 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
747
747
|
"detail": {
|
|
748
748
|
"kind": "transitive_only",
|
|
749
|
-
"loc":
|
|
749
|
+
"loc": 148,
|
|
750
750
|
"importer_count": 1,
|
|
751
|
-
"loc_weight":
|
|
751
|
+
"loc_weight": 12.165525060596439
|
|
752
752
|
},
|
|
753
753
|
"status": "wontfix",
|
|
754
|
-
"note": "
|
|
754
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
755
755
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
756
|
-
"last_seen": "2026-03-
|
|
757
|
-
"resolved_at": "2026-03-
|
|
758
|
-
"reopen_count":
|
|
756
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
757
|
+
"resolved_at": "2026-03-15T05:09:09+00:00",
|
|
758
|
+
"reopen_count": 2,
|
|
759
759
|
"lang": "typescript",
|
|
760
760
|
"zone": "production",
|
|
761
761
|
"suppressed": false,
|
|
762
762
|
"suppressed_at": null,
|
|
763
763
|
"suppression_pattern": null,
|
|
764
|
-
"wontfix_scan_count":
|
|
764
|
+
"wontfix_scan_count": 10,
|
|
765
765
|
"wontfix_snapshot": {
|
|
766
|
-
"captured_at": "2026-03-
|
|
767
|
-
"scan_count":
|
|
766
|
+
"captured_at": "2026-03-15T05:09:09+00:00",
|
|
767
|
+
"scan_count": 10,
|
|
768
768
|
"tier": 3,
|
|
769
769
|
"confidence": "medium",
|
|
770
770
|
"detail": {
|
|
771
771
|
"kind": "transitive_only",
|
|
772
|
-
"loc":
|
|
772
|
+
"loc": 148,
|
|
773
773
|
"importer_count": 1,
|
|
774
|
-
"loc_weight":
|
|
774
|
+
"loc_weight": 12.165525060596439
|
|
775
775
|
}
|
|
776
776
|
},
|
|
777
777
|
"resolution_attestation": {
|
|
778
778
|
"kind": "manual",
|
|
779
|
-
"text": "I have actually
|
|
780
|
-
"attested_at": "2026-03-
|
|
779
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
780
|
+
"attested_at": "2026-03-15T05:09:09+00:00",
|
|
781
781
|
"scan_verified": false
|
|
782
782
|
}
|
|
783
783
|
},
|
|
@@ -787,41 +787,41 @@
|
|
|
787
787
|
"file": "src/formats/responses/serialize.ts",
|
|
788
788
|
"tier": 3,
|
|
789
789
|
"confidence": "medium",
|
|
790
|
-
"summary": "No direct tests (
|
|
790
|
+
"summary": "No direct tests (328 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
791
791
|
"detail": {
|
|
792
792
|
"kind": "transitive_only",
|
|
793
|
-
"loc":
|
|
793
|
+
"loc": 328,
|
|
794
794
|
"importer_count": 1,
|
|
795
|
-
"loc_weight":
|
|
795
|
+
"loc_weight": 18.110770276274835
|
|
796
796
|
},
|
|
797
797
|
"status": "wontfix",
|
|
798
|
-
"note": "
|
|
798
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
799
799
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
800
|
-
"last_seen": "2026-03-
|
|
801
|
-
"resolved_at": "2026-03-
|
|
802
|
-
"reopen_count":
|
|
800
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
801
|
+
"resolved_at": "2026-03-15T05:09:07+00:00",
|
|
802
|
+
"reopen_count": 2,
|
|
803
803
|
"lang": "typescript",
|
|
804
804
|
"zone": "production",
|
|
805
805
|
"suppressed": false,
|
|
806
806
|
"suppressed_at": null,
|
|
807
807
|
"suppression_pattern": null,
|
|
808
|
-
"wontfix_scan_count":
|
|
808
|
+
"wontfix_scan_count": 10,
|
|
809
809
|
"wontfix_snapshot": {
|
|
810
|
-
"captured_at": "2026-03-
|
|
811
|
-
"scan_count":
|
|
810
|
+
"captured_at": "2026-03-15T05:09:07+00:00",
|
|
811
|
+
"scan_count": 10,
|
|
812
812
|
"tier": 3,
|
|
813
813
|
"confidence": "medium",
|
|
814
814
|
"detail": {
|
|
815
815
|
"kind": "transitive_only",
|
|
816
|
-
"loc":
|
|
816
|
+
"loc": 328,
|
|
817
817
|
"importer_count": 1,
|
|
818
|
-
"loc_weight":
|
|
818
|
+
"loc_weight": 18.110770276274835
|
|
819
819
|
}
|
|
820
820
|
},
|
|
821
821
|
"resolution_attestation": {
|
|
822
822
|
"kind": "manual",
|
|
823
|
-
"text": "I have actually
|
|
824
|
-
"attested_at": "2026-03-
|
|
823
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
824
|
+
"attested_at": "2026-03-15T05:09:07+00:00",
|
|
825
825
|
"scan_verified": false
|
|
826
826
|
}
|
|
827
827
|
},
|
|
@@ -831,41 +831,41 @@
|
|
|
831
831
|
"file": "src/formats/openai/parse.ts",
|
|
832
832
|
"tier": 3,
|
|
833
833
|
"confidence": "medium",
|
|
834
|
-
"summary": "No direct tests (
|
|
834
|
+
"summary": "No direct tests (44 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
835
835
|
"detail": {
|
|
836
836
|
"kind": "transitive_only",
|
|
837
|
-
"loc":
|
|
837
|
+
"loc": 44,
|
|
838
838
|
"importer_count": 1,
|
|
839
|
-
"loc_weight":
|
|
839
|
+
"loc_weight": 6.6332495807108
|
|
840
840
|
},
|
|
841
841
|
"status": "wontfix",
|
|
842
|
-
"note": "
|
|
842
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
843
843
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
844
|
-
"last_seen": "2026-03-
|
|
845
|
-
"resolved_at": "2026-03-
|
|
846
|
-
"reopen_count":
|
|
844
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
845
|
+
"resolved_at": "2026-03-15T05:09:09+00:00",
|
|
846
|
+
"reopen_count": 2,
|
|
847
847
|
"lang": "typescript",
|
|
848
848
|
"zone": "production",
|
|
849
849
|
"suppressed": false,
|
|
850
850
|
"suppressed_at": null,
|
|
851
851
|
"suppression_pattern": null,
|
|
852
|
-
"wontfix_scan_count":
|
|
852
|
+
"wontfix_scan_count": 10,
|
|
853
853
|
"wontfix_snapshot": {
|
|
854
|
-
"captured_at": "2026-03-
|
|
855
|
-
"scan_count":
|
|
854
|
+
"captured_at": "2026-03-15T05:09:09+00:00",
|
|
855
|
+
"scan_count": 10,
|
|
856
856
|
"tier": 3,
|
|
857
857
|
"confidence": "medium",
|
|
858
858
|
"detail": {
|
|
859
859
|
"kind": "transitive_only",
|
|
860
|
-
"loc":
|
|
860
|
+
"loc": 44,
|
|
861
861
|
"importer_count": 1,
|
|
862
|
-
"loc_weight":
|
|
862
|
+
"loc_weight": 6.6332495807108
|
|
863
863
|
}
|
|
864
864
|
},
|
|
865
865
|
"resolution_attestation": {
|
|
866
866
|
"kind": "manual",
|
|
867
|
-
"text": "I have actually
|
|
868
|
-
"attested_at": "2026-03-
|
|
867
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
868
|
+
"attested_at": "2026-03-15T05:09:09+00:00",
|
|
869
869
|
"scan_verified": false
|
|
870
870
|
}
|
|
871
871
|
},
|
|
@@ -875,41 +875,41 @@
|
|
|
875
875
|
"file": "src/formats/anthropic/parse.ts",
|
|
876
876
|
"tier": 3,
|
|
877
877
|
"confidence": "medium",
|
|
878
|
-
"summary": "No direct tests (
|
|
878
|
+
"summary": "No direct tests (67 LOC, 1 importers) \u2014 covered only via imports from tested modules",
|
|
879
879
|
"detail": {
|
|
880
880
|
"kind": "transitive_only",
|
|
881
|
-
"loc":
|
|
881
|
+
"loc": 67,
|
|
882
882
|
"importer_count": 1,
|
|
883
|
-
"loc_weight":
|
|
883
|
+
"loc_weight": 8.18535277187245
|
|
884
884
|
},
|
|
885
885
|
"status": "wontfix",
|
|
886
|
-
"note": "
|
|
886
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
887
887
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
888
|
-
"last_seen": "2026-03-
|
|
889
|
-
"resolved_at": "2026-03-
|
|
890
|
-
"reopen_count":
|
|
888
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
889
|
+
"resolved_at": "2026-03-15T05:09:08+00:00",
|
|
890
|
+
"reopen_count": 2,
|
|
891
891
|
"lang": "typescript",
|
|
892
892
|
"zone": "production",
|
|
893
893
|
"suppressed": false,
|
|
894
894
|
"suppressed_at": null,
|
|
895
895
|
"suppression_pattern": null,
|
|
896
|
-
"wontfix_scan_count":
|
|
896
|
+
"wontfix_scan_count": 10,
|
|
897
897
|
"wontfix_snapshot": {
|
|
898
|
-
"captured_at": "2026-03-
|
|
899
|
-
"scan_count":
|
|
898
|
+
"captured_at": "2026-03-15T05:09:08+00:00",
|
|
899
|
+
"scan_count": 10,
|
|
900
900
|
"tier": 3,
|
|
901
901
|
"confidence": "medium",
|
|
902
902
|
"detail": {
|
|
903
903
|
"kind": "transitive_only",
|
|
904
|
-
"loc":
|
|
904
|
+
"loc": 67,
|
|
905
905
|
"importer_count": 1,
|
|
906
|
-
"loc_weight":
|
|
906
|
+
"loc_weight": 8.18535277187245
|
|
907
907
|
}
|
|
908
908
|
},
|
|
909
909
|
"resolution_attestation": {
|
|
910
910
|
"kind": "manual",
|
|
911
|
-
"text": "I have actually
|
|
912
|
-
"attested_at": "2026-03-
|
|
911
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
912
|
+
"attested_at": "2026-03-15T05:09:08+00:00",
|
|
913
913
|
"scan_verified": false
|
|
914
914
|
}
|
|
915
915
|
},
|
|
@@ -919,41 +919,41 @@
|
|
|
919
919
|
"file": "src/cli.ts",
|
|
920
920
|
"tier": 3,
|
|
921
921
|
"confidence": "high",
|
|
922
|
-
"summary": "Untested module (
|
|
922
|
+
"summary": "Untested module (146 LOC, 0 importers)",
|
|
923
923
|
"detail": {
|
|
924
924
|
"kind": "untested_module",
|
|
925
|
-
"loc":
|
|
925
|
+
"loc": 146,
|
|
926
926
|
"importer_count": 0,
|
|
927
|
-
"loc_weight":
|
|
927
|
+
"loc_weight": 12.083045973594572
|
|
928
928
|
},
|
|
929
929
|
"status": "wontfix",
|
|
930
|
-
"note": "
|
|
930
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
931
931
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
932
|
-
"last_seen": "2026-03-
|
|
933
|
-
"resolved_at": "2026-03-
|
|
934
|
-
"reopen_count":
|
|
932
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
933
|
+
"resolved_at": "2026-03-15T05:09:05+00:00",
|
|
934
|
+
"reopen_count": 2,
|
|
935
935
|
"lang": "typescript",
|
|
936
936
|
"zone": "production",
|
|
937
937
|
"suppressed": false,
|
|
938
938
|
"suppressed_at": null,
|
|
939
939
|
"suppression_pattern": null,
|
|
940
|
-
"wontfix_scan_count":
|
|
940
|
+
"wontfix_scan_count": 10,
|
|
941
941
|
"wontfix_snapshot": {
|
|
942
|
-
"captured_at": "2026-03-
|
|
943
|
-
"scan_count":
|
|
942
|
+
"captured_at": "2026-03-15T05:09:05+00:00",
|
|
943
|
+
"scan_count": 10,
|
|
944
944
|
"tier": 3,
|
|
945
945
|
"confidence": "high",
|
|
946
946
|
"detail": {
|
|
947
947
|
"kind": "untested_module",
|
|
948
|
-
"loc":
|
|
948
|
+
"loc": 146,
|
|
949
949
|
"importer_count": 0,
|
|
950
|
-
"loc_weight":
|
|
950
|
+
"loc_weight": 12.083045973594572
|
|
951
951
|
}
|
|
952
952
|
},
|
|
953
953
|
"resolution_attestation": {
|
|
954
954
|
"kind": "manual",
|
|
955
|
-
"text": "I have actually
|
|
956
|
-
"attested_at": "2026-03-
|
|
955
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
956
|
+
"attested_at": "2026-03-15T05:09:05+00:00",
|
|
957
957
|
"scan_verified": false
|
|
958
958
|
}
|
|
959
959
|
},
|
|
@@ -1031,24 +1031,24 @@
|
|
|
1031
1031
|
"severity": "medium",
|
|
1032
1032
|
"count": 1,
|
|
1033
1033
|
"lines": [
|
|
1034
|
-
|
|
1034
|
+
85
|
|
1035
1035
|
]
|
|
1036
1036
|
},
|
|
1037
1037
|
"status": "wontfix",
|
|
1038
|
-
"note": "
|
|
1038
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1039
1039
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1040
|
-
"last_seen": "2026-03-
|
|
1041
|
-
"resolved_at": "2026-03-
|
|
1042
|
-
"reopen_count":
|
|
1040
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1041
|
+
"resolved_at": "2026-03-15T05:09:06+00:00",
|
|
1042
|
+
"reopen_count": 2,
|
|
1043
1043
|
"lang": "typescript",
|
|
1044
1044
|
"zone": "production",
|
|
1045
1045
|
"suppressed": false,
|
|
1046
1046
|
"suppressed_at": null,
|
|
1047
1047
|
"suppression_pattern": null,
|
|
1048
|
-
"wontfix_scan_count":
|
|
1048
|
+
"wontfix_scan_count": 10,
|
|
1049
1049
|
"wontfix_snapshot": {
|
|
1050
|
-
"captured_at": "2026-03-
|
|
1051
|
-
"scan_count":
|
|
1050
|
+
"captured_at": "2026-03-15T05:09:06+00:00",
|
|
1051
|
+
"scan_count": 10,
|
|
1052
1052
|
"tier": 3,
|
|
1053
1053
|
"confidence": "medium",
|
|
1054
1054
|
"detail": {
|
|
@@ -1056,14 +1056,14 @@
|
|
|
1056
1056
|
"severity": "medium",
|
|
1057
1057
|
"count": 1,
|
|
1058
1058
|
"lines": [
|
|
1059
|
-
|
|
1059
|
+
85
|
|
1060
1060
|
]
|
|
1061
1061
|
}
|
|
1062
1062
|
},
|
|
1063
1063
|
"resolution_attestation": {
|
|
1064
1064
|
"kind": "manual",
|
|
1065
|
-
"text": "I have actually
|
|
1066
|
-
"attested_at": "2026-03-
|
|
1065
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1066
|
+
"attested_at": "2026-03-15T05:09:06+00:00",
|
|
1067
1067
|
"scan_verified": false
|
|
1068
1068
|
}
|
|
1069
1069
|
},
|
|
@@ -1079,24 +1079,24 @@
|
|
|
1079
1079
|
"severity": "medium",
|
|
1080
1080
|
"count": 1,
|
|
1081
1081
|
"lines": [
|
|
1082
|
-
|
|
1082
|
+
49
|
|
1083
1083
|
]
|
|
1084
1084
|
},
|
|
1085
1085
|
"status": "wontfix",
|
|
1086
|
-
"note": "
|
|
1086
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1087
1087
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1088
|
-
"last_seen": "2026-03-
|
|
1089
|
-
"resolved_at": "2026-03-
|
|
1090
|
-
"reopen_count":
|
|
1088
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1089
|
+
"resolved_at": "2026-03-15T05:09:06+00:00",
|
|
1090
|
+
"reopen_count": 2,
|
|
1091
1091
|
"lang": "typescript",
|
|
1092
1092
|
"zone": "production",
|
|
1093
1093
|
"suppressed": false,
|
|
1094
1094
|
"suppressed_at": null,
|
|
1095
1095
|
"suppression_pattern": null,
|
|
1096
|
-
"wontfix_scan_count":
|
|
1096
|
+
"wontfix_scan_count": 10,
|
|
1097
1097
|
"wontfix_snapshot": {
|
|
1098
|
-
"captured_at": "2026-03-
|
|
1099
|
-
"scan_count":
|
|
1098
|
+
"captured_at": "2026-03-15T05:09:06+00:00",
|
|
1099
|
+
"scan_count": 10,
|
|
1100
1100
|
"tier": 3,
|
|
1101
1101
|
"confidence": "medium",
|
|
1102
1102
|
"detail": {
|
|
@@ -1104,14 +1104,14 @@
|
|
|
1104
1104
|
"severity": "medium",
|
|
1105
1105
|
"count": 1,
|
|
1106
1106
|
"lines": [
|
|
1107
|
-
|
|
1107
|
+
49
|
|
1108
1108
|
]
|
|
1109
1109
|
}
|
|
1110
1110
|
},
|
|
1111
1111
|
"resolution_attestation": {
|
|
1112
1112
|
"kind": "manual",
|
|
1113
|
-
"text": "I have actually
|
|
1114
|
-
"attested_at": "2026-03-
|
|
1113
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1114
|
+
"attested_at": "2026-03-15T05:09:06+00:00",
|
|
1115
1115
|
"scan_verified": false
|
|
1116
1116
|
}
|
|
1117
1117
|
},
|
|
@@ -1127,24 +1127,24 @@
|
|
|
1127
1127
|
"severity": "medium",
|
|
1128
1128
|
"count": 1,
|
|
1129
1129
|
"lines": [
|
|
1130
|
-
|
|
1130
|
+
210
|
|
1131
1131
|
]
|
|
1132
1132
|
},
|
|
1133
1133
|
"status": "wontfix",
|
|
1134
|
-
"note": "
|
|
1134
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1135
1135
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1136
|
-
"last_seen": "2026-03-
|
|
1137
|
-
"resolved_at": "2026-03-
|
|
1138
|
-
"reopen_count":
|
|
1136
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1137
|
+
"resolved_at": "2026-03-15T05:09:07+00:00",
|
|
1138
|
+
"reopen_count": 2,
|
|
1139
1139
|
"lang": "typescript",
|
|
1140
1140
|
"zone": "production",
|
|
1141
1141
|
"suppressed": false,
|
|
1142
1142
|
"suppressed_at": null,
|
|
1143
1143
|
"suppression_pattern": null,
|
|
1144
|
-
"wontfix_scan_count":
|
|
1144
|
+
"wontfix_scan_count": 10,
|
|
1145
1145
|
"wontfix_snapshot": {
|
|
1146
|
-
"captured_at": "2026-03-
|
|
1147
|
-
"scan_count":
|
|
1146
|
+
"captured_at": "2026-03-15T05:09:07+00:00",
|
|
1147
|
+
"scan_count": 10,
|
|
1148
1148
|
"tier": 3,
|
|
1149
1149
|
"confidence": "medium",
|
|
1150
1150
|
"detail": {
|
|
@@ -1152,14 +1152,14 @@
|
|
|
1152
1152
|
"severity": "medium",
|
|
1153
1153
|
"count": 1,
|
|
1154
1154
|
"lines": [
|
|
1155
|
-
|
|
1155
|
+
210
|
|
1156
1156
|
]
|
|
1157
1157
|
}
|
|
1158
1158
|
},
|
|
1159
1159
|
"resolution_attestation": {
|
|
1160
1160
|
"kind": "manual",
|
|
1161
|
-
"text": "I have actually
|
|
1162
|
-
"attested_at": "2026-03-
|
|
1161
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1162
|
+
"attested_at": "2026-03-15T05:09:07+00:00",
|
|
1163
1163
|
"scan_verified": false
|
|
1164
1164
|
}
|
|
1165
1165
|
},
|
|
@@ -1179,20 +1179,20 @@
|
|
|
1179
1179
|
]
|
|
1180
1180
|
},
|
|
1181
1181
|
"status": "wontfix",
|
|
1182
|
-
"note": "
|
|
1182
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1183
1183
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1184
|
-
"last_seen": "2026-03-
|
|
1185
|
-
"resolved_at": "2026-03-
|
|
1186
|
-
"reopen_count":
|
|
1184
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1185
|
+
"resolved_at": "2026-03-15T05:09:09+00:00",
|
|
1186
|
+
"reopen_count": 2,
|
|
1187
1187
|
"lang": "typescript",
|
|
1188
1188
|
"zone": "production",
|
|
1189
1189
|
"suppressed": false,
|
|
1190
1190
|
"suppressed_at": null,
|
|
1191
1191
|
"suppression_pattern": null,
|
|
1192
|
-
"wontfix_scan_count":
|
|
1192
|
+
"wontfix_scan_count": 10,
|
|
1193
1193
|
"wontfix_snapshot": {
|
|
1194
|
-
"captured_at": "2026-03-
|
|
1195
|
-
"scan_count":
|
|
1194
|
+
"captured_at": "2026-03-15T05:09:09+00:00",
|
|
1195
|
+
"scan_count": 10,
|
|
1196
1196
|
"tier": 3,
|
|
1197
1197
|
"confidence": "medium",
|
|
1198
1198
|
"detail": {
|
|
@@ -1206,8 +1206,8 @@
|
|
|
1206
1206
|
},
|
|
1207
1207
|
"resolution_attestation": {
|
|
1208
1208
|
"kind": "manual",
|
|
1209
|
-
"text": "I have actually
|
|
1210
|
-
"attested_at": "2026-03-
|
|
1209
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1210
|
+
"attested_at": "2026-03-15T05:09:09+00:00",
|
|
1211
1211
|
"scan_verified": false
|
|
1212
1212
|
}
|
|
1213
1213
|
},
|
|
@@ -1227,20 +1227,20 @@
|
|
|
1227
1227
|
]
|
|
1228
1228
|
},
|
|
1229
1229
|
"status": "wontfix",
|
|
1230
|
-
"note": "
|
|
1230
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1231
1231
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1232
|
-
"last_seen": "2026-03-
|
|
1233
|
-
"resolved_at": "2026-03-
|
|
1234
|
-
"reopen_count":
|
|
1232
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1233
|
+
"resolved_at": "2026-03-15T05:09:04+00:00",
|
|
1234
|
+
"reopen_count": 2,
|
|
1235
1235
|
"lang": "typescript",
|
|
1236
1236
|
"zone": "production",
|
|
1237
1237
|
"suppressed": false,
|
|
1238
1238
|
"suppressed_at": null,
|
|
1239
1239
|
"suppression_pattern": null,
|
|
1240
|
-
"wontfix_scan_count":
|
|
1240
|
+
"wontfix_scan_count": 10,
|
|
1241
1241
|
"wontfix_snapshot": {
|
|
1242
|
-
"captured_at": "2026-03-
|
|
1243
|
-
"scan_count":
|
|
1242
|
+
"captured_at": "2026-03-15T05:09:04+00:00",
|
|
1243
|
+
"scan_count": 10,
|
|
1244
1244
|
"tier": 3,
|
|
1245
1245
|
"confidence": "medium",
|
|
1246
1246
|
"detail": {
|
|
@@ -1254,8 +1254,8 @@
|
|
|
1254
1254
|
},
|
|
1255
1255
|
"resolution_attestation": {
|
|
1256
1256
|
"kind": "manual",
|
|
1257
|
-
"text": "I have actually
|
|
1258
|
-
"attested_at": "2026-03-
|
|
1257
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1258
|
+
"attested_at": "2026-03-15T05:09:04+00:00",
|
|
1259
1259
|
"scan_verified": false
|
|
1260
1260
|
}
|
|
1261
1261
|
},
|
|
@@ -1319,26 +1319,26 @@
|
|
|
1319
1319
|
"severity": "medium",
|
|
1320
1320
|
"count": 3,
|
|
1321
1321
|
"lines": [
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1322
|
+
40,
|
|
1323
|
+
53,
|
|
1324
|
+
67
|
|
1325
1325
|
]
|
|
1326
1326
|
},
|
|
1327
1327
|
"status": "wontfix",
|
|
1328
|
-
"note": "
|
|
1328
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
1329
1329
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1330
|
-
"last_seen": "2026-03-
|
|
1331
|
-
"resolved_at": "2026-03-
|
|
1332
|
-
"reopen_count":
|
|
1330
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1331
|
+
"resolved_at": "2026-03-15T05:10:01+00:00",
|
|
1332
|
+
"reopen_count": 2,
|
|
1333
1333
|
"lang": "typescript",
|
|
1334
1334
|
"zone": "test",
|
|
1335
1335
|
"suppressed": false,
|
|
1336
1336
|
"suppressed_at": null,
|
|
1337
1337
|
"suppression_pattern": null,
|
|
1338
|
-
"wontfix_scan_count":
|
|
1338
|
+
"wontfix_scan_count": 10,
|
|
1339
1339
|
"wontfix_snapshot": {
|
|
1340
|
-
"captured_at": "2026-03-
|
|
1341
|
-
"scan_count":
|
|
1340
|
+
"captured_at": "2026-03-15T05:10:01+00:00",
|
|
1341
|
+
"scan_count": 10,
|
|
1342
1342
|
"tier": 3,
|
|
1343
1343
|
"confidence": "low",
|
|
1344
1344
|
"detail": {
|
|
@@ -1346,16 +1346,16 @@
|
|
|
1346
1346
|
"severity": "medium",
|
|
1347
1347
|
"count": 3,
|
|
1348
1348
|
"lines": [
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1349
|
+
40,
|
|
1350
|
+
53,
|
|
1351
|
+
67
|
|
1352
1352
|
]
|
|
1353
1353
|
}
|
|
1354
1354
|
},
|
|
1355
1355
|
"resolution_attestation": {
|
|
1356
1356
|
"kind": "manual",
|
|
1357
|
-
"text": "I have actually
|
|
1358
|
-
"attested_at": "2026-03-
|
|
1357
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
1358
|
+
"attested_at": "2026-03-15T05:10:01+00:00",
|
|
1359
1359
|
"scan_verified": false
|
|
1360
1360
|
}
|
|
1361
1361
|
},
|
|
@@ -1423,20 +1423,20 @@
|
|
|
1423
1423
|
]
|
|
1424
1424
|
},
|
|
1425
1425
|
"status": "wontfix",
|
|
1426
|
-
"note": "
|
|
1426
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1427
1427
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1428
|
-
"last_seen": "2026-03-
|
|
1429
|
-
"resolved_at": "2026-03-
|
|
1430
|
-
"reopen_count":
|
|
1428
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1429
|
+
"resolved_at": "2026-03-15T05:09:04+00:00",
|
|
1430
|
+
"reopen_count": 2,
|
|
1431
1431
|
"lang": "typescript",
|
|
1432
1432
|
"zone": "production",
|
|
1433
1433
|
"suppressed": false,
|
|
1434
1434
|
"suppressed_at": null,
|
|
1435
1435
|
"suppression_pattern": null,
|
|
1436
|
-
"wontfix_scan_count":
|
|
1436
|
+
"wontfix_scan_count": 10,
|
|
1437
1437
|
"wontfix_snapshot": {
|
|
1438
|
-
"captured_at": "2026-03-
|
|
1439
|
-
"scan_count":
|
|
1438
|
+
"captured_at": "2026-03-15T05:09:04+00:00",
|
|
1439
|
+
"scan_count": 10,
|
|
1440
1440
|
"tier": 3,
|
|
1441
1441
|
"confidence": "medium",
|
|
1442
1442
|
"detail": {
|
|
@@ -1450,8 +1450,8 @@
|
|
|
1450
1450
|
},
|
|
1451
1451
|
"resolution_attestation": {
|
|
1452
1452
|
"kind": "manual",
|
|
1453
|
-
"text": "I have actually
|
|
1454
|
-
"attested_at": "2026-03-
|
|
1453
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1454
|
+
"attested_at": "2026-03-15T05:09:04+00:00",
|
|
1455
1455
|
"scan_verified": false
|
|
1456
1456
|
}
|
|
1457
1457
|
},
|
|
@@ -1461,45 +1461,51 @@
|
|
|
1461
1461
|
"file": "test/mock-server.test.ts",
|
|
1462
1462
|
"tier": 3,
|
|
1463
1463
|
"confidence": "low",
|
|
1464
|
-
"summary": "
|
|
1464
|
+
"summary": "4x Async functions without await",
|
|
1465
1465
|
"detail": {
|
|
1466
1466
|
"smell_id": "async_no_await",
|
|
1467
1467
|
"severity": "medium",
|
|
1468
|
-
"count":
|
|
1468
|
+
"count": 4,
|
|
1469
1469
|
"lines": [
|
|
1470
|
-
|
|
1470
|
+
32,
|
|
1471
|
+
40,
|
|
1472
|
+
53,
|
|
1473
|
+
67
|
|
1471
1474
|
]
|
|
1472
1475
|
},
|
|
1473
1476
|
"status": "wontfix",
|
|
1474
|
-
"note": "
|
|
1477
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1475
1478
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1476
|
-
"last_seen": "2026-03-
|
|
1477
|
-
"resolved_at": "2026-03-
|
|
1478
|
-
"reopen_count":
|
|
1479
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1480
|
+
"resolved_at": "2026-03-15T05:09:07+00:00",
|
|
1481
|
+
"reopen_count": 2,
|
|
1479
1482
|
"lang": "typescript",
|
|
1480
1483
|
"zone": "test",
|
|
1481
1484
|
"suppressed": false,
|
|
1482
1485
|
"suppressed_at": null,
|
|
1483
1486
|
"suppression_pattern": null,
|
|
1484
|
-
"wontfix_scan_count":
|
|
1487
|
+
"wontfix_scan_count": 10,
|
|
1485
1488
|
"wontfix_snapshot": {
|
|
1486
|
-
"captured_at": "2026-03-
|
|
1487
|
-
"scan_count":
|
|
1489
|
+
"captured_at": "2026-03-15T05:09:07+00:00",
|
|
1490
|
+
"scan_count": 10,
|
|
1488
1491
|
"tier": 3,
|
|
1489
1492
|
"confidence": "low",
|
|
1490
1493
|
"detail": {
|
|
1491
1494
|
"smell_id": "async_no_await",
|
|
1492
1495
|
"severity": "medium",
|
|
1493
|
-
"count":
|
|
1496
|
+
"count": 4,
|
|
1494
1497
|
"lines": [
|
|
1495
|
-
|
|
1498
|
+
32,
|
|
1499
|
+
40,
|
|
1500
|
+
53,
|
|
1501
|
+
67
|
|
1496
1502
|
]
|
|
1497
1503
|
}
|
|
1498
1504
|
},
|
|
1499
1505
|
"resolution_attestation": {
|
|
1500
1506
|
"kind": "manual",
|
|
1501
|
-
"text": "I have actually
|
|
1502
|
-
"attested_at": "2026-03-
|
|
1507
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1508
|
+
"attested_at": "2026-03-15T05:09:07+00:00",
|
|
1503
1509
|
"scan_verified": false
|
|
1504
1510
|
}
|
|
1505
1511
|
},
|
|
@@ -1515,24 +1521,24 @@
|
|
|
1515
1521
|
"severity": "medium",
|
|
1516
1522
|
"count": 1,
|
|
1517
1523
|
"lines": [
|
|
1518
|
-
|
|
1524
|
+
144
|
|
1519
1525
|
]
|
|
1520
1526
|
},
|
|
1521
1527
|
"status": "wontfix",
|
|
1522
|
-
"note": "
|
|
1528
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1523
1529
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1524
|
-
"last_seen": "2026-03-
|
|
1525
|
-
"resolved_at": "2026-03-
|
|
1526
|
-
"reopen_count":
|
|
1530
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1531
|
+
"resolved_at": "2026-03-15T05:09:05+00:00",
|
|
1532
|
+
"reopen_count": 2,
|
|
1527
1533
|
"lang": "typescript",
|
|
1528
1534
|
"zone": "production",
|
|
1529
1535
|
"suppressed": false,
|
|
1530
1536
|
"suppressed_at": null,
|
|
1531
1537
|
"suppression_pattern": null,
|
|
1532
|
-
"wontfix_scan_count":
|
|
1538
|
+
"wontfix_scan_count": 10,
|
|
1533
1539
|
"wontfix_snapshot": {
|
|
1534
|
-
"captured_at": "2026-03-
|
|
1535
|
-
"scan_count":
|
|
1540
|
+
"captured_at": "2026-03-15T05:09:05+00:00",
|
|
1541
|
+
"scan_count": 10,
|
|
1536
1542
|
"tier": 3,
|
|
1537
1543
|
"confidence": "medium",
|
|
1538
1544
|
"detail": {
|
|
@@ -1540,14 +1546,14 @@
|
|
|
1540
1546
|
"severity": "medium",
|
|
1541
1547
|
"count": 1,
|
|
1542
1548
|
"lines": [
|
|
1543
|
-
|
|
1549
|
+
144
|
|
1544
1550
|
]
|
|
1545
1551
|
}
|
|
1546
1552
|
},
|
|
1547
1553
|
"resolution_attestation": {
|
|
1548
1554
|
"kind": "manual",
|
|
1549
|
-
"text": "I have actually
|
|
1550
|
-
"attested_at": "2026-03-
|
|
1555
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1556
|
+
"attested_at": "2026-03-15T05:09:05+00:00",
|
|
1551
1557
|
"scan_verified": false
|
|
1552
1558
|
}
|
|
1553
1559
|
},
|
|
@@ -1611,24 +1617,24 @@
|
|
|
1611
1617
|
"severity": "medium",
|
|
1612
1618
|
"count": 1,
|
|
1613
1619
|
"lines": [
|
|
1614
|
-
|
|
1620
|
+
99
|
|
1615
1621
|
]
|
|
1616
1622
|
},
|
|
1617
1623
|
"status": "wontfix",
|
|
1618
|
-
"note": "
|
|
1624
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1619
1625
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1620
|
-
"last_seen": "2026-03-
|
|
1621
|
-
"resolved_at": "2026-03-
|
|
1622
|
-
"reopen_count":
|
|
1626
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1627
|
+
"resolved_at": "2026-03-15T05:09:10+00:00",
|
|
1628
|
+
"reopen_count": 2,
|
|
1623
1629
|
"lang": "typescript",
|
|
1624
1630
|
"zone": "test",
|
|
1625
1631
|
"suppressed": false,
|
|
1626
1632
|
"suppressed_at": null,
|
|
1627
1633
|
"suppression_pattern": null,
|
|
1628
|
-
"wontfix_scan_count":
|
|
1634
|
+
"wontfix_scan_count": 10,
|
|
1629
1635
|
"wontfix_snapshot": {
|
|
1630
|
-
"captured_at": "2026-03-
|
|
1631
|
-
"scan_count":
|
|
1636
|
+
"captured_at": "2026-03-15T05:09:10+00:00",
|
|
1637
|
+
"scan_count": 10,
|
|
1632
1638
|
"tier": 3,
|
|
1633
1639
|
"confidence": "low",
|
|
1634
1640
|
"detail": {
|
|
@@ -1636,14 +1642,14 @@
|
|
|
1636
1642
|
"severity": "medium",
|
|
1637
1643
|
"count": 1,
|
|
1638
1644
|
"lines": [
|
|
1639
|
-
|
|
1645
|
+
99
|
|
1640
1646
|
]
|
|
1641
1647
|
}
|
|
1642
1648
|
},
|
|
1643
1649
|
"resolution_attestation": {
|
|
1644
1650
|
"kind": "manual",
|
|
1645
|
-
"text": "I have actually
|
|
1646
|
-
"attested_at": "2026-03-
|
|
1651
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1652
|
+
"attested_at": "2026-03-15T05:09:10+00:00",
|
|
1647
1653
|
"scan_verified": false
|
|
1648
1654
|
}
|
|
1649
1655
|
},
|
|
@@ -1805,20 +1811,20 @@
|
|
|
1805
1811
|
]
|
|
1806
1812
|
},
|
|
1807
1813
|
"status": "wontfix",
|
|
1808
|
-
"note": "
|
|
1814
|
+
"note": "Chronic reopener \u2014 already reviewed",
|
|
1809
1815
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1810
|
-
"last_seen": "2026-03-
|
|
1811
|
-
"resolved_at": "2026-03-
|
|
1812
|
-
"reopen_count":
|
|
1816
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
1817
|
+
"resolved_at": "2026-03-15T05:09:08+00:00",
|
|
1818
|
+
"reopen_count": 2,
|
|
1813
1819
|
"lang": "typescript",
|
|
1814
1820
|
"zone": "production",
|
|
1815
1821
|
"suppressed": false,
|
|
1816
1822
|
"suppressed_at": null,
|
|
1817
1823
|
"suppression_pattern": null,
|
|
1818
|
-
"wontfix_scan_count":
|
|
1824
|
+
"wontfix_scan_count": 10,
|
|
1819
1825
|
"wontfix_snapshot": {
|
|
1820
|
-
"captured_at": "2026-03-
|
|
1821
|
-
"scan_count":
|
|
1826
|
+
"captured_at": "2026-03-15T05:09:08+00:00",
|
|
1827
|
+
"scan_count": 10,
|
|
1822
1828
|
"tier": 3,
|
|
1823
1829
|
"confidence": "low",
|
|
1824
1830
|
"detail": {
|
|
@@ -1832,8 +1838,8 @@
|
|
|
1832
1838
|
},
|
|
1833
1839
|
"resolution_attestation": {
|
|
1834
1840
|
"kind": "manual",
|
|
1835
|
-
"text": "I have actually reviewed
|
|
1836
|
-
"attested_at": "2026-03-
|
|
1841
|
+
"text": "I have actually reviewed this finding previously and confirmed it is intentional and I am not gaming the score by resolving without fixing.",
|
|
1842
|
+
"attested_at": "2026-03-15T05:09:08+00:00",
|
|
1837
1843
|
"scan_verified": false
|
|
1838
1844
|
}
|
|
1839
1845
|
},
|
|
@@ -1882,11 +1888,11 @@
|
|
|
1882
1888
|
}
|
|
1883
1889
|
]
|
|
1884
1890
|
},
|
|
1885
|
-
"status": "
|
|
1886
|
-
"note": "
|
|
1891
|
+
"status": "auto_resolved",
|
|
1892
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
1887
1893
|
"first_seen": "2026-03-14T23:49:59+00:00",
|
|
1888
1894
|
"last_seen": "2026-03-15T00:25:14+00:00",
|
|
1889
|
-
"resolved_at": "2026-03-
|
|
1895
|
+
"resolved_at": "2026-03-15T05:00:28+00:00",
|
|
1890
1896
|
"reopen_count": 1,
|
|
1891
1897
|
"lang": "typescript",
|
|
1892
1898
|
"zone": "production",
|
|
@@ -1939,10 +1945,10 @@
|
|
|
1939
1945
|
}
|
|
1940
1946
|
},
|
|
1941
1947
|
"resolution_attestation": {
|
|
1942
|
-
"kind": "
|
|
1943
|
-
"text": "
|
|
1944
|
-
"attested_at": "2026-03-
|
|
1945
|
-
"scan_verified":
|
|
1948
|
+
"kind": "scan_verified",
|
|
1949
|
+
"text": "Disappeared from detector output",
|
|
1950
|
+
"attested_at": "2026-03-15T05:00:28+00:00",
|
|
1951
|
+
"scan_verified": true
|
|
1946
1952
|
}
|
|
1947
1953
|
},
|
|
1948
1954
|
"subjective_review::src/cli-validators.ts::unreviewed": {
|
|
@@ -3483,26 +3489,20 @@
|
|
|
3483
3489
|
]
|
|
3484
3490
|
},
|
|
3485
3491
|
"status": "wontfix",
|
|
3486
|
-
"note": "
|
|
3492
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
3487
3493
|
"first_seen": "2026-03-15T00:09:54+00:00",
|
|
3488
|
-
"last_seen": "2026-03-
|
|
3489
|
-
"resolved_at": "2026-03-
|
|
3490
|
-
"reopen_count":
|
|
3494
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
3495
|
+
"resolved_at": "2026-03-15T05:10:00+00:00",
|
|
3496
|
+
"reopen_count": 1,
|
|
3491
3497
|
"lang": "typescript",
|
|
3492
3498
|
"zone": "test",
|
|
3493
3499
|
"suppressed": false,
|
|
3494
3500
|
"suppressed_at": null,
|
|
3495
3501
|
"suppression_pattern": null,
|
|
3496
|
-
"
|
|
3497
|
-
"kind": "manual",
|
|
3498
|
-
"text": "I have actually verified these are tests verifying Logger.error() writes to console.error and I am not gaming the score.",
|
|
3499
|
-
"attested_at": "2026-03-15T00:24:59+00:00",
|
|
3500
|
-
"scan_verified": false
|
|
3501
|
-
},
|
|
3502
|
-
"wontfix_scan_count": 6,
|
|
3502
|
+
"wontfix_scan_count": 10,
|
|
3503
3503
|
"wontfix_snapshot": {
|
|
3504
|
-
"captured_at": "2026-03-
|
|
3505
|
-
"scan_count":
|
|
3504
|
+
"captured_at": "2026-03-15T05:10:00+00:00",
|
|
3505
|
+
"scan_count": 10,
|
|
3506
3506
|
"tier": 3,
|
|
3507
3507
|
"confidence": "low",
|
|
3508
3508
|
"detail": {
|
|
@@ -3516,6 +3516,12 @@
|
|
|
3516
3516
|
78
|
|
3517
3517
|
]
|
|
3518
3518
|
}
|
|
3519
|
+
},
|
|
3520
|
+
"resolution_attestation": {
|
|
3521
|
+
"kind": "manual",
|
|
3522
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
3523
|
+
"attested_at": "2026-03-15T05:10:00+00:00",
|
|
3524
|
+
"scan_verified": false
|
|
3519
3525
|
}
|
|
3520
3526
|
},
|
|
3521
3527
|
"smells::test/history.test.ts::non_null_assert": {
|
|
@@ -3537,26 +3543,20 @@
|
|
|
3537
3543
|
]
|
|
3538
3544
|
},
|
|
3539
3545
|
"status": "wontfix",
|
|
3540
|
-
"note": "
|
|
3546
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
3541
3547
|
"first_seen": "2026-03-15T00:09:54+00:00",
|
|
3542
|
-
"last_seen": "2026-03-
|
|
3543
|
-
"resolved_at": "2026-03-
|
|
3544
|
-
"reopen_count":
|
|
3548
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
3549
|
+
"resolved_at": "2026-03-15T05:09:58+00:00",
|
|
3550
|
+
"reopen_count": 1,
|
|
3545
3551
|
"lang": "typescript",
|
|
3546
3552
|
"zone": "test",
|
|
3547
3553
|
"suppressed": false,
|
|
3548
3554
|
"suppressed_at": null,
|
|
3549
3555
|
"suppression_pattern": null,
|
|
3550
|
-
"
|
|
3551
|
-
"kind": "manual",
|
|
3552
|
-
"text": "I have actually reviewed the test file and I am not gaming the score.",
|
|
3553
|
-
"attested_at": "2026-03-15T00:24:59+00:00",
|
|
3554
|
-
"scan_verified": false
|
|
3555
|
-
},
|
|
3556
|
-
"wontfix_scan_count": 6,
|
|
3556
|
+
"wontfix_scan_count": 10,
|
|
3557
3557
|
"wontfix_snapshot": {
|
|
3558
|
-
"captured_at": "2026-03-
|
|
3559
|
-
"scan_count":
|
|
3558
|
+
"captured_at": "2026-03-15T05:09:58+00:00",
|
|
3559
|
+
"scan_count": 10,
|
|
3560
3560
|
"tier": 3,
|
|
3561
3561
|
"confidence": "low",
|
|
3562
3562
|
"detail": {
|
|
@@ -3570,6 +3570,12 @@
|
|
|
3570
3570
|
96
|
|
3571
3571
|
]
|
|
3572
3572
|
}
|
|
3573
|
+
},
|
|
3574
|
+
"resolution_attestation": {
|
|
3575
|
+
"kind": "manual",
|
|
3576
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
3577
|
+
"attested_at": "2026-03-15T05:09:58+00:00",
|
|
3578
|
+
"scan_verified": false
|
|
3573
3579
|
}
|
|
3574
3580
|
},
|
|
3575
3581
|
"smells::test/history.test.ts::magic_number": {
|
|
@@ -3584,30 +3590,24 @@
|
|
|
3584
3590
|
"severity": "low",
|
|
3585
3591
|
"count": 1,
|
|
3586
3592
|
"lines": [
|
|
3587
|
-
|
|
3593
|
+
333
|
|
3588
3594
|
]
|
|
3589
3595
|
},
|
|
3590
3596
|
"status": "wontfix",
|
|
3591
|
-
"note": "
|
|
3597
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
3592
3598
|
"first_seen": "2026-03-15T00:09:54+00:00",
|
|
3593
|
-
"last_seen": "2026-03-
|
|
3594
|
-
"resolved_at": "2026-03-
|
|
3595
|
-
"reopen_count":
|
|
3599
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
3600
|
+
"resolved_at": "2026-03-15T05:09:58+00:00",
|
|
3601
|
+
"reopen_count": 1,
|
|
3596
3602
|
"lang": "typescript",
|
|
3597
3603
|
"zone": "test",
|
|
3598
3604
|
"suppressed": false,
|
|
3599
3605
|
"suppressed_at": null,
|
|
3600
3606
|
"suppression_pattern": null,
|
|
3601
|
-
"
|
|
3602
|
-
"kind": "manual",
|
|
3603
|
-
"text": "I have actually verified this is a test stress iteration count and I am not gaming the score.",
|
|
3604
|
-
"attested_at": "2026-03-15T00:25:00+00:00",
|
|
3605
|
-
"scan_verified": false
|
|
3606
|
-
},
|
|
3607
|
-
"wontfix_scan_count": 6,
|
|
3607
|
+
"wontfix_scan_count": 10,
|
|
3608
3608
|
"wontfix_snapshot": {
|
|
3609
|
-
"captured_at": "2026-03-
|
|
3610
|
-
"scan_count":
|
|
3609
|
+
"captured_at": "2026-03-15T05:09:58+00:00",
|
|
3610
|
+
"scan_count": 10,
|
|
3611
3611
|
"tier": 3,
|
|
3612
3612
|
"confidence": "low",
|
|
3613
3613
|
"detail": {
|
|
@@ -3615,9 +3615,15 @@
|
|
|
3615
3615
|
"severity": "low",
|
|
3616
3616
|
"count": 1,
|
|
3617
3617
|
"lines": [
|
|
3618
|
-
|
|
3618
|
+
333
|
|
3619
3619
|
]
|
|
3620
3620
|
}
|
|
3621
|
+
},
|
|
3622
|
+
"resolution_attestation": {
|
|
3623
|
+
"kind": "manual",
|
|
3624
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
3625
|
+
"attested_at": "2026-03-15T05:09:58+00:00",
|
|
3626
|
+
"scan_verified": false
|
|
3621
3627
|
}
|
|
3622
3628
|
},
|
|
3623
3629
|
"smells::coverage/base.css::css_important_overuse": {
|
|
@@ -3636,26 +3642,20 @@
|
|
|
3636
3642
|
]
|
|
3637
3643
|
},
|
|
3638
3644
|
"status": "wontfix",
|
|
3639
|
-
"note": "
|
|
3645
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
3640
3646
|
"first_seen": "2026-03-15T00:09:54+00:00",
|
|
3641
|
-
"last_seen": "2026-03-
|
|
3642
|
-
"resolved_at": "2026-03-
|
|
3643
|
-
"reopen_count":
|
|
3647
|
+
"last_seen": "2026-03-15T05:00:35+00:00",
|
|
3648
|
+
"resolved_at": "2026-03-15T05:09:59+00:00",
|
|
3649
|
+
"reopen_count": 1,
|
|
3644
3650
|
"lang": "typescript",
|
|
3645
3651
|
"zone": "production",
|
|
3646
3652
|
"suppressed": false,
|
|
3647
3653
|
"suppressed_at": null,
|
|
3648
3654
|
"suppression_pattern": null,
|
|
3649
|
-
"
|
|
3650
|
-
"kind": "manual",
|
|
3651
|
-
"text": "I have actually verified this is vitest-generated CSS and I am not gaming the score.",
|
|
3652
|
-
"attested_at": "2026-03-15T00:25:00+00:00",
|
|
3653
|
-
"scan_verified": false
|
|
3654
|
-
},
|
|
3655
|
-
"wontfix_scan_count": 6,
|
|
3655
|
+
"wontfix_scan_count": 10,
|
|
3656
3656
|
"wontfix_snapshot": {
|
|
3657
|
-
"captured_at": "2026-03-
|
|
3658
|
-
"scan_count":
|
|
3657
|
+
"captured_at": "2026-03-15T05:09:59+00:00",
|
|
3658
|
+
"scan_count": 10,
|
|
3659
3659
|
"tier": 3,
|
|
3660
3660
|
"confidence": "low",
|
|
3661
3661
|
"detail": {
|
|
@@ -3666,6 +3666,12 @@
|
|
|
3666
3666
|
49
|
|
3667
3667
|
]
|
|
3668
3668
|
}
|
|
3669
|
+
},
|
|
3670
|
+
"resolution_attestation": {
|
|
3671
|
+
"kind": "manual",
|
|
3672
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
3673
|
+
"attested_at": "2026-03-15T05:09:59+00:00",
|
|
3674
|
+
"scan_verified": false
|
|
3669
3675
|
}
|
|
3670
3676
|
},
|
|
3671
3677
|
"exports::src/rule-engine.ts::SequenceStep": {
|
|
@@ -3713,26 +3719,20 @@
|
|
|
3713
3719
|
]
|
|
3714
3720
|
},
|
|
3715
3721
|
"status": "wontfix",
|
|
3716
|
-
"note": "
|
|
3722
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
3717
3723
|
"first_seen": "2026-03-15T00:23:56+00:00",
|
|
3718
|
-
"last_seen": "2026-03-
|
|
3719
|
-
"resolved_at": "2026-03-
|
|
3720
|
-
"reopen_count":
|
|
3724
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
3725
|
+
"resolved_at": "2026-03-15T05:10:00+00:00",
|
|
3726
|
+
"reopen_count": 1,
|
|
3721
3727
|
"lang": "typescript",
|
|
3722
3728
|
"zone": "test",
|
|
3723
3729
|
"suppressed": false,
|
|
3724
3730
|
"suppressed_at": null,
|
|
3725
3731
|
"suppression_pattern": null,
|
|
3726
|
-
"
|
|
3727
|
-
"kind": "manual",
|
|
3728
|
-
"text": "I have actually verified makeReq() is imported and used across test files and I am not gaming the score.",
|
|
3729
|
-
"attested_at": "2026-03-15T00:25:00+00:00",
|
|
3730
|
-
"scan_verified": false
|
|
3731
|
-
},
|
|
3732
|
-
"wontfix_scan_count": 6,
|
|
3732
|
+
"wontfix_scan_count": 10,
|
|
3733
3733
|
"wontfix_snapshot": {
|
|
3734
|
-
"captured_at": "2026-03-
|
|
3735
|
-
"scan_count":
|
|
3734
|
+
"captured_at": "2026-03-15T05:10:00+00:00",
|
|
3735
|
+
"scan_count": 10,
|
|
3736
3736
|
"tier": 3,
|
|
3737
3737
|
"confidence": "low",
|
|
3738
3738
|
"detail": {
|
|
@@ -3743,176 +3743,1598 @@
|
|
|
3743
3743
|
3
|
|
3744
3744
|
]
|
|
3745
3745
|
}
|
|
3746
|
+
},
|
|
3747
|
+
"resolution_attestation": {
|
|
3748
|
+
"kind": "manual",
|
|
3749
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
3750
|
+
"attested_at": "2026-03-15T05:10:00+00:00",
|
|
3751
|
+
"scan_verified": false
|
|
3746
3752
|
}
|
|
3747
|
-
}
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
"
|
|
3752
|
-
"
|
|
3753
|
-
"
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
"
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
"
|
|
3753
|
+
},
|
|
3754
|
+
"review::.::holistic::error_consistency::resolver_error_swallowed_silently::3d7212a6": {
|
|
3755
|
+
"id": "review::.::holistic::error_consistency::resolver_error_swallowed_silently::3d7212a6",
|
|
3756
|
+
"detector": "review",
|
|
3757
|
+
"file": ".",
|
|
3758
|
+
"tier": 3,
|
|
3759
|
+
"confidence": "medium",
|
|
3760
|
+
"summary": "Resolver errors are logged then silently replaced with fallback, losing error context for callers",
|
|
3761
|
+
"detail": {
|
|
3762
|
+
"holistic": true,
|
|
3763
|
+
"dimension": "error_consistency",
|
|
3764
|
+
"related_files": [
|
|
3765
|
+
"src/route-handler.ts"
|
|
3766
|
+
],
|
|
3767
|
+
"evidence": [
|
|
3768
|
+
"In resolveReply() (lines 36-46), when matched.resolve throws, the error is caught, logged, and the fallback reply is returned. The caller has no way to distinguish a successful fallback from a resolver failure. History records the rule description but not the error state, making debugging difficult in tests."
|
|
3769
|
+
],
|
|
3770
|
+
"suggestion": "Record the error state in the history entry (e.g. add an `error` field to RecordedRequest), or at minimum set a distinct ruleDesc like `${matched.description} (error)` so that test assertions can detect resolver failures vs. normal fallback usage.",
|
|
3771
|
+
"reasoning": ""
|
|
3772
|
+
},
|
|
3773
|
+
"status": "auto_resolved",
|
|
3774
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
3775
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
3776
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
3777
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
3778
|
+
"reopen_count": 0,
|
|
3779
|
+
"lang": "typescript",
|
|
3780
|
+
"suppressed": false,
|
|
3781
|
+
"suppressed_at": null,
|
|
3782
|
+
"suppression_pattern": null,
|
|
3783
|
+
"resolution_attestation": {
|
|
3784
|
+
"kind": "scan_verified",
|
|
3785
|
+
"text": "Disappeared from detector output",
|
|
3786
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
3787
|
+
"scan_verified": true
|
|
3788
|
+
},
|
|
3789
|
+
"wontfix_scan_count": 9,
|
|
3790
|
+
"wontfix_snapshot": {
|
|
3791
|
+
"captured_at": "2026-03-15T05:08:11+00:00",
|
|
3792
|
+
"scan_count": 9,
|
|
3793
|
+
"tier": 3,
|
|
3794
|
+
"confidence": "medium",
|
|
3795
|
+
"detail": {
|
|
3796
|
+
"holistic": true,
|
|
3797
|
+
"dimension": "error_consistency",
|
|
3798
|
+
"related_files": [
|
|
3799
|
+
"src/route-handler.ts"
|
|
3800
|
+
],
|
|
3801
|
+
"evidence": [
|
|
3802
|
+
"In resolveReply() (lines 36-46), when matched.resolve throws, the error is caught, logged, and the fallback reply is returned. The caller has no way to distinguish a successful fallback from a resolver failure. History records the rule description but not the error state, making debugging difficult in tests."
|
|
3803
|
+
],
|
|
3804
|
+
"suggestion": "Record the error state in the history entry (e.g. add an `error` field to RecordedRequest), or at minimum set a distinct ruleDesc like `${matched.description} (error)` so that test assertions can detect resolver failures vs. normal fallback usage.",
|
|
3805
|
+
"reasoning": ""
|
|
3763
3806
|
}
|
|
3807
|
+
}
|
|
3808
|
+
},
|
|
3809
|
+
"review::.::holistic::error_consistency::history_recorded_before_streaming_completes::6eb559eb": {
|
|
3810
|
+
"id": "review::.::holistic::error_consistency::history_recorded_before_streaming_completes::6eb559eb",
|
|
3811
|
+
"detector": "review",
|
|
3812
|
+
"file": ".",
|
|
3813
|
+
"tier": 3,
|
|
3814
|
+
"confidence": "medium",
|
|
3815
|
+
"summary": "Error reply records history before send, but streaming path also records before writeSSE may fail",
|
|
3816
|
+
"detail": {
|
|
3817
|
+
"holistic": true,
|
|
3818
|
+
"dimension": "error_consistency",
|
|
3819
|
+
"related_files": [
|
|
3820
|
+
"src/route-handler.ts"
|
|
3821
|
+
],
|
|
3822
|
+
"evidence": [
|
|
3823
|
+
"Line 109 and 116: history.record() is called before the response is fully sent. For error replies (line 109) this is fine, but for the streaming path (line 116), if writeSSE throws (e.g. client disconnect), the request is recorded as successfully handled. The recording point is inconsistent between error and success paths -- error records at line 109 then returns, normal records at 116 then may stream or return JSON."
|
|
3824
|
+
],
|
|
3825
|
+
"suggestion": "Move history.record() after the response is fully sent (after writeSSE completes for streaming, after reply.send for JSON), or add a status/success field to the recorded entry. This ensures history reflects actual outcome.",
|
|
3826
|
+
"reasoning": ""
|
|
3764
3827
|
},
|
|
3765
|
-
"
|
|
3766
|
-
"
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
|
|
3775
|
-
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
"score": 84.0,
|
|
3801
|
-
"source": "holistic",
|
|
3802
|
-
"assessed_at": "2026-03-15T00:09:50+00:00",
|
|
3803
|
-
"needs_review_refresh": true,
|
|
3804
|
-
"refresh_reason": "review_finding_wontfix",
|
|
3805
|
-
"stale_since": "2026-03-15T00:23:44+00:00"
|
|
3828
|
+
"status": "auto_resolved",
|
|
3829
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
3830
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
3831
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
3832
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
3833
|
+
"reopen_count": 0,
|
|
3834
|
+
"lang": "typescript",
|
|
3835
|
+
"suppressed": false,
|
|
3836
|
+
"suppressed_at": null,
|
|
3837
|
+
"suppression_pattern": null,
|
|
3838
|
+
"resolution_attestation": {
|
|
3839
|
+
"kind": "scan_verified",
|
|
3840
|
+
"text": "Disappeared from detector output",
|
|
3841
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
3842
|
+
"scan_verified": true
|
|
3843
|
+
},
|
|
3844
|
+
"wontfix_scan_count": 9,
|
|
3845
|
+
"wontfix_snapshot": {
|
|
3846
|
+
"captured_at": "2026-03-15T05:08:11+00:00",
|
|
3847
|
+
"scan_count": 9,
|
|
3848
|
+
"tier": 3,
|
|
3849
|
+
"confidence": "medium",
|
|
3850
|
+
"detail": {
|
|
3851
|
+
"holistic": true,
|
|
3852
|
+
"dimension": "error_consistency",
|
|
3853
|
+
"related_files": [
|
|
3854
|
+
"src/route-handler.ts"
|
|
3855
|
+
],
|
|
3856
|
+
"evidence": [
|
|
3857
|
+
"Line 109 and 116: history.record() is called before the response is fully sent. For error replies (line 109) this is fine, but for the streaming path (line 116), if writeSSE throws (e.g. client disconnect), the request is recorded as successfully handled. The recording point is inconsistent between error and success paths -- error records at line 109 then returns, normal records at 116 then may stream or return JSON."
|
|
3858
|
+
],
|
|
3859
|
+
"suggestion": "Move history.record() after the response is fully sent (after writeSSE completes for streaming, after reply.send for JSON), or add a status/success field to the recorded entry. This ensures history reflects actual outcome.",
|
|
3860
|
+
"reasoning": ""
|
|
3861
|
+
}
|
|
3862
|
+
}
|
|
3806
3863
|
},
|
|
3807
|
-
"
|
|
3808
|
-
"
|
|
3809
|
-
"
|
|
3810
|
-
"
|
|
3811
|
-
"
|
|
3812
|
-
"
|
|
3813
|
-
"
|
|
3864
|
+
"review::.::holistic::error_consistency::loader_silent_skip_on_unknown_extension::bec7ba0e": {
|
|
3865
|
+
"id": "review::.::holistic::error_consistency::loader_silent_skip_on_unknown_extension::bec7ba0e",
|
|
3866
|
+
"detector": "review",
|
|
3867
|
+
"file": ".",
|
|
3868
|
+
"tier": 3,
|
|
3869
|
+
"confidence": "high",
|
|
3870
|
+
"summary": "loadRulesFromPath silently skips files with unrecognized extensions instead of warning",
|
|
3871
|
+
"detail": {
|
|
3872
|
+
"holistic": true,
|
|
3873
|
+
"dimension": "error_consistency",
|
|
3874
|
+
"related_files": [
|
|
3875
|
+
"src/loader.ts"
|
|
3876
|
+
],
|
|
3877
|
+
"evidence": [
|
|
3878
|
+
"Lines 222-225: When a file path is given with an extension not in loaderByExtension (e.g. '.yaml', '.txt'), the function silently returns without loading anything or signaling an issue. The directory-loading path (line 234) also calls loadRulesFromPath recursively, so stray files in a rules directory are silently ignored."
|
|
3879
|
+
],
|
|
3880
|
+
"suggestion": "When loading a single file (info.isFile()) with an unsupported extension, either throw an error ('Unsupported file extension...') or accept a Logger parameter and log a warning. Silent skipping is surprising when a user explicitly passes a file path.",
|
|
3881
|
+
"reasoning": ""
|
|
3882
|
+
},
|
|
3883
|
+
"status": "auto_resolved",
|
|
3884
|
+
"note": "Disappeared from scan \u2014 likely fixed",
|
|
3885
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
3886
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
3887
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
3888
|
+
"reopen_count": 0,
|
|
3889
|
+
"lang": "typescript",
|
|
3890
|
+
"suppressed": false,
|
|
3891
|
+
"suppressed_at": null,
|
|
3892
|
+
"suppression_pattern": null,
|
|
3893
|
+
"resolution_attestation": {
|
|
3894
|
+
"kind": "scan_verified",
|
|
3895
|
+
"text": "Disappeared from detector output",
|
|
3896
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
3897
|
+
"scan_verified": true
|
|
3898
|
+
}
|
|
3814
3899
|
},
|
|
3815
|
-
"
|
|
3816
|
-
"
|
|
3817
|
-
"
|
|
3818
|
-
"
|
|
3819
|
-
"
|
|
3820
|
-
"
|
|
3821
|
-
"
|
|
3900
|
+
"review::.::holistic::convention_outlier::buildUsage_duplicated_across_serializers::ddd7ad42": {
|
|
3901
|
+
"id": "review::.::holistic::convention_outlier::buildUsage_duplicated_across_serializers::ddd7ad42",
|
|
3902
|
+
"detector": "review",
|
|
3903
|
+
"file": ".",
|
|
3904
|
+
"tier": 3,
|
|
3905
|
+
"confidence": "low",
|
|
3906
|
+
"summary": "buildUsage helper is independently defined in all three format serializers with slightly different shapes",
|
|
3907
|
+
"detail": {
|
|
3908
|
+
"holistic": true,
|
|
3909
|
+
"dimension": "convention_outlier",
|
|
3910
|
+
"related_files": [
|
|
3911
|
+
"src/formats/openai/serialize.ts",
|
|
3912
|
+
"src/formats/anthropic/serialize.ts",
|
|
3913
|
+
"src/formats/responses/serialize.ts"
|
|
3914
|
+
],
|
|
3915
|
+
"evidence": [
|
|
3916
|
+
"OpenAI buildUsage (line 12) returns {prompt_tokens, completion_tokens, total_tokens, ..._details}. Anthropic buildUsage (line 12) returns {input_tokens, output_tokens}. Responses buildUsage (line 12) returns {input_tokens, output_tokens, total_tokens}. Each file defines its own private buildUsage function with the same name, same input signature ({input: number, output: number}), but different output shapes. This is a sibling behavioral inconsistency -- three siblings all do the same conceptual transformation but aren't coordinated."
|
|
3917
|
+
],
|
|
3918
|
+
"suggestion": "This is intentional variation (different API formats require different shapes), so no structural change is needed, but consider renaming the functions to be more specific (e.g. buildOpenAIUsage, buildAnthropicUsage) or adding a brief comment noting the format-specific shape is deliberate. The identical naming across three files creates a false sense of fungibility.",
|
|
3919
|
+
"reasoning": ""
|
|
3920
|
+
},
|
|
3921
|
+
"status": "auto_resolved",
|
|
3922
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
3923
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
3924
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
3925
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
3926
|
+
"reopen_count": 0,
|
|
3927
|
+
"lang": "typescript",
|
|
3928
|
+
"suppressed": false,
|
|
3929
|
+
"suppressed_at": null,
|
|
3930
|
+
"suppression_pattern": null,
|
|
3931
|
+
"resolution_attestation": {
|
|
3932
|
+
"kind": "scan_verified",
|
|
3933
|
+
"text": "Disappeared from detector output",
|
|
3934
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
3935
|
+
"scan_verified": true
|
|
3936
|
+
},
|
|
3937
|
+
"wontfix_scan_count": 9,
|
|
3938
|
+
"wontfix_snapshot": {
|
|
3939
|
+
"captured_at": "2026-03-15T05:08:29+00:00",
|
|
3940
|
+
"scan_count": 9,
|
|
3941
|
+
"tier": 3,
|
|
3942
|
+
"confidence": "low",
|
|
3943
|
+
"detail": {
|
|
3944
|
+
"holistic": true,
|
|
3945
|
+
"dimension": "convention_outlier",
|
|
3946
|
+
"related_files": [
|
|
3947
|
+
"src/formats/openai/serialize.ts",
|
|
3948
|
+
"src/formats/anthropic/serialize.ts",
|
|
3949
|
+
"src/formats/responses/serialize.ts"
|
|
3950
|
+
],
|
|
3951
|
+
"evidence": [
|
|
3952
|
+
"OpenAI buildUsage (line 12) returns {prompt_tokens, completion_tokens, total_tokens, ..._details}. Anthropic buildUsage (line 12) returns {input_tokens, output_tokens}. Responses buildUsage (line 12) returns {input_tokens, output_tokens, total_tokens}. Each file defines its own private buildUsage function with the same name, same input signature ({input: number, output: number}), but different output shapes. This is a sibling behavioral inconsistency -- three siblings all do the same conceptual transformation but aren't coordinated."
|
|
3953
|
+
],
|
|
3954
|
+
"suggestion": "This is intentional variation (different API formats require different shapes), so no structural change is needed, but consider renaming the functions to be more specific (e.g. buildOpenAIUsage, buildAnthropicUsage) or adding a brief comment noting the format-specific shape is deliberate. The identical naming across three files creates a false sense of fungibility.",
|
|
3955
|
+
"reasoning": ""
|
|
3956
|
+
}
|
|
3957
|
+
}
|
|
3822
3958
|
},
|
|
3823
|
-
"
|
|
3824
|
-
"
|
|
3825
|
-
"
|
|
3826
|
-
"
|
|
3959
|
+
"review::.::holistic::api_surface_coherence::cli_validators_mixed_sync_async::7d3cf3df": {
|
|
3960
|
+
"id": "review::.::holistic::api_surface_coherence::cli_validators_mixed_sync_async::7d3cf3df",
|
|
3961
|
+
"detector": "review",
|
|
3962
|
+
"file": ".",
|
|
3963
|
+
"tier": 3,
|
|
3964
|
+
"confidence": "medium",
|
|
3965
|
+
"summary": "parseHost is async while all sibling validators (parsePort, parseLogLevel, etc.) are sync",
|
|
3966
|
+
"detail": {
|
|
3967
|
+
"holistic": true,
|
|
3968
|
+
"dimension": "api_surface_coherence",
|
|
3969
|
+
"related_files": [
|
|
3970
|
+
"src/cli-validators.ts"
|
|
3971
|
+
],
|
|
3972
|
+
"evidence": [
|
|
3973
|
+
"parsePort (line 13), parseLogLevel (line 21), parseChunkSize (line 49), parseLatency (line 59) are all synchronous functions. parseHost (line 30) is async because it calls dns.lookup. This forces the caller (cli.ts line 38) to await parseHost while the others are called synchronously. The mixed sync/async surface in a cohesive set of validation functions is surprising."
|
|
3974
|
+
],
|
|
3975
|
+
"suggestion": "Consider making parseHost synchronous by using isIP() for IP addresses and a regex for valid hostname format, deferring actual resolution to the server's listen() call. If DNS validation is essential, document in parseHost's JSDoc that it is async unlike its siblings, and consider grouping it separately.",
|
|
3976
|
+
"reasoning": ""
|
|
3977
|
+
},
|
|
3978
|
+
"status": "auto_resolved",
|
|
3979
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
3980
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
3981
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
3982
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
3983
|
+
"reopen_count": 0,
|
|
3984
|
+
"lang": "typescript",
|
|
3985
|
+
"suppressed": false,
|
|
3986
|
+
"suppressed_at": null,
|
|
3987
|
+
"suppression_pattern": null,
|
|
3988
|
+
"resolution_attestation": {
|
|
3989
|
+
"kind": "scan_verified",
|
|
3990
|
+
"text": "Disappeared from detector output",
|
|
3991
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
3992
|
+
"scan_verified": true
|
|
3993
|
+
},
|
|
3994
|
+
"wontfix_scan_count": 9,
|
|
3995
|
+
"wontfix_snapshot": {
|
|
3996
|
+
"captured_at": "2026-03-15T05:08:10+00:00",
|
|
3997
|
+
"scan_count": 9,
|
|
3998
|
+
"tier": 3,
|
|
3999
|
+
"confidence": "medium",
|
|
4000
|
+
"detail": {
|
|
4001
|
+
"holistic": true,
|
|
4002
|
+
"dimension": "api_surface_coherence",
|
|
4003
|
+
"related_files": [
|
|
4004
|
+
"src/cli-validators.ts"
|
|
4005
|
+
],
|
|
4006
|
+
"evidence": [
|
|
4007
|
+
"parsePort (line 13), parseLogLevel (line 21), parseChunkSize (line 49), parseLatency (line 59) are all synchronous functions. parseHost (line 30) is async because it calls dns.lookup. This forces the caller (cli.ts line 38) to await parseHost while the others are called synchronously. The mixed sync/async surface in a cohesive set of validation functions is surprising."
|
|
4008
|
+
],
|
|
4009
|
+
"suggestion": "Consider making parseHost synchronous by using isIP() for IP addresses and a regex for valid hostname format, deferring actual resolution to the server's listen() call. If DNS validation is essential, document in parseHost's JSDoc that it is async unlike its siblings, and consider grouping it separately.",
|
|
4010
|
+
"reasoning": ""
|
|
4011
|
+
}
|
|
4012
|
+
}
|
|
3827
4013
|
},
|
|
3828
|
-
"
|
|
3829
|
-
"
|
|
3830
|
-
"
|
|
3831
|
-
"
|
|
3832
|
-
"
|
|
3833
|
-
"
|
|
3834
|
-
"
|
|
4014
|
+
"review::.::holistic::api_surface_coherence::isStreaming_default_true_surprising::dce913c8": {
|
|
4015
|
+
"id": "review::.::holistic::api_surface_coherence::isStreaming_default_true_surprising::dce913c8",
|
|
4016
|
+
"detector": "review",
|
|
4017
|
+
"file": ".",
|
|
4018
|
+
"tier": 3,
|
|
4019
|
+
"confidence": "low",
|
|
4020
|
+
"summary": "isStreaming defaults to true for any non-object input including null/undefined, which is a surprising API contract",
|
|
4021
|
+
"detail": {
|
|
4022
|
+
"holistic": true,
|
|
4023
|
+
"dimension": "api_surface_coherence",
|
|
4024
|
+
"related_files": [
|
|
4025
|
+
"src/formats/request-helpers.ts"
|
|
4026
|
+
],
|
|
4027
|
+
"evidence": [
|
|
4028
|
+
"isStreaming (line 9-11) returns `asRecord(body)['stream'] !== false`, meaning any body that isn't an object with `stream: false` is treated as streaming. Passing null, undefined, a string, or a number all return true. This is an implicit opt-out contract rather than opt-in, which can silently produce streaming responses when the caller expected JSON."
|
|
4029
|
+
],
|
|
4030
|
+
"suggestion": "Consider making streaming explicit: return true only when stream is explicitly true or when it's a valid object without a stream field. At minimum, add a JSDoc comment explaining the opt-out default. The current behavior is consistent with some LLM API defaults but could be surprising to mock server users.",
|
|
4031
|
+
"reasoning": ""
|
|
4032
|
+
},
|
|
4033
|
+
"status": "auto_resolved",
|
|
4034
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4035
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4036
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4037
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4038
|
+
"reopen_count": 0,
|
|
4039
|
+
"lang": "typescript",
|
|
4040
|
+
"suppressed": false,
|
|
4041
|
+
"suppressed_at": null,
|
|
4042
|
+
"suppression_pattern": null,
|
|
4043
|
+
"resolution_attestation": {
|
|
4044
|
+
"kind": "scan_verified",
|
|
4045
|
+
"text": "Disappeared from detector output",
|
|
4046
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4047
|
+
"scan_verified": true
|
|
4048
|
+
},
|
|
4049
|
+
"wontfix_scan_count": 9,
|
|
4050
|
+
"wontfix_snapshot": {
|
|
4051
|
+
"captured_at": "2026-03-15T05:08:28+00:00",
|
|
4052
|
+
"scan_count": 9,
|
|
4053
|
+
"tier": 3,
|
|
4054
|
+
"confidence": "low",
|
|
4055
|
+
"detail": {
|
|
4056
|
+
"holistic": true,
|
|
4057
|
+
"dimension": "api_surface_coherence",
|
|
4058
|
+
"related_files": [
|
|
4059
|
+
"src/formats/request-helpers.ts"
|
|
4060
|
+
],
|
|
4061
|
+
"evidence": [
|
|
4062
|
+
"isStreaming (line 9-11) returns `asRecord(body)['stream'] !== false`, meaning any body that isn't an object with `stream: false` is treated as streaming. Passing null, undefined, a string, or a number all return true. This is an implicit opt-out contract rather than opt-in, which can silently produce streaming responses when the caller expected JSON."
|
|
4063
|
+
],
|
|
4064
|
+
"suggestion": "Consider making streaming explicit: return true only when stream is explicitly true or when it's a valid object without a stream field. At minimum, add a JSDoc comment explaining the opt-out default. The current behavior is consistent with some LLM API defaults but could be surprising to mock server users.",
|
|
4065
|
+
"reasoning": ""
|
|
4066
|
+
}
|
|
4067
|
+
}
|
|
3835
4068
|
},
|
|
3836
|
-
"
|
|
3837
|
-
"
|
|
3838
|
-
"
|
|
3839
|
-
"
|
|
3840
|
-
"
|
|
3841
|
-
"
|
|
3842
|
-
"
|
|
4069
|
+
"review::.::holistic::low_level_elegance::genId_collision_risk::d3ce184c": {
|
|
4070
|
+
"id": "review::.::holistic::low_level_elegance::genId_collision_risk::d3ce184c",
|
|
4071
|
+
"detector": "review",
|
|
4072
|
+
"file": ".",
|
|
4073
|
+
"tier": 3,
|
|
4074
|
+
"confidence": "high",
|
|
4075
|
+
"summary": "genId uses Date.now() in base36, creating collision risk for IDs generated in the same millisecond",
|
|
4076
|
+
"detail": {
|
|
4077
|
+
"holistic": true,
|
|
4078
|
+
"dimension": "low_level_elegance",
|
|
4079
|
+
"related_files": [
|
|
4080
|
+
"src/formats/serialize-helpers.ts"
|
|
4081
|
+
],
|
|
4082
|
+
"evidence": [
|
|
4083
|
+
"genId (line 16-18) generates IDs as `${prefix}_${Date.now().toString(36)}`. Two calls within the same millisecond produce identical IDs. This affects toolId (line 20-26) as well -- multiple tools in the same reply will get IDs that differ only by the index suffix, but if toolId is called without an index (or with 0 for multiple tools), IDs collide. In serializeComplete for Anthropic (line 152), all tools use index 0: `toolId(tool, 'toolu', 0)` causing collisions when multiple tools are present."
|
|
4084
|
+
],
|
|
4085
|
+
"suggestion": "Add a monotonic counter or random suffix to genId: `${prefix}_${Date.now().toString(36)}_${(counter++).toString(36)}`. Alternatively, use crypto.randomUUID() or nanoid (already a transitive dependency). Also fix the Anthropic serializeComplete to pass the actual tool index instead of hardcoded 0.",
|
|
4086
|
+
"reasoning": ""
|
|
4087
|
+
},
|
|
4088
|
+
"status": "auto_resolved",
|
|
4089
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4090
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4091
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4092
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4093
|
+
"reopen_count": 0,
|
|
4094
|
+
"lang": "typescript",
|
|
4095
|
+
"suppressed": false,
|
|
4096
|
+
"suppressed_at": null,
|
|
4097
|
+
"suppression_pattern": null,
|
|
4098
|
+
"resolution_attestation": {
|
|
4099
|
+
"kind": "scan_verified",
|
|
4100
|
+
"text": "Disappeared from detector output",
|
|
4101
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4102
|
+
"scan_verified": true
|
|
4103
|
+
},
|
|
4104
|
+
"wontfix_scan_count": 9,
|
|
4105
|
+
"wontfix_snapshot": {
|
|
4106
|
+
"captured_at": "2026-03-15T05:07:25+00:00",
|
|
4107
|
+
"scan_count": 9,
|
|
4108
|
+
"tier": 3,
|
|
4109
|
+
"confidence": "high",
|
|
4110
|
+
"detail": {
|
|
4111
|
+
"holistic": true,
|
|
4112
|
+
"dimension": "low_level_elegance",
|
|
4113
|
+
"related_files": [
|
|
4114
|
+
"src/formats/serialize-helpers.ts"
|
|
4115
|
+
],
|
|
4116
|
+
"evidence": [
|
|
4117
|
+
"genId (line 16-18) generates IDs as `${prefix}_${Date.now().toString(36)}`. Two calls within the same millisecond produce identical IDs. This affects toolId (line 20-26) as well -- multiple tools in the same reply will get IDs that differ only by the index suffix, but if toolId is called without an index (or with 0 for multiple tools), IDs collide. In serializeComplete for Anthropic (line 152), all tools use index 0: `toolId(tool, 'toolu', 0)` causing collisions when multiple tools are present."
|
|
4118
|
+
],
|
|
4119
|
+
"suggestion": "Add a monotonic counter or random suffix to genId: `${prefix}_${Date.now().toString(36)}_${(counter++).toString(36)}`. Alternatively, use crypto.randomUUID() or nanoid (already a transitive dependency). Also fix the Anthropic serializeComplete to pass the actual tool index instead of hardcoded 0.",
|
|
4120
|
+
"reasoning": ""
|
|
4121
|
+
}
|
|
4122
|
+
}
|
|
3843
4123
|
},
|
|
3844
|
-
"
|
|
3845
|
-
"
|
|
3846
|
-
"
|
|
3847
|
-
"
|
|
3848
|
-
"
|
|
3849
|
-
"
|
|
3850
|
-
"
|
|
4124
|
+
"review::.::holistic::low_level_elegance::anthropic_serializeComplete_tool_index_hardcoded::1a756aa6": {
|
|
4125
|
+
"id": "review::.::holistic::low_level_elegance::anthropic_serializeComplete_tool_index_hardcoded::1a756aa6",
|
|
4126
|
+
"detector": "review",
|
|
4127
|
+
"file": ".",
|
|
4128
|
+
"tier": 3,
|
|
4129
|
+
"confidence": "high",
|
|
4130
|
+
"summary": "Anthropic serializeComplete passes hardcoded index 0 for all tool IDs, causing ID collisions",
|
|
4131
|
+
"detail": {
|
|
4132
|
+
"holistic": true,
|
|
4133
|
+
"dimension": "low_level_elegance",
|
|
4134
|
+
"related_files": [
|
|
4135
|
+
"src/formats/anthropic/serialize.ts"
|
|
4136
|
+
],
|
|
4137
|
+
"evidence": [
|
|
4138
|
+
"Line 152: `(reply.tools ?? []).map((tool) => ({ ... id: toolId(tool, 'toolu', 0), ... }))` -- every tool in the array gets index 0 passed to toolId. When multiple tools are present and none have explicit IDs, they all get the same generated ID (same prefix, same timestamp, same index). The streaming path (toolBlocks, line 65) correctly uses `startIndex + i` for each tool."
|
|
4139
|
+
],
|
|
4140
|
+
"suggestion": "Change line 152 to use the map index: `(reply.tools ?? []).map((tool, i) => ({ ... id: toolId(tool, 'toolu', i), ... }))`",
|
|
4141
|
+
"reasoning": ""
|
|
4142
|
+
},
|
|
4143
|
+
"status": "auto_resolved",
|
|
4144
|
+
"note": "Disappeared from scan \u2014 likely fixed",
|
|
4145
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4146
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4147
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4148
|
+
"reopen_count": 0,
|
|
4149
|
+
"lang": "typescript",
|
|
4150
|
+
"suppressed": false,
|
|
4151
|
+
"suppressed_at": null,
|
|
4152
|
+
"suppression_pattern": null,
|
|
4153
|
+
"resolution_attestation": {
|
|
4154
|
+
"kind": "scan_verified",
|
|
4155
|
+
"text": "Disappeared from detector output",
|
|
4156
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4157
|
+
"scan_verified": true
|
|
4158
|
+
}
|
|
3851
4159
|
},
|
|
3852
|
-
"
|
|
3853
|
-
"
|
|
3854
|
-
"
|
|
3855
|
-
"
|
|
3856
|
-
"
|
|
3857
|
-
"
|
|
3858
|
-
"
|
|
4160
|
+
"review::.::holistic::low_level_elegance::responses_serializeComplete_tool_index_hardcoded::955bbfa6": {
|
|
4161
|
+
"id": "review::.::holistic::low_level_elegance::responses_serializeComplete_tool_index_hardcoded::955bbfa6",
|
|
4162
|
+
"detector": "review",
|
|
4163
|
+
"file": ".",
|
|
4164
|
+
"tier": 3,
|
|
4165
|
+
"confidence": "high",
|
|
4166
|
+
"summary": "Responses serializeComplete also uses hardcoded index 0 for all tool call IDs",
|
|
4167
|
+
"detail": {
|
|
4168
|
+
"holistic": true,
|
|
4169
|
+
"dimension": "low_level_elegance",
|
|
4170
|
+
"related_files": [
|
|
4171
|
+
"src/formats/responses/serialize.ts"
|
|
4172
|
+
],
|
|
4173
|
+
"evidence": [
|
|
4174
|
+
"Lines 291-300: `(reply.tools ?? []).map((tool) => { const callId = toolId(tool, 'call', 0); ... })` -- same issue as Anthropic. When multiple tools lack explicit IDs, they all get the same generated ID. The streaming path (toolStreamBlock) correctly uses the incrementing `i` variable."
|
|
4175
|
+
],
|
|
4176
|
+
"suggestion": "Change to use the map index: `(reply.tools ?? []).map((tool, i) => { const callId = toolId(tool, 'call', i); ... })`",
|
|
4177
|
+
"reasoning": ""
|
|
4178
|
+
},
|
|
4179
|
+
"status": "auto_resolved",
|
|
4180
|
+
"note": "Disappeared from scan \u2014 likely fixed",
|
|
4181
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4182
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4183
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4184
|
+
"reopen_count": 0,
|
|
4185
|
+
"lang": "typescript",
|
|
4186
|
+
"suppressed": false,
|
|
4187
|
+
"suppressed_at": null,
|
|
4188
|
+
"suppression_pattern": null,
|
|
4189
|
+
"resolution_attestation": {
|
|
4190
|
+
"kind": "scan_verified",
|
|
4191
|
+
"text": "Disappeared from detector output",
|
|
4192
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4193
|
+
"scan_verified": true
|
|
4194
|
+
}
|
|
3859
4195
|
},
|
|
3860
|
-
"mid_level_elegance": {
|
|
3861
|
-
"
|
|
3862
|
-
"
|
|
3863
|
-
"
|
|
3864
|
-
"
|
|
3865
|
-
"
|
|
3866
|
-
"
|
|
4196
|
+
"review::.::holistic::mid_level_elegance::sequence_resolver_mutates_rule_options::aeaacdf6": {
|
|
4197
|
+
"id": "review::.::holistic::mid_level_elegance::sequence_resolver_mutates_rule_options::aeaacdf6",
|
|
4198
|
+
"detector": "review",
|
|
4199
|
+
"file": ".",
|
|
4200
|
+
"tier": 3,
|
|
4201
|
+
"confidence": "medium",
|
|
4202
|
+
"summary": "createSequenceResolver mutates rule.options on each call, creating a side-channel between the resolver and the route handler",
|
|
4203
|
+
"detail": {
|
|
4204
|
+
"holistic": true,
|
|
4205
|
+
"dimension": "mid_level_elegance",
|
|
4206
|
+
"related_files": [
|
|
4207
|
+
"src/rule-engine.ts",
|
|
4208
|
+
"src/route-handler.ts"
|
|
4209
|
+
],
|
|
4210
|
+
"evidence": [
|
|
4211
|
+
"In createSequenceResolver (lines 91-107), the returned resolver function mutates `rule.options` on each invocation (line 102: `rule.options = step.options ?? {}`). In route-handler.ts line 119, `effectiveOptions` is computed as `{ ...defaultOptions, ...matched?.options }` AFTER resolveReply has already run. This works because resolveReply calls matched.resolve which mutates matched.options before effectiveOptions is read. But this temporal coupling is fragile -- the reader must understand that resolveReply has a side effect on matched.options that the subsequent line depends on."
|
|
4212
|
+
],
|
|
4213
|
+
"suggestion": "Return the per-step options from the resolver instead of mutating the rule object. For example, have the resolver return `{ reply, options }` and let resolveReply propagate both values. This makes the data flow explicit rather than relying on mutation timing.",
|
|
4214
|
+
"reasoning": ""
|
|
4215
|
+
},
|
|
4216
|
+
"status": "auto_resolved",
|
|
4217
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4218
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4219
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4220
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4221
|
+
"reopen_count": 0,
|
|
4222
|
+
"lang": "typescript",
|
|
4223
|
+
"suppressed": false,
|
|
4224
|
+
"suppressed_at": null,
|
|
4225
|
+
"suppression_pattern": null,
|
|
4226
|
+
"resolution_attestation": {
|
|
4227
|
+
"kind": "scan_verified",
|
|
4228
|
+
"text": "Disappeared from detector output",
|
|
4229
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4230
|
+
"scan_verified": true
|
|
4231
|
+
},
|
|
4232
|
+
"wontfix_scan_count": 9,
|
|
4233
|
+
"wontfix_snapshot": {
|
|
4234
|
+
"captured_at": "2026-03-15T05:08:12+00:00",
|
|
4235
|
+
"scan_count": 9,
|
|
4236
|
+
"tier": 3,
|
|
4237
|
+
"confidence": "medium",
|
|
4238
|
+
"detail": {
|
|
4239
|
+
"holistic": true,
|
|
4240
|
+
"dimension": "mid_level_elegance",
|
|
4241
|
+
"related_files": [
|
|
4242
|
+
"src/rule-engine.ts",
|
|
4243
|
+
"src/route-handler.ts"
|
|
4244
|
+
],
|
|
4245
|
+
"evidence": [
|
|
4246
|
+
"In createSequenceResolver (lines 91-107), the returned resolver function mutates `rule.options` on each invocation (line 102: `rule.options = step.options ?? {}`). In route-handler.ts line 119, `effectiveOptions` is computed as `{ ...defaultOptions, ...matched?.options }` AFTER resolveReply has already run. This works because resolveReply calls matched.resolve which mutates matched.options before effectiveOptions is read. But this temporal coupling is fragile -- the reader must understand that resolveReply has a side effect on matched.options that the subsequent line depends on."
|
|
4247
|
+
],
|
|
4248
|
+
"suggestion": "Return the per-step options from the resolver instead of mutating the rule object. For example, have the resolver return `{ reply, options }` and let resolveReply propagate both values. This makes the data flow explicit rather than relying on mutation timing.",
|
|
4249
|
+
"reasoning": ""
|
|
4250
|
+
}
|
|
4251
|
+
}
|
|
3867
4252
|
},
|
|
3868
|
-
"
|
|
3869
|
-
"
|
|
3870
|
-
"
|
|
3871
|
-
"
|
|
3872
|
-
"
|
|
3873
|
-
"
|
|
3874
|
-
"
|
|
4253
|
+
"review::.::holistic::design_coherence::mock_server_when_builds_rule_handle_inline::11e077c8": {
|
|
4254
|
+
"id": "review::.::holistic::design_coherence::mock_server_when_builds_rule_handle_inline::11e077c8",
|
|
4255
|
+
"detector": "review",
|
|
4256
|
+
"file": ".",
|
|
4257
|
+
"tier": 3,
|
|
4258
|
+
"confidence": "medium",
|
|
4259
|
+
"summary": "MockServer.when() constructs PendingRule and RuleHandle inline with closure-captured state, mixing builder logic into the server",
|
|
4260
|
+
"detail": {
|
|
4261
|
+
"holistic": true,
|
|
4262
|
+
"dimension": "design_coherence",
|
|
4263
|
+
"related_files": [
|
|
4264
|
+
"src/mock-server.ts"
|
|
4265
|
+
],
|
|
4266
|
+
"evidence": [
|
|
4267
|
+
"Lines 103-133: The when() method constructs a PendingRule object with reply() and replySequence() methods inline. The makeHandle closure creates RuleHandle objects. The replySequence method (lines 121-132) duplicates logic from the loader's addSequenceRule (loader.ts lines 108-131) -- both normalize sequence entries, call engine.add, then call createSequenceResolver and patch the rule. This is two implementations of the same concept."
|
|
4268
|
+
],
|
|
4269
|
+
"suggestion": "Extract the sequence-rule creation into a shared function (e.g. in rule-engine.ts: `addSequenceRule(engine, match, steps)`) and call it from both MockServer.when().replySequence() and loader.ts addSequenceRule(). This eliminates the duplicated normalization and rule-patching logic.",
|
|
4270
|
+
"reasoning": ""
|
|
4271
|
+
},
|
|
4272
|
+
"status": "auto_resolved",
|
|
4273
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4274
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4275
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4276
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4277
|
+
"reopen_count": 0,
|
|
4278
|
+
"lang": "typescript",
|
|
4279
|
+
"suppressed": false,
|
|
4280
|
+
"suppressed_at": null,
|
|
4281
|
+
"suppression_pattern": null,
|
|
4282
|
+
"resolution_attestation": {
|
|
4283
|
+
"kind": "scan_verified",
|
|
4284
|
+
"text": "Disappeared from detector output",
|
|
4285
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4286
|
+
"scan_verified": true
|
|
4287
|
+
},
|
|
4288
|
+
"wontfix_scan_count": 9,
|
|
4289
|
+
"wontfix_snapshot": {
|
|
4290
|
+
"captured_at": "2026-03-15T05:08:10+00:00",
|
|
4291
|
+
"scan_count": 9,
|
|
4292
|
+
"tier": 3,
|
|
4293
|
+
"confidence": "medium",
|
|
4294
|
+
"detail": {
|
|
4295
|
+
"holistic": true,
|
|
4296
|
+
"dimension": "design_coherence",
|
|
4297
|
+
"related_files": [
|
|
4298
|
+
"src/mock-server.ts"
|
|
4299
|
+
],
|
|
4300
|
+
"evidence": [
|
|
4301
|
+
"Lines 103-133: The when() method constructs a PendingRule object with reply() and replySequence() methods inline. The makeHandle closure creates RuleHandle objects. The replySequence method (lines 121-132) duplicates logic from the loader's addSequenceRule (loader.ts lines 108-131) -- both normalize sequence entries, call engine.add, then call createSequenceResolver and patch the rule. This is two implementations of the same concept."
|
|
4302
|
+
],
|
|
4303
|
+
"suggestion": "Extract the sequence-rule creation into a shared function (e.g. in rule-engine.ts: `addSequenceRule(engine, match, steps)`) and call it from both MockServer.when().replySequence() and loader.ts addSequenceRule(). This eliminates the duplicated normalization and rule-patching logic.",
|
|
4304
|
+
"reasoning": ""
|
|
4305
|
+
}
|
|
4306
|
+
}
|
|
4307
|
+
},
|
|
4308
|
+
"review::.::holistic::design_coherence::route_handler_function_does_too_much::75785d07": {
|
|
4309
|
+
"id": "review::.::holistic::design_coherence::route_handler_function_does_too_much::75785d07",
|
|
4310
|
+
"detector": "review",
|
|
4311
|
+
"file": ".",
|
|
4312
|
+
"tier": 3,
|
|
4313
|
+
"confidence": "low",
|
|
4314
|
+
"summary": "createRouteHandler's returned handler function performs parsing, matching, resolving, error handling, streaming decision, and response sending",
|
|
4315
|
+
"detail": {
|
|
4316
|
+
"holistic": true,
|
|
4317
|
+
"dimension": "design_coherence",
|
|
4318
|
+
"related_files": [
|
|
4319
|
+
"src/route-handler.ts"
|
|
4320
|
+
],
|
|
4321
|
+
"evidence": [
|
|
4322
|
+
"The handler function (lines 63-147) is 85 lines and handles: (1) header extraction, (2) request parsing with Zod validation, (3) rule matching, (4) reply resolution, (5) error reply handling, (6) history recording, (7) streaming vs. non-streaming decision, (8) logging, (9) SSE writing. While each step is relatively straightforward, the single function accumulates all orchestration responsibilities."
|
|
4323
|
+
],
|
|
4324
|
+
"suggestion": "The function is cohesive enough that splitting it could be worse than the status quo. However, consider extracting the header-extraction and request-parsing into a helper (e.g. `parseIncomingRequest(format, request)`) to reduce the cognitive load of the main handler. The current structure is functional but approaches the point where a new engineer would need to read the entire function to understand any part of it.",
|
|
4325
|
+
"reasoning": ""
|
|
4326
|
+
},
|
|
4327
|
+
"status": "auto_resolved",
|
|
4328
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4329
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4330
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4331
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4332
|
+
"reopen_count": 0,
|
|
4333
|
+
"lang": "typescript",
|
|
4334
|
+
"suppressed": false,
|
|
4335
|
+
"suppressed_at": null,
|
|
4336
|
+
"suppression_pattern": null,
|
|
4337
|
+
"resolution_attestation": {
|
|
4338
|
+
"kind": "scan_verified",
|
|
4339
|
+
"text": "Disappeared from detector output",
|
|
4340
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4341
|
+
"scan_verified": true
|
|
4342
|
+
},
|
|
4343
|
+
"wontfix_scan_count": 9,
|
|
4344
|
+
"wontfix_snapshot": {
|
|
4345
|
+
"captured_at": "2026-03-15T05:08:30+00:00",
|
|
4346
|
+
"scan_count": 9,
|
|
4347
|
+
"tier": 3,
|
|
4348
|
+
"confidence": "low",
|
|
4349
|
+
"detail": {
|
|
4350
|
+
"holistic": true,
|
|
4351
|
+
"dimension": "design_coherence",
|
|
4352
|
+
"related_files": [
|
|
4353
|
+
"src/route-handler.ts"
|
|
4354
|
+
],
|
|
4355
|
+
"evidence": [
|
|
4356
|
+
"The handler function (lines 63-147) is 85 lines and handles: (1) header extraction, (2) request parsing with Zod validation, (3) rule matching, (4) reply resolution, (5) error reply handling, (6) history recording, (7) streaming vs. non-streaming decision, (8) logging, (9) SSE writing. While each step is relatively straightforward, the single function accumulates all orchestration responsibilities."
|
|
4357
|
+
],
|
|
4358
|
+
"suggestion": "The function is cohesive enough that splitting it could be worse than the status quo. However, consider extracting the header-extraction and request-parsing into a helper (e.g. `parseIncomingRequest(format, request)`) to reduce the cognitive load of the main handler. The current structure is functional but approaches the point where a new engineer would need to read the entire function to understand any part of it.",
|
|
4359
|
+
"reasoning": ""
|
|
4360
|
+
}
|
|
4361
|
+
}
|
|
4362
|
+
},
|
|
4363
|
+
"review::.::holistic::ai_generated_debt::type_files_high_comment_ratio::af1ab2ae": {
|
|
4364
|
+
"id": "review::.::holistic::ai_generated_debt::type_files_high_comment_ratio::af1ab2ae",
|
|
4365
|
+
"detector": "review",
|
|
4366
|
+
"file": ".",
|
|
4367
|
+
"tier": 3,
|
|
4368
|
+
"confidence": "medium",
|
|
4369
|
+
"summary": "Type definition files have disproportionately high comment ratios (31-32%) relative to codebase average (4.2%)",
|
|
4370
|
+
"detail": {
|
|
4371
|
+
"holistic": true,
|
|
4372
|
+
"dimension": "ai_generated_debt",
|
|
4373
|
+
"related_files": [
|
|
4374
|
+
"src/types/request.ts",
|
|
4375
|
+
"src/types/rule.ts"
|
|
4376
|
+
],
|
|
4377
|
+
"evidence": [
|
|
4378
|
+
"src/types/request.ts has 32% comment ratio vs 4.2% codebase average. src/types/rule.ts has 31% comment ratio. Many comments restate what the type signature already communicates. For example, in request.ts: `readonly lastMessage: string` has comment `/** The last user message's text. This is what most matchers check. */` -- the second sentence adds value but the first sentence restates the name. In rule.ts: `/** Returned by `when()`. Call `.reply()` or `.replySequence()` on it to complete the rule. */` on PendingRule -- the interface definition below makes this obvious."
|
|
4379
|
+
],
|
|
4380
|
+
"suggestion": "Trim JSDoc comments on types to only include non-obvious information. Keep comments that explain 'why' or usage guidance (like 'This is what most matchers check'), but remove comments that restate the type name or signature. For example, `readonly tools?: readonly ToolDef[] | undefined;` needs no doc comment; the name and type are self-documenting.",
|
|
4381
|
+
"reasoning": ""
|
|
4382
|
+
},
|
|
4383
|
+
"status": "auto_resolved",
|
|
4384
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4385
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4386
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4387
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4388
|
+
"reopen_count": 0,
|
|
4389
|
+
"lang": "typescript",
|
|
4390
|
+
"suppressed": false,
|
|
4391
|
+
"suppressed_at": null,
|
|
4392
|
+
"suppression_pattern": null,
|
|
4393
|
+
"resolution_attestation": {
|
|
4394
|
+
"kind": "scan_verified",
|
|
4395
|
+
"text": "Disappeared from detector output",
|
|
4396
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4397
|
+
"scan_verified": true
|
|
4398
|
+
},
|
|
4399
|
+
"wontfix_scan_count": 9,
|
|
4400
|
+
"wontfix_snapshot": {
|
|
4401
|
+
"captured_at": "2026-03-15T05:08:09+00:00",
|
|
4402
|
+
"scan_count": 9,
|
|
4403
|
+
"tier": 3,
|
|
4404
|
+
"confidence": "medium",
|
|
4405
|
+
"detail": {
|
|
4406
|
+
"holistic": true,
|
|
4407
|
+
"dimension": "ai_generated_debt",
|
|
4408
|
+
"related_files": [
|
|
4409
|
+
"src/types/request.ts",
|
|
4410
|
+
"src/types/rule.ts"
|
|
4411
|
+
],
|
|
4412
|
+
"evidence": [
|
|
4413
|
+
"src/types/request.ts has 32% comment ratio vs 4.2% codebase average. src/types/rule.ts has 31% comment ratio. Many comments restate what the type signature already communicates. For example, in request.ts: `readonly lastMessage: string` has comment `/** The last user message's text. This is what most matchers check. */` -- the second sentence adds value but the first sentence restates the name. In rule.ts: `/** Returned by `when()`. Call `.reply()` or `.replySequence()` on it to complete the rule. */` on PendingRule -- the interface definition below makes this obvious."
|
|
4414
|
+
],
|
|
4415
|
+
"suggestion": "Trim JSDoc comments on types to only include non-obvious information. Keep comments that explain 'why' or usage guidance (like 'This is what most matchers check'), but remove comments that restate the type name or signature. For example, `readonly tools?: readonly ToolDef[] | undefined;` needs no doc comment; the name and type are self-documenting.",
|
|
4416
|
+
"reasoning": ""
|
|
4417
|
+
}
|
|
4418
|
+
}
|
|
4419
|
+
},
|
|
4420
|
+
"review::.::holistic::incomplete_migration::single_require_in_esm_codebase::a43bedaa": {
|
|
4421
|
+
"id": "review::.::holistic::incomplete_migration::single_require_in_esm_codebase::a43bedaa",
|
|
4422
|
+
"detector": "review",
|
|
4423
|
+
"file": ".",
|
|
4424
|
+
"tier": 3,
|
|
4425
|
+
"confidence": "medium",
|
|
4426
|
+
"summary": "cli.ts uses createRequire to read package.json version, the only require() in an otherwise pure ESM codebase",
|
|
4427
|
+
"detail": {
|
|
4428
|
+
"holistic": true,
|
|
4429
|
+
"dimension": "incomplete_migration",
|
|
4430
|
+
"related_files": [
|
|
4431
|
+
"src/cli.ts"
|
|
4432
|
+
],
|
|
4433
|
+
"evidence": [
|
|
4434
|
+
"Line 4: `import { createRequire } from 'node:module'` and line 17: `const require = createRequire(import.meta.url); const { version } = require('../package.json') as { version: string };`. The entire codebase is ESM (type: module in package.json, all other imports use ESM syntax). This is the sole use of require()."
|
|
4435
|
+
],
|
|
4436
|
+
"suggestion": "Use an import assertion/attribute to load the package.json: `import pkg from '../package.json' with { type: 'json' };` (Node 22+ supports this). This eliminates the require shim and makes the codebase fully ESM.",
|
|
4437
|
+
"reasoning": ""
|
|
4438
|
+
},
|
|
4439
|
+
"status": "auto_resolved",
|
|
4440
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4441
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4442
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4443
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4444
|
+
"reopen_count": 0,
|
|
4445
|
+
"lang": "typescript",
|
|
4446
|
+
"suppressed": false,
|
|
4447
|
+
"suppressed_at": null,
|
|
4448
|
+
"suppression_pattern": null,
|
|
4449
|
+
"resolution_attestation": {
|
|
4450
|
+
"kind": "scan_verified",
|
|
4451
|
+
"text": "Disappeared from detector output",
|
|
4452
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4453
|
+
"scan_verified": true
|
|
4454
|
+
},
|
|
4455
|
+
"wontfix_scan_count": 9,
|
|
4456
|
+
"wontfix_snapshot": {
|
|
4457
|
+
"captured_at": "2026-03-15T05:08:12+00:00",
|
|
4458
|
+
"scan_count": 9,
|
|
4459
|
+
"tier": 3,
|
|
4460
|
+
"confidence": "medium",
|
|
4461
|
+
"detail": {
|
|
4462
|
+
"holistic": true,
|
|
4463
|
+
"dimension": "incomplete_migration",
|
|
4464
|
+
"related_files": [
|
|
4465
|
+
"src/cli.ts"
|
|
4466
|
+
],
|
|
4467
|
+
"evidence": [
|
|
4468
|
+
"Line 4: `import { createRequire } from 'node:module'` and line 17: `const require = createRequire(import.meta.url); const { version } = require('../package.json') as { version: string };`. The entire codebase is ESM (type: module in package.json, all other imports use ESM syntax). This is the sole use of require()."
|
|
4469
|
+
],
|
|
4470
|
+
"suggestion": "Use an import assertion/attribute to load the package.json: `import pkg from '../package.json' with { type: 'json' };` (Node 22+ supports this). This eliminates the require shim and makes the codebase fully ESM.",
|
|
4471
|
+
"reasoning": ""
|
|
4472
|
+
}
|
|
4473
|
+
}
|
|
4474
|
+
},
|
|
4475
|
+
"review::.::holistic::cross_module_architecture::dynamic_import_of_loader_in_server::2119b386": {
|
|
4476
|
+
"id": "review::.::holistic::cross_module_architecture::dynamic_import_of_loader_in_server::2119b386",
|
|
4477
|
+
"detector": "review",
|
|
4478
|
+
"file": ".",
|
|
4479
|
+
"tier": 3,
|
|
4480
|
+
"confidence": "medium",
|
|
4481
|
+
"summary": "MockServer.load() uses a dynamic import for loader.js, creating a hidden runtime dependency that static analysis cannot trace",
|
|
4482
|
+
"detail": {
|
|
4483
|
+
"holistic": true,
|
|
4484
|
+
"dimension": "cross_module_architecture",
|
|
4485
|
+
"related_files": [
|
|
4486
|
+
"src/mock-server.ts",
|
|
4487
|
+
"src/loader.ts"
|
|
4488
|
+
],
|
|
4489
|
+
"evidence": [
|
|
4490
|
+
"Line 187: `const { loadRulesFromPath } = await import('./loader.js');`. This dynamic import means loader.ts is not in the static dependency graph of mock-server.ts. While this may be intentional for tree-shaking (users who never call load() don't pay for the loader code), it creates an invisible architecture edge that tools and developers cannot see without reading the implementation."
|
|
4491
|
+
],
|
|
4492
|
+
"suggestion": "Add a comment explaining the intent (tree-shaking/code-splitting). If tree-shaking is not a goal, convert to a static import. If it is intentional, document this in the module's JSDoc: `/** Dynamically imports loader.js to keep it out of the bundle for users who don't use file-based rules. */`",
|
|
4493
|
+
"reasoning": ""
|
|
4494
|
+
},
|
|
4495
|
+
"status": "auto_resolved",
|
|
4496
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4497
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4498
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4499
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4500
|
+
"reopen_count": 0,
|
|
4501
|
+
"lang": "typescript",
|
|
4502
|
+
"suppressed": false,
|
|
4503
|
+
"suppressed_at": null,
|
|
4504
|
+
"suppression_pattern": null,
|
|
4505
|
+
"resolution_attestation": {
|
|
4506
|
+
"kind": "scan_verified",
|
|
4507
|
+
"text": "Disappeared from detector output",
|
|
4508
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4509
|
+
"scan_verified": true
|
|
4510
|
+
},
|
|
4511
|
+
"wontfix_scan_count": 9,
|
|
4512
|
+
"wontfix_snapshot": {
|
|
4513
|
+
"captured_at": "2026-03-15T05:08:10+00:00",
|
|
4514
|
+
"scan_count": 9,
|
|
4515
|
+
"tier": 3,
|
|
4516
|
+
"confidence": "medium",
|
|
4517
|
+
"detail": {
|
|
4518
|
+
"holistic": true,
|
|
4519
|
+
"dimension": "cross_module_architecture",
|
|
4520
|
+
"related_files": [
|
|
4521
|
+
"src/mock-server.ts",
|
|
4522
|
+
"src/loader.ts"
|
|
4523
|
+
],
|
|
4524
|
+
"evidence": [
|
|
4525
|
+
"Line 187: `const { loadRulesFromPath } = await import('./loader.js');`. This dynamic import means loader.ts is not in the static dependency graph of mock-server.ts. While this may be intentional for tree-shaking (users who never call load() don't pay for the loader code), it creates an invisible architecture edge that tools and developers cannot see without reading the implementation."
|
|
4526
|
+
],
|
|
4527
|
+
"suggestion": "Add a comment explaining the intent (tree-shaking/code-splitting). If tree-shaking is not a goal, convert to a static import. If it is intentional, document this in the module's JSDoc: `/** Dynamically imports loader.js to keep it out of the bundle for users who don't use file-based rules. */`",
|
|
4528
|
+
"reasoning": ""
|
|
4529
|
+
}
|
|
4530
|
+
}
|
|
4531
|
+
},
|
|
4532
|
+
"review::.::holistic::mid_level_elegance::cli_watch_debounce_races::b817e020": {
|
|
4533
|
+
"id": "review::.::holistic::mid_level_elegance::cli_watch_debounce_races::b817e020",
|
|
4534
|
+
"detector": "review",
|
|
4535
|
+
"file": ".",
|
|
4536
|
+
"tier": 3,
|
|
4537
|
+
"confidence": "high",
|
|
4538
|
+
"summary": "CLI watch mode uses a boolean flag for debouncing that can miss rapid successive changes",
|
|
4539
|
+
"detail": {
|
|
4540
|
+
"holistic": true,
|
|
4541
|
+
"dimension": "mid_level_elegance",
|
|
4542
|
+
"related_files": [
|
|
4543
|
+
"src/cli.ts"
|
|
4544
|
+
],
|
|
4545
|
+
"evidence": [
|
|
4546
|
+
"Lines 88-103: The watch handler uses a `reloading` boolean flag and setTimeout with WATCH_DEBOUNCE_MS=100. If a change fires while reloading is true (during the 100ms timeout or during the async reload), it is silently dropped. A rapid sequence of saves could result in the first change being loaded and the last (most current) being missed entirely, leaving stale rules loaded."
|
|
4547
|
+
],
|
|
4548
|
+
"suggestion": "Use a proper debounce pattern that resets the timer on each new event, ensuring the final change is always processed: store the timeout ID and clear/reset it on each watch callback. Example: `let timer: NodeJS.Timeout | undefined; watch(..., () => { clearTimeout(timer); timer = setTimeout(async () => { ... }, WATCH_DEBOUNCE_MS); });`",
|
|
4549
|
+
"reasoning": ""
|
|
4550
|
+
},
|
|
4551
|
+
"status": "auto_resolved",
|
|
4552
|
+
"note": "Disappeared from scan \u2014 likely fixed",
|
|
4553
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4554
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4555
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4556
|
+
"reopen_count": 0,
|
|
4557
|
+
"lang": "typescript",
|
|
4558
|
+
"suppressed": false,
|
|
4559
|
+
"suppressed_at": null,
|
|
4560
|
+
"suppression_pattern": null,
|
|
4561
|
+
"resolution_attestation": {
|
|
4562
|
+
"kind": "scan_verified",
|
|
4563
|
+
"text": "Disappeared from detector output",
|
|
4564
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4565
|
+
"scan_verified": true
|
|
4566
|
+
}
|
|
4567
|
+
},
|
|
4568
|
+
"review::.::holistic::high_level_elegance::format_interface_serializeError_status_unused::18c63dc3": {
|
|
4569
|
+
"id": "review::.::holistic::high_level_elegance::format_interface_serializeError_status_unused::18c63dc3",
|
|
4570
|
+
"detector": "review",
|
|
4571
|
+
"file": ".",
|
|
4572
|
+
"tier": 3,
|
|
4573
|
+
"confidence": "medium",
|
|
4574
|
+
"summary": "Format.serializeError receives status but all three implementations ignore it in the response body",
|
|
4575
|
+
"detail": {
|
|
4576
|
+
"holistic": true,
|
|
4577
|
+
"dimension": "high_level_elegance",
|
|
4578
|
+
"related_files": [
|
|
4579
|
+
"src/formats/types.ts",
|
|
4580
|
+
"src/formats/openai/serialize.ts",
|
|
4581
|
+
"src/formats/anthropic/serialize.ts",
|
|
4582
|
+
"src/formats/responses/serialize.ts"
|
|
4583
|
+
],
|
|
4584
|
+
"evidence": [
|
|
4585
|
+
"The Format interface (types.ts line 25) defines serializeError with `status: number` in the parameter. But all three implementations ignore the status field when constructing the error body -- OpenAI (serialize.ts line 134-146) only uses message and type, Anthropic (serialize.ts line 170-179) only uses message and type, Responses (serialize.ts line 315-328) only uses message and type. The status is used by route-handler.ts (line 113) to set the HTTP status code, not by the serializer. The parameter creates a false expectation that the serializer should use it."
|
|
4586
|
+
],
|
|
4587
|
+
"suggestion": "Remove `status` from the serializeError parameter signature in the Format interface and all implementations, since it is only used by the route handler for the HTTP status code, not by the serialization logic. This makes the boundary clearer.",
|
|
4588
|
+
"reasoning": ""
|
|
4589
|
+
},
|
|
4590
|
+
"status": "auto_resolved",
|
|
4591
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4592
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4593
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4594
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4595
|
+
"reopen_count": 0,
|
|
4596
|
+
"lang": "typescript",
|
|
4597
|
+
"suppressed": false,
|
|
4598
|
+
"suppressed_at": null,
|
|
4599
|
+
"suppression_pattern": null,
|
|
4600
|
+
"resolution_attestation": {
|
|
4601
|
+
"kind": "scan_verified",
|
|
4602
|
+
"text": "Disappeared from detector output",
|
|
4603
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4604
|
+
"scan_verified": true
|
|
4605
|
+
},
|
|
4606
|
+
"wontfix_scan_count": 9,
|
|
4607
|
+
"wontfix_snapshot": {
|
|
4608
|
+
"captured_at": "2026-03-15T05:08:11+00:00",
|
|
4609
|
+
"scan_count": 9,
|
|
4610
|
+
"tier": 3,
|
|
4611
|
+
"confidence": "medium",
|
|
4612
|
+
"detail": {
|
|
4613
|
+
"holistic": true,
|
|
4614
|
+
"dimension": "high_level_elegance",
|
|
4615
|
+
"related_files": [
|
|
4616
|
+
"src/formats/types.ts",
|
|
4617
|
+
"src/formats/openai/serialize.ts",
|
|
4618
|
+
"src/formats/anthropic/serialize.ts",
|
|
4619
|
+
"src/formats/responses/serialize.ts"
|
|
4620
|
+
],
|
|
4621
|
+
"evidence": [
|
|
4622
|
+
"The Format interface (types.ts line 25) defines serializeError with `status: number` in the parameter. But all three implementations ignore the status field when constructing the error body -- OpenAI (serialize.ts line 134-146) only uses message and type, Anthropic (serialize.ts line 170-179) only uses message and type, Responses (serialize.ts line 315-328) only uses message and type. The status is used by route-handler.ts (line 113) to set the HTTP status code, not by the serializer. The parameter creates a false expectation that the serializer should use it."
|
|
4623
|
+
],
|
|
4624
|
+
"suggestion": "Remove `status` from the serializeError parameter signature in the Format interface and all implementations, since it is only used by the route handler for the HTTP status code, not by the serialization logic. This makes the boundary clearer.",
|
|
4625
|
+
"reasoning": ""
|
|
4626
|
+
}
|
|
4627
|
+
}
|
|
4628
|
+
},
|
|
4629
|
+
"review::.::holistic::abstraction_fitness::buildMockRequest_seven_params::9d4a34a5": {
|
|
4630
|
+
"id": "review::.::holistic::abstraction_fitness::buildMockRequest_seven_params::9d4a34a5",
|
|
4631
|
+
"detector": "review",
|
|
4632
|
+
"file": ".",
|
|
4633
|
+
"tier": 3,
|
|
4634
|
+
"confidence": "medium",
|
|
4635
|
+
"summary": "buildMockRequest takes 7 positional parameters, making call sites hard to read",
|
|
4636
|
+
"detail": {
|
|
4637
|
+
"holistic": true,
|
|
4638
|
+
"dimension": "abstraction_fitness",
|
|
4639
|
+
"related_files": [
|
|
4640
|
+
"src/formats/request-helpers.ts"
|
|
4641
|
+
],
|
|
4642
|
+
"evidence": [
|
|
4643
|
+
"buildMockRequest (line 25-51) accepts: format, body, messages, tools, defaultModel, raw, meta. All three callers (openai/parse.ts:35, anthropic/parse.ts:58, responses/parse.ts:61) pass 7 positional arguments. The call sites read like `buildMockRequest('openai', req, parseMessages(req), parseTools(req), 'gpt-5.4', body, meta)` which requires counting positions to understand what each argument is."
|
|
4644
|
+
],
|
|
4645
|
+
"suggestion": "Group the parameters into an options object: `buildMockRequest({ format: 'openai', body: req, messages: parseMessages(req), tools: parseTools(req), defaultModel: 'gpt-5.4', raw: body, meta })`. This is a common pattern for functions with more than 4-5 parameters and makes call sites self-documenting.",
|
|
4646
|
+
"reasoning": ""
|
|
4647
|
+
},
|
|
4648
|
+
"status": "auto_resolved",
|
|
4649
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4650
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4651
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4652
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4653
|
+
"reopen_count": 0,
|
|
4654
|
+
"lang": "typescript",
|
|
4655
|
+
"suppressed": false,
|
|
4656
|
+
"suppressed_at": null,
|
|
4657
|
+
"suppression_pattern": null,
|
|
4658
|
+
"resolution_attestation": {
|
|
4659
|
+
"kind": "scan_verified",
|
|
4660
|
+
"text": "Disappeared from detector output",
|
|
4661
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4662
|
+
"scan_verified": true
|
|
4663
|
+
},
|
|
4664
|
+
"wontfix_scan_count": 9,
|
|
4665
|
+
"wontfix_snapshot": {
|
|
4666
|
+
"captured_at": "2026-03-15T05:08:09+00:00",
|
|
4667
|
+
"scan_count": 9,
|
|
4668
|
+
"tier": 3,
|
|
4669
|
+
"confidence": "medium",
|
|
4670
|
+
"detail": {
|
|
4671
|
+
"holistic": true,
|
|
4672
|
+
"dimension": "abstraction_fitness",
|
|
4673
|
+
"related_files": [
|
|
4674
|
+
"src/formats/request-helpers.ts"
|
|
4675
|
+
],
|
|
4676
|
+
"evidence": [
|
|
4677
|
+
"buildMockRequest (line 25-51) accepts: format, body, messages, tools, defaultModel, raw, meta. All three callers (openai/parse.ts:35, anthropic/parse.ts:58, responses/parse.ts:61) pass 7 positional arguments. The call sites read like `buildMockRequest('openai', req, parseMessages(req), parseTools(req), 'gpt-5.4', body, meta)` which requires counting positions to understand what each argument is."
|
|
4678
|
+
],
|
|
4679
|
+
"suggestion": "Group the parameters into an options object: `buildMockRequest({ format: 'openai', body: req, messages: parseMessages(req), tools: parseTools(req), defaultModel: 'gpt-5.4', raw: body, meta })`. This is a common pattern for functions with more than 4-5 parameters and makes call sites self-documenting.",
|
|
4680
|
+
"reasoning": ""
|
|
4681
|
+
}
|
|
4682
|
+
}
|
|
4683
|
+
},
|
|
4684
|
+
"review::.::holistic::package_organization::test_helpers_not_in_dedicated_dir::dfd7578e": {
|
|
4685
|
+
"id": "review::.::holistic::package_organization::test_helpers_not_in_dedicated_dir::dfd7578e",
|
|
4686
|
+
"detector": "review",
|
|
4687
|
+
"file": ".",
|
|
4688
|
+
"tier": 3,
|
|
4689
|
+
"confidence": "low",
|
|
4690
|
+
"summary": "Test helper (make-req.ts) is in test/helpers/ but format-specific test helpers are inline in each test file",
|
|
4691
|
+
"detail": {
|
|
4692
|
+
"holistic": true,
|
|
4693
|
+
"dimension": "package_organization",
|
|
4694
|
+
"related_files": [
|
|
4695
|
+
"test/helpers/make-req.ts",
|
|
4696
|
+
"test/formats/openai.test.ts",
|
|
4697
|
+
"test/formats/anthropic.test.ts"
|
|
4698
|
+
],
|
|
4699
|
+
"evidence": [
|
|
4700
|
+
"test/helpers/make-req.ts is a shared fixture factory extracted to its own directory",
|
|
4701
|
+
"Format test files each define their own inline parse() helper rather than sharing one",
|
|
4702
|
+
"Minor inconsistency in where test utilities live"
|
|
4703
|
+
],
|
|
4704
|
+
"suggestion": "Consider extracting common test parsing helpers alongside make-req.ts in test/helpers/ for consistency.",
|
|
4705
|
+
"reasoning": ""
|
|
4706
|
+
},
|
|
4707
|
+
"status": "auto_resolved",
|
|
4708
|
+
"note": "Fixed despite wontfix \u2014 disappeared from scan (was wontfix)",
|
|
4709
|
+
"first_seen": "2026-03-15T05:00:28+00:00",
|
|
4710
|
+
"last_seen": "2026-03-15T05:00:28+00:00",
|
|
4711
|
+
"resolved_at": "2026-03-15T05:08:48+00:00",
|
|
4712
|
+
"reopen_count": 0,
|
|
4713
|
+
"lang": "typescript",
|
|
4714
|
+
"suppressed": false,
|
|
4715
|
+
"suppressed_at": null,
|
|
4716
|
+
"suppression_pattern": null,
|
|
4717
|
+
"resolution_attestation": {
|
|
4718
|
+
"kind": "scan_verified",
|
|
4719
|
+
"text": "Disappeared from detector output",
|
|
4720
|
+
"attested_at": "2026-03-15T05:08:48+00:00",
|
|
4721
|
+
"scan_verified": true
|
|
4722
|
+
},
|
|
4723
|
+
"wontfix_scan_count": 9,
|
|
4724
|
+
"wontfix_snapshot": {
|
|
4725
|
+
"captured_at": "2026-03-15T05:07:29+00:00",
|
|
4726
|
+
"scan_count": 9,
|
|
4727
|
+
"tier": 3,
|
|
4728
|
+
"confidence": "low",
|
|
4729
|
+
"detail": {
|
|
4730
|
+
"holistic": true,
|
|
4731
|
+
"dimension": "package_organization",
|
|
4732
|
+
"related_files": [
|
|
4733
|
+
"test/helpers/make-req.ts",
|
|
4734
|
+
"test/formats/openai.test.ts",
|
|
4735
|
+
"test/formats/anthropic.test.ts"
|
|
4736
|
+
],
|
|
4737
|
+
"evidence": [
|
|
4738
|
+
"test/helpers/make-req.ts is a shared fixture factory extracted to its own directory",
|
|
4739
|
+
"Format test files each define their own inline parse() helper rather than sharing one",
|
|
4740
|
+
"Minor inconsistency in where test utilities live"
|
|
4741
|
+
],
|
|
4742
|
+
"suggestion": "Consider extracting common test parsing helpers alongside make-req.ts in test/helpers/ for consistency.",
|
|
4743
|
+
"reasoning": ""
|
|
4744
|
+
}
|
|
4745
|
+
}
|
|
4746
|
+
},
|
|
4747
|
+
"smells::src/index.ts::async_no_await": {
|
|
4748
|
+
"id": "smells::src/index.ts::async_no_await",
|
|
4749
|
+
"detector": "smells",
|
|
4750
|
+
"file": "src/index.ts",
|
|
4751
|
+
"tier": 3,
|
|
4752
|
+
"confidence": "medium",
|
|
4753
|
+
"summary": "1x Async functions without await",
|
|
4754
|
+
"detail": {
|
|
4755
|
+
"smell_id": "async_no_await",
|
|
4756
|
+
"severity": "medium",
|
|
4757
|
+
"count": 1,
|
|
4758
|
+
"lines": [
|
|
4759
|
+
40
|
|
4760
|
+
]
|
|
4761
|
+
},
|
|
4762
|
+
"status": "wontfix",
|
|
4763
|
+
"note": "Already reviewed \u2014 intentional or false positive",
|
|
4764
|
+
"first_seen": "2026-03-15T05:00:32+00:00",
|
|
4765
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
4766
|
+
"resolved_at": "2026-03-15T05:09:59+00:00",
|
|
4767
|
+
"reopen_count": 0,
|
|
4768
|
+
"lang": "typescript",
|
|
4769
|
+
"zone": "production",
|
|
4770
|
+
"suppressed": false,
|
|
4771
|
+
"suppressed_at": null,
|
|
4772
|
+
"suppression_pattern": null,
|
|
4773
|
+
"resolution_attestation": {
|
|
4774
|
+
"kind": "manual",
|
|
4775
|
+
"text": "I have actually reviewed this finding and confirmed it is either intentional or a false positive and I am not gaming the score by resolving without fixing.",
|
|
4776
|
+
"attested_at": "2026-03-15T05:09:59+00:00",
|
|
4777
|
+
"scan_verified": false
|
|
4778
|
+
},
|
|
4779
|
+
"wontfix_scan_count": 10,
|
|
4780
|
+
"wontfix_snapshot": {
|
|
4781
|
+
"captured_at": "2026-03-15T05:09:59+00:00",
|
|
4782
|
+
"scan_count": 10,
|
|
4783
|
+
"tier": 3,
|
|
4784
|
+
"confidence": "medium",
|
|
4785
|
+
"detail": {
|
|
4786
|
+
"smell_id": "async_no_await",
|
|
4787
|
+
"severity": "medium",
|
|
4788
|
+
"count": 1,
|
|
4789
|
+
"lines": [
|
|
4790
|
+
40
|
|
4791
|
+
]
|
|
4792
|
+
}
|
|
4793
|
+
}
|
|
4794
|
+
},
|
|
4795
|
+
"boilerplate_duplication::src/formats/anthropic/serialize.ts::28e424affd5b1856": {
|
|
4796
|
+
"id": "boilerplate_duplication::src/formats/anthropic/serialize.ts::28e424affd5b1856",
|
|
4797
|
+
"detector": "boilerplate_duplication",
|
|
4798
|
+
"file": "src/formats/anthropic/serialize.ts",
|
|
4799
|
+
"tier": 3,
|
|
4800
|
+
"confidence": "medium",
|
|
4801
|
+
"summary": "Boilerplate block repeated across 2 files (window 13 lines): src/formats/anthropic/serialize.ts:165, src/formats/responses/serialize.ts:310",
|
|
4802
|
+
"detail": {
|
|
4803
|
+
"distinct_files": 2,
|
|
4804
|
+
"window_size": 13,
|
|
4805
|
+
"locations": [
|
|
4806
|
+
{
|
|
4807
|
+
"file": "src/formats/anthropic/serialize.ts",
|
|
4808
|
+
"line": 165
|
|
4809
|
+
},
|
|
4810
|
+
{
|
|
4811
|
+
"file": "src/formats/responses/serialize.ts",
|
|
4812
|
+
"line": 310
|
|
4813
|
+
}
|
|
4814
|
+
],
|
|
4815
|
+
"sample": [
|
|
4816
|
+
",",
|
|
4817
|
+
" usage: buildUsage(usage),",
|
|
4818
|
+
" };",
|
|
4819
|
+
"}"
|
|
4820
|
+
]
|
|
4821
|
+
},
|
|
4822
|
+
"status": "wontfix",
|
|
4823
|
+
"note": "serializeError functions return format-specific shapes \u2014 cannot be shared",
|
|
4824
|
+
"first_seen": "2026-03-15T05:00:35+00:00",
|
|
4825
|
+
"last_seen": "2026-03-15T05:08:48+00:00",
|
|
4826
|
+
"resolved_at": "2026-03-15T05:10:22+00:00",
|
|
4827
|
+
"reopen_count": 0,
|
|
4828
|
+
"lang": "typescript",
|
|
4829
|
+
"zone": "production",
|
|
4830
|
+
"suppressed": false,
|
|
4831
|
+
"suppressed_at": null,
|
|
4832
|
+
"suppression_pattern": null,
|
|
4833
|
+
"resolution_attestation": {
|
|
4834
|
+
"kind": "manual",
|
|
4835
|
+
"text": "I have actually reviewed both serializeError functions and confirmed they produce different JSON structures and I am not gaming the score by resolving without fixing.",
|
|
4836
|
+
"attested_at": "2026-03-15T05:10:22+00:00",
|
|
4837
|
+
"scan_verified": false
|
|
4838
|
+
},
|
|
4839
|
+
"wontfix_scan_count": 10,
|
|
4840
|
+
"wontfix_snapshot": {
|
|
4841
|
+
"captured_at": "2026-03-15T05:10:22+00:00",
|
|
4842
|
+
"scan_count": 10,
|
|
4843
|
+
"tier": 3,
|
|
4844
|
+
"confidence": "medium",
|
|
4845
|
+
"detail": {
|
|
4846
|
+
"distinct_files": 2,
|
|
4847
|
+
"window_size": 13,
|
|
4848
|
+
"locations": [
|
|
4849
|
+
{
|
|
4850
|
+
"file": "src/formats/anthropic/serialize.ts",
|
|
4851
|
+
"line": 165
|
|
4852
|
+
},
|
|
4853
|
+
{
|
|
4854
|
+
"file": "src/formats/responses/serialize.ts",
|
|
4855
|
+
"line": 310
|
|
4856
|
+
}
|
|
4857
|
+
],
|
|
4858
|
+
"sample": [
|
|
4859
|
+
",",
|
|
4860
|
+
" usage: buildUsage(usage),",
|
|
4861
|
+
" };",
|
|
4862
|
+
"}"
|
|
4863
|
+
]
|
|
4864
|
+
}
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4867
|
+
},
|
|
4868
|
+
"scan_coverage": {
|
|
4869
|
+
"typescript": {
|
|
4870
|
+
"status": "full",
|
|
4871
|
+
"confidence": 1.0,
|
|
4872
|
+
"detectors": {
|
|
4873
|
+
"security": {
|
|
4874
|
+
"detector": "security",
|
|
4875
|
+
"status": "full",
|
|
4876
|
+
"confidence": 1.0,
|
|
4877
|
+
"summary": "Security coverage complete for enabled detectors.",
|
|
4878
|
+
"impact": "",
|
|
4879
|
+
"remediation": "",
|
|
4880
|
+
"tool": "",
|
|
4881
|
+
"reason": ""
|
|
4882
|
+
}
|
|
4883
|
+
},
|
|
4884
|
+
"warnings": [],
|
|
4885
|
+
"updated_at": "2026-03-15T05:08:48+00:00"
|
|
4886
|
+
}
|
|
4887
|
+
},
|
|
4888
|
+
"score_confidence": {
|
|
4889
|
+
"status": "full",
|
|
4890
|
+
"confidence": 1.0,
|
|
4891
|
+
"detectors": [],
|
|
4892
|
+
"dimensions": []
|
|
4893
|
+
},
|
|
4894
|
+
"subjective_integrity": {
|
|
4895
|
+
"status": "disabled",
|
|
4896
|
+
"target_score": null,
|
|
4897
|
+
"matched_count": 0,
|
|
4898
|
+
"matched_dimensions": [],
|
|
4899
|
+
"reset_dimensions": []
|
|
4900
|
+
},
|
|
4901
|
+
"subjective_assessments": {
|
|
4902
|
+
"cross_module_architecture": {
|
|
4903
|
+
"score": 93.0,
|
|
4904
|
+
"source": "holistic",
|
|
4905
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4906
|
+
"needs_review_refresh": true,
|
|
4907
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4908
|
+
"stale_since": "2026-03-15T05:08:10+00:00"
|
|
4909
|
+
},
|
|
4910
|
+
"convention_outlier": {
|
|
4911
|
+
"score": 90.0,
|
|
4912
|
+
"source": "holistic",
|
|
4913
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4914
|
+
"needs_review_refresh": true,
|
|
4915
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4916
|
+
"stale_since": "2026-03-15T05:08:29+00:00"
|
|
4917
|
+
},
|
|
4918
|
+
"error_consistency": {
|
|
4919
|
+
"score": 82.0,
|
|
4920
|
+
"source": "holistic",
|
|
4921
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4922
|
+
"needs_review_refresh": true,
|
|
4923
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4924
|
+
"stale_since": "2026-03-15T05:08:11+00:00"
|
|
4925
|
+
},
|
|
4926
|
+
"abstraction_fitness": {
|
|
4927
|
+
"score": 91.0,
|
|
4928
|
+
"source": "holistic",
|
|
4929
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4930
|
+
"needs_review_refresh": true,
|
|
4931
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4932
|
+
"stale_since": "2026-03-15T05:08:09+00:00"
|
|
4933
|
+
},
|
|
4934
|
+
"api_surface_coherence": {
|
|
4935
|
+
"score": 85.0,
|
|
4936
|
+
"source": "holistic",
|
|
4937
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4938
|
+
"needs_review_refresh": true,
|
|
4939
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4940
|
+
"stale_since": "2026-03-15T05:08:28+00:00"
|
|
4941
|
+
},
|
|
4942
|
+
"authorization_consistency": {
|
|
4943
|
+
"score": 100,
|
|
4944
|
+
"source": "holistic",
|
|
4945
|
+
"assessed_at": "2026-03-15T05:00:28+00:00"
|
|
4946
|
+
},
|
|
4947
|
+
"ai_generated_debt": {
|
|
4948
|
+
"score": 88.0,
|
|
4949
|
+
"source": "holistic",
|
|
4950
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4951
|
+
"needs_review_refresh": true,
|
|
4952
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4953
|
+
"stale_since": "2026-03-15T05:08:09+00:00"
|
|
4954
|
+
},
|
|
4955
|
+
"incomplete_migration": {
|
|
4956
|
+
"score": 95.0,
|
|
4957
|
+
"source": "holistic",
|
|
4958
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4959
|
+
"needs_review_refresh": true,
|
|
4960
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4961
|
+
"stale_since": "2026-03-15T05:08:12+00:00"
|
|
4962
|
+
},
|
|
4963
|
+
"package_organization": {
|
|
4964
|
+
"score": 94.0,
|
|
4965
|
+
"source": "holistic",
|
|
4966
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4967
|
+
"needs_review_refresh": true,
|
|
4968
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4969
|
+
"stale_since": "2026-03-15T05:07:29+00:00"
|
|
4970
|
+
},
|
|
4971
|
+
"high_level_elegance": {
|
|
4972
|
+
"score": 92.0,
|
|
4973
|
+
"source": "holistic",
|
|
4974
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4975
|
+
"needs_review_refresh": true,
|
|
4976
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4977
|
+
"stale_since": "2026-03-15T05:08:11+00:00"
|
|
4978
|
+
},
|
|
4979
|
+
"mid_level_elegance": {
|
|
4980
|
+
"score": 88.0,
|
|
4981
|
+
"source": "holistic",
|
|
4982
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4983
|
+
"needs_review_refresh": true,
|
|
4984
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4985
|
+
"stale_since": "2026-03-15T05:08:12+00:00"
|
|
4986
|
+
},
|
|
4987
|
+
"low_level_elegance": {
|
|
4988
|
+
"score": 86.0,
|
|
4989
|
+
"source": "holistic",
|
|
4990
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4991
|
+
"needs_review_refresh": true,
|
|
4992
|
+
"refresh_reason": "review_finding_wontfix",
|
|
4993
|
+
"stale_since": "2026-03-15T05:07:25+00:00"
|
|
4994
|
+
},
|
|
4995
|
+
"design_coherence": {
|
|
4996
|
+
"score": 87.0,
|
|
4997
|
+
"source": "holistic",
|
|
4998
|
+
"assessed_at": "2026-03-15T05:00:28+00:00",
|
|
4999
|
+
"needs_review_refresh": true,
|
|
5000
|
+
"refresh_reason": "review_finding_wontfix",
|
|
5001
|
+
"stale_since": "2026-03-15T05:08:30+00:00"
|
|
5002
|
+
}
|
|
5003
|
+
},
|
|
5004
|
+
"lang_capabilities": {
|
|
5005
|
+
"typescript": {
|
|
5006
|
+
"fixers": [
|
|
5007
|
+
"dead-useeffect",
|
|
5008
|
+
"debug-logs",
|
|
5009
|
+
"empty-if-chain",
|
|
5010
|
+
"unused-imports",
|
|
5011
|
+
"unused-params",
|
|
5012
|
+
"unused-vars"
|
|
5013
|
+
],
|
|
5014
|
+
"typecheck_cmd": "npx tsc --noEmit"
|
|
5015
|
+
}
|
|
5016
|
+
},
|
|
5017
|
+
"zone_distribution": {
|
|
5018
|
+
"production": 29,
|
|
5019
|
+
"test": 11,
|
|
5020
|
+
"config": 1
|
|
5021
|
+
},
|
|
5022
|
+
"scan_history": [
|
|
5023
|
+
{
|
|
5024
|
+
"timestamp": "2026-03-14T23:50:01+00:00",
|
|
5025
|
+
"lang": "typescript",
|
|
5026
|
+
"strict_score": 31.3,
|
|
5027
|
+
"verified_strict_score": 78.1,
|
|
5028
|
+
"objective_score": 78.1,
|
|
5029
|
+
"overall_score": 31.3,
|
|
5030
|
+
"open": 69,
|
|
5031
|
+
"diff_new": 69,
|
|
5032
|
+
"diff_resolved": 0,
|
|
5033
|
+
"ignored": 0,
|
|
5034
|
+
"raw_findings": 69,
|
|
5035
|
+
"suppressed_pct": 0.0,
|
|
5036
|
+
"ignore_patterns": 0,
|
|
5037
|
+
"subjective_integrity": {
|
|
5038
|
+
"status": "pass",
|
|
5039
|
+
"matched_count": 0,
|
|
5040
|
+
"reset_count": 0,
|
|
5041
|
+
"target_score": 95.0
|
|
5042
|
+
},
|
|
5043
|
+
"score_confidence": {
|
|
5044
|
+
"status": "full",
|
|
5045
|
+
"confidence": 1.0,
|
|
5046
|
+
"detector_count": 0,
|
|
5047
|
+
"dimension_count": 0
|
|
5048
|
+
},
|
|
5049
|
+
"dimension_scores": {
|
|
5050
|
+
"File health": {
|
|
5051
|
+
"score": 100.0,
|
|
5052
|
+
"strict": 100.0
|
|
5053
|
+
},
|
|
5054
|
+
"Code quality": {
|
|
5055
|
+
"score": 91.5,
|
|
5056
|
+
"strict": 91.5
|
|
5057
|
+
},
|
|
5058
|
+
"Duplication": {
|
|
5059
|
+
"score": 100.0,
|
|
5060
|
+
"strict": 100.0
|
|
5061
|
+
},
|
|
5062
|
+
"Test health": {
|
|
5063
|
+
"score": 47.5,
|
|
5064
|
+
"strict": 47.5
|
|
5065
|
+
},
|
|
5066
|
+
"Security": {
|
|
5067
|
+
"score": 98.3,
|
|
5068
|
+
"strict": 98.3
|
|
5069
|
+
},
|
|
5070
|
+
"Error consistency": {
|
|
5071
|
+
"score": 0.0,
|
|
5072
|
+
"strict": 0.0
|
|
5073
|
+
},
|
|
5074
|
+
"Abstraction fit": {
|
|
5075
|
+
"score": 0.0,
|
|
5076
|
+
"strict": 0.0
|
|
5077
|
+
},
|
|
5078
|
+
"AI generated debt": {
|
|
5079
|
+
"score": 0.0,
|
|
5080
|
+
"strict": 0.0
|
|
5081
|
+
},
|
|
5082
|
+
"High elegance": {
|
|
5083
|
+
"score": 0.0,
|
|
5084
|
+
"strict": 0.0
|
|
5085
|
+
},
|
|
5086
|
+
"Mid elegance": {
|
|
5087
|
+
"score": 0.0,
|
|
5088
|
+
"strict": 0.0
|
|
5089
|
+
},
|
|
5090
|
+
"Low elegance": {
|
|
5091
|
+
"score": 0.0,
|
|
5092
|
+
"strict": 0.0
|
|
5093
|
+
},
|
|
5094
|
+
"Cross-module arch": {
|
|
5095
|
+
"score": 0.0,
|
|
5096
|
+
"strict": 0.0
|
|
5097
|
+
},
|
|
5098
|
+
"Convention drift": {
|
|
5099
|
+
"score": 0.0,
|
|
5100
|
+
"strict": 0.0
|
|
5101
|
+
},
|
|
5102
|
+
"API coherence": {
|
|
5103
|
+
"score": 0.0,
|
|
5104
|
+
"strict": 0.0
|
|
5105
|
+
},
|
|
5106
|
+
"Auth consistency": {
|
|
5107
|
+
"score": 0.0,
|
|
5108
|
+
"strict": 0.0
|
|
5109
|
+
},
|
|
5110
|
+
"Stale migration": {
|
|
5111
|
+
"score": 0.0,
|
|
5112
|
+
"strict": 0.0
|
|
5113
|
+
},
|
|
5114
|
+
"Structure nav": {
|
|
5115
|
+
"score": 0.0,
|
|
5116
|
+
"strict": 0.0
|
|
5117
|
+
},
|
|
5118
|
+
"Design coherence": {
|
|
5119
|
+
"score": 0.0,
|
|
5120
|
+
"strict": 0.0
|
|
5121
|
+
}
|
|
5122
|
+
}
|
|
5123
|
+
},
|
|
5124
|
+
{
|
|
5125
|
+
"timestamp": "2026-03-14T23:55:12+00:00",
|
|
5126
|
+
"lang": "typescript",
|
|
5127
|
+
"strict_score": 32.8,
|
|
5128
|
+
"verified_strict_score": 82.1,
|
|
5129
|
+
"objective_score": 82.1,
|
|
5130
|
+
"overall_score": 32.8,
|
|
5131
|
+
"open": 58,
|
|
5132
|
+
"diff_new": 0,
|
|
5133
|
+
"diff_resolved": 11,
|
|
5134
|
+
"ignored": 0,
|
|
5135
|
+
"raw_findings": 58,
|
|
5136
|
+
"suppressed_pct": 0.0,
|
|
5137
|
+
"ignore_patterns": 0,
|
|
5138
|
+
"subjective_integrity": {
|
|
5139
|
+
"status": "pass",
|
|
5140
|
+
"matched_count": 0,
|
|
5141
|
+
"reset_count": 0,
|
|
5142
|
+
"target_score": 95.0
|
|
5143
|
+
},
|
|
5144
|
+
"score_confidence": {
|
|
5145
|
+
"status": "full",
|
|
5146
|
+
"confidence": 1.0,
|
|
5147
|
+
"detector_count": 0,
|
|
5148
|
+
"dimension_count": 0
|
|
5149
|
+
},
|
|
5150
|
+
"dimension_scores": {
|
|
5151
|
+
"File health": {
|
|
5152
|
+
"score": 100.0,
|
|
5153
|
+
"strict": 100.0
|
|
5154
|
+
},
|
|
5155
|
+
"Code quality": {
|
|
5156
|
+
"score": 96.0,
|
|
5157
|
+
"strict": 96.0
|
|
5158
|
+
},
|
|
5159
|
+
"Duplication": {
|
|
5160
|
+
"score": 100.0,
|
|
5161
|
+
"strict": 100.0
|
|
5162
|
+
},
|
|
5163
|
+
"Test health": {
|
|
5164
|
+
"score": 55.2,
|
|
5165
|
+
"strict": 55.2
|
|
5166
|
+
},
|
|
5167
|
+
"Security": {
|
|
5168
|
+
"score": 100.0,
|
|
5169
|
+
"strict": 100.0
|
|
5170
|
+
},
|
|
5171
|
+
"Error consistency": {
|
|
5172
|
+
"score": 0.0,
|
|
5173
|
+
"strict": 0.0
|
|
5174
|
+
},
|
|
5175
|
+
"Abstraction fit": {
|
|
5176
|
+
"score": 0.0,
|
|
5177
|
+
"strict": 0.0
|
|
5178
|
+
},
|
|
5179
|
+
"AI generated debt": {
|
|
5180
|
+
"score": 0.0,
|
|
5181
|
+
"strict": 0.0
|
|
5182
|
+
},
|
|
5183
|
+
"High elegance": {
|
|
5184
|
+
"score": 0.0,
|
|
5185
|
+
"strict": 0.0
|
|
5186
|
+
},
|
|
5187
|
+
"Mid elegance": {
|
|
5188
|
+
"score": 0.0,
|
|
5189
|
+
"strict": 0.0
|
|
5190
|
+
},
|
|
5191
|
+
"Low elegance": {
|
|
5192
|
+
"score": 0.0,
|
|
5193
|
+
"strict": 0.0
|
|
5194
|
+
},
|
|
5195
|
+
"Cross-module arch": {
|
|
5196
|
+
"score": 0.0,
|
|
5197
|
+
"strict": 0.0
|
|
5198
|
+
},
|
|
5199
|
+
"Convention drift": {
|
|
5200
|
+
"score": 0.0,
|
|
5201
|
+
"strict": 0.0
|
|
5202
|
+
},
|
|
5203
|
+
"API coherence": {
|
|
5204
|
+
"score": 0.0,
|
|
5205
|
+
"strict": 0.0
|
|
5206
|
+
},
|
|
5207
|
+
"Auth consistency": {
|
|
5208
|
+
"score": 0.0,
|
|
5209
|
+
"strict": 0.0
|
|
5210
|
+
},
|
|
5211
|
+
"Stale migration": {
|
|
5212
|
+
"score": 0.0,
|
|
5213
|
+
"strict": 0.0
|
|
5214
|
+
},
|
|
5215
|
+
"Structure nav": {
|
|
5216
|
+
"score": 0.0,
|
|
5217
|
+
"strict": 0.0
|
|
5218
|
+
},
|
|
5219
|
+
"Design coherence": {
|
|
5220
|
+
"score": 0.0,
|
|
5221
|
+
"strict": 0.0
|
|
5222
|
+
}
|
|
5223
|
+
}
|
|
5224
|
+
},
|
|
5225
|
+
{
|
|
5226
|
+
"timestamp": "2026-03-15T00:09:50+00:00",
|
|
5227
|
+
"lang": "typescript",
|
|
5228
|
+
"strict_score": 93.5,
|
|
5229
|
+
"verified_strict_score": 98.8,
|
|
5230
|
+
"objective_score": 98.8,
|
|
5231
|
+
"overall_score": 93.5,
|
|
5232
|
+
"open": 40,
|
|
5233
|
+
"diff_new": 17,
|
|
5234
|
+
"diff_resolved": 35,
|
|
5235
|
+
"ignored": 0,
|
|
5236
|
+
"raw_findings": 17,
|
|
5237
|
+
"suppressed_pct": 0.0,
|
|
5238
|
+
"ignore_patterns": 0,
|
|
5239
|
+
"subjective_integrity": {
|
|
5240
|
+
"status": "disabled",
|
|
5241
|
+
"matched_count": 0,
|
|
5242
|
+
"reset_count": 0,
|
|
5243
|
+
"target_score": null
|
|
5244
|
+
},
|
|
5245
|
+
"score_confidence": {
|
|
5246
|
+
"status": "full",
|
|
5247
|
+
"confidence": 1.0,
|
|
5248
|
+
"detector_count": 0,
|
|
5249
|
+
"dimension_count": 0
|
|
5250
|
+
},
|
|
5251
|
+
"dimension_scores": {
|
|
5252
|
+
"File health": {
|
|
5253
|
+
"score": 100.0,
|
|
5254
|
+
"strict": 100.0
|
|
5255
|
+
},
|
|
5256
|
+
"Code quality": {
|
|
5257
|
+
"score": 100.0,
|
|
5258
|
+
"strict": 100.0
|
|
5259
|
+
},
|
|
5260
|
+
"Duplication": {
|
|
5261
|
+
"score": 100.0,
|
|
5262
|
+
"strict": 100.0
|
|
5263
|
+
},
|
|
5264
|
+
"Test health": {
|
|
5265
|
+
"score": 96.9,
|
|
5266
|
+
"strict": 96.9
|
|
5267
|
+
},
|
|
5268
|
+
"Security": {
|
|
5269
|
+
"score": 100.0,
|
|
5270
|
+
"strict": 100.0
|
|
5271
|
+
},
|
|
5272
|
+
"Error consistency": {
|
|
5273
|
+
"score": 84.0,
|
|
5274
|
+
"strict": 84.0
|
|
5275
|
+
},
|
|
5276
|
+
"Abstraction fit": {
|
|
5277
|
+
"score": 93.0,
|
|
5278
|
+
"strict": 93.0
|
|
5279
|
+
},
|
|
5280
|
+
"AI generated debt": {
|
|
5281
|
+
"score": 82.0,
|
|
5282
|
+
"strict": 82.0
|
|
5283
|
+
},
|
|
5284
|
+
"High elegance": {
|
|
5285
|
+
"score": 93.0,
|
|
5286
|
+
"strict": 93.0
|
|
5287
|
+
},
|
|
5288
|
+
"Mid elegance": {
|
|
5289
|
+
"score": 90.0,
|
|
5290
|
+
"strict": 90.0
|
|
5291
|
+
},
|
|
5292
|
+
"Low elegance": {
|
|
5293
|
+
"score": 87.0,
|
|
5294
|
+
"strict": 87.0
|
|
5295
|
+
},
|
|
5296
|
+
"Cross-module arch": {
|
|
5297
|
+
"score": 92.0,
|
|
5298
|
+
"strict": 92.0
|
|
5299
|
+
},
|
|
5300
|
+
"Convention drift": {
|
|
5301
|
+
"score": 88.5,
|
|
5302
|
+
"strict": 88.5
|
|
5303
|
+
},
|
|
5304
|
+
"API coherence": {
|
|
5305
|
+
"score": 86.0,
|
|
5306
|
+
"strict": 86.0
|
|
5307
|
+
},
|
|
5308
|
+
"Auth consistency": {
|
|
5309
|
+
"score": 100.0,
|
|
5310
|
+
"strict": 100.0
|
|
5311
|
+
},
|
|
5312
|
+
"Stale migration": {
|
|
5313
|
+
"score": 97.0,
|
|
5314
|
+
"strict": 97.0
|
|
5315
|
+
},
|
|
5316
|
+
"Structure nav": {
|
|
5317
|
+
"score": 93.0,
|
|
5318
|
+
"strict": 93.0
|
|
5319
|
+
},
|
|
5320
|
+
"Design coherence": {
|
|
5321
|
+
"score": 84.0,
|
|
5322
|
+
"strict": 84.0
|
|
5323
|
+
}
|
|
5324
|
+
}
|
|
3875
5325
|
},
|
|
3876
|
-
"design_coherence": {
|
|
3877
|
-
"score": 84.0,
|
|
3878
|
-
"source": "holistic",
|
|
3879
|
-
"assessed_at": "2026-03-15T00:09:50+00:00",
|
|
3880
|
-
"needs_review_refresh": true,
|
|
3881
|
-
"refresh_reason": "review_finding_fixed",
|
|
3882
|
-
"stale_since": "2026-03-15T00:17:16+00:00"
|
|
3883
|
-
}
|
|
3884
|
-
},
|
|
3885
|
-
"lang_capabilities": {
|
|
3886
|
-
"typescript": {
|
|
3887
|
-
"fixers": [
|
|
3888
|
-
"dead-useeffect",
|
|
3889
|
-
"debug-logs",
|
|
3890
|
-
"empty-if-chain",
|
|
3891
|
-
"unused-imports",
|
|
3892
|
-
"unused-params",
|
|
3893
|
-
"unused-vars"
|
|
3894
|
-
],
|
|
3895
|
-
"typecheck_cmd": "npx tsc --noEmit"
|
|
3896
|
-
}
|
|
3897
|
-
},
|
|
3898
|
-
"zone_distribution": {
|
|
3899
|
-
"production": 29,
|
|
3900
|
-
"test": 11,
|
|
3901
|
-
"config": 1
|
|
3902
|
-
},
|
|
3903
|
-
"scan_history": [
|
|
3904
5326
|
{
|
|
3905
|
-
"timestamp": "2026-03-
|
|
5327
|
+
"timestamp": "2026-03-15T00:09:57+00:00",
|
|
3906
5328
|
"lang": "typescript",
|
|
3907
|
-
"strict_score":
|
|
3908
|
-
"verified_strict_score":
|
|
3909
|
-
"objective_score":
|
|
3910
|
-
"overall_score":
|
|
3911
|
-
"open":
|
|
3912
|
-
"diff_new":
|
|
3913
|
-
"diff_resolved":
|
|
5329
|
+
"strict_score": 88.3,
|
|
5330
|
+
"verified_strict_score": 85.8,
|
|
5331
|
+
"objective_score": 85.8,
|
|
5332
|
+
"overall_score": 88.3,
|
|
5333
|
+
"open": 51,
|
|
5334
|
+
"diff_new": 5,
|
|
5335
|
+
"diff_resolved": 22,
|
|
3914
5336
|
"ignored": 0,
|
|
3915
|
-
"raw_findings":
|
|
5337
|
+
"raw_findings": 34,
|
|
3916
5338
|
"suppressed_pct": 0.0,
|
|
3917
5339
|
"ignore_patterns": 0,
|
|
3918
5340
|
"subjective_integrity": {
|
|
@@ -3933,87 +5355,87 @@
|
|
|
3933
5355
|
"strict": 100.0
|
|
3934
5356
|
},
|
|
3935
5357
|
"Code quality": {
|
|
3936
|
-
"score":
|
|
3937
|
-
"strict":
|
|
5358
|
+
"score": 95.9,
|
|
5359
|
+
"strict": 95.9
|
|
3938
5360
|
},
|
|
3939
5361
|
"Duplication": {
|
|
3940
5362
|
"score": 100.0,
|
|
3941
5363
|
"strict": 100.0
|
|
3942
5364
|
},
|
|
3943
5365
|
"Test health": {
|
|
3944
|
-
"score":
|
|
3945
|
-
"strict":
|
|
5366
|
+
"score": 65.2,
|
|
5367
|
+
"strict": 65.2
|
|
3946
5368
|
},
|
|
3947
5369
|
"Security": {
|
|
3948
|
-
"score":
|
|
3949
|
-
"strict":
|
|
5370
|
+
"score": 100.0,
|
|
5371
|
+
"strict": 100.0
|
|
3950
5372
|
},
|
|
3951
5373
|
"Error consistency": {
|
|
3952
|
-
"score":
|
|
3953
|
-
"strict":
|
|
5374
|
+
"score": 84.0,
|
|
5375
|
+
"strict": 84.0
|
|
3954
5376
|
},
|
|
3955
5377
|
"Abstraction fit": {
|
|
3956
|
-
"score":
|
|
3957
|
-
"strict":
|
|
5378
|
+
"score": 93.0,
|
|
5379
|
+
"strict": 93.0
|
|
3958
5380
|
},
|
|
3959
5381
|
"AI generated debt": {
|
|
3960
|
-
"score":
|
|
3961
|
-
"strict":
|
|
5382
|
+
"score": 82.0,
|
|
5383
|
+
"strict": 82.0
|
|
3962
5384
|
},
|
|
3963
5385
|
"High elegance": {
|
|
3964
|
-
"score":
|
|
3965
|
-
"strict":
|
|
5386
|
+
"score": 93.0,
|
|
5387
|
+
"strict": 93.0
|
|
3966
5388
|
},
|
|
3967
5389
|
"Mid elegance": {
|
|
3968
|
-
"score":
|
|
3969
|
-
"strict":
|
|
5390
|
+
"score": 90.0,
|
|
5391
|
+
"strict": 90.0
|
|
3970
5392
|
},
|
|
3971
5393
|
"Low elegance": {
|
|
3972
|
-
"score":
|
|
3973
|
-
"strict":
|
|
5394
|
+
"score": 87.0,
|
|
5395
|
+
"strict": 87.0
|
|
3974
5396
|
},
|
|
3975
5397
|
"Cross-module arch": {
|
|
3976
|
-
"score":
|
|
3977
|
-
"strict":
|
|
5398
|
+
"score": 92.0,
|
|
5399
|
+
"strict": 92.0
|
|
3978
5400
|
},
|
|
3979
5401
|
"Convention drift": {
|
|
3980
|
-
"score":
|
|
3981
|
-
"strict":
|
|
5402
|
+
"score": 88.5,
|
|
5403
|
+
"strict": 88.5
|
|
3982
5404
|
},
|
|
3983
5405
|
"API coherence": {
|
|
3984
|
-
"score":
|
|
3985
|
-
"strict":
|
|
5406
|
+
"score": 86.0,
|
|
5407
|
+
"strict": 86.0
|
|
3986
5408
|
},
|
|
3987
5409
|
"Auth consistency": {
|
|
3988
|
-
"score":
|
|
3989
|
-
"strict":
|
|
5410
|
+
"score": 100.0,
|
|
5411
|
+
"strict": 100.0
|
|
3990
5412
|
},
|
|
3991
5413
|
"Stale migration": {
|
|
3992
|
-
"score":
|
|
3993
|
-
"strict":
|
|
5414
|
+
"score": 97.0,
|
|
5415
|
+
"strict": 97.0
|
|
3994
5416
|
},
|
|
3995
5417
|
"Structure nav": {
|
|
3996
|
-
"score":
|
|
3997
|
-
"strict":
|
|
5418
|
+
"score": 93.0,
|
|
5419
|
+
"strict": 93.0
|
|
3998
5420
|
},
|
|
3999
5421
|
"Design coherence": {
|
|
4000
|
-
"score":
|
|
4001
|
-
"strict":
|
|
5422
|
+
"score": 84.0,
|
|
5423
|
+
"strict": 84.0
|
|
4002
5424
|
}
|
|
4003
5425
|
}
|
|
4004
5426
|
},
|
|
4005
5427
|
{
|
|
4006
|
-
"timestamp": "2026-03-
|
|
5428
|
+
"timestamp": "2026-03-15T00:20:22+00:00",
|
|
4007
5429
|
"lang": "typescript",
|
|
4008
|
-
"strict_score":
|
|
4009
|
-
"verified_strict_score":
|
|
4010
|
-
"objective_score":
|
|
4011
|
-
"overall_score":
|
|
4012
|
-
"open":
|
|
4013
|
-
"diff_new":
|
|
4014
|
-
"diff_resolved":
|
|
5430
|
+
"strict_score": 88.5,
|
|
5431
|
+
"verified_strict_score": 86.2,
|
|
5432
|
+
"objective_score": 86.2,
|
|
5433
|
+
"overall_score": 88.5,
|
|
5434
|
+
"open": 43,
|
|
5435
|
+
"diff_new": 1,
|
|
5436
|
+
"diff_resolved": 1,
|
|
4015
5437
|
"ignored": 0,
|
|
4016
|
-
"raw_findings":
|
|
5438
|
+
"raw_findings": 33,
|
|
4017
5439
|
"suppressed_pct": 0.0,
|
|
4018
5440
|
"ignore_patterns": 0,
|
|
4019
5441
|
"subjective_integrity": {
|
|
@@ -4034,94 +5456,94 @@
|
|
|
4034
5456
|
"strict": 100.0
|
|
4035
5457
|
},
|
|
4036
5458
|
"Code quality": {
|
|
4037
|
-
"score":
|
|
4038
|
-
"strict":
|
|
5459
|
+
"score": 95.7,
|
|
5460
|
+
"strict": 95.7
|
|
4039
5461
|
},
|
|
4040
5462
|
"Duplication": {
|
|
4041
5463
|
"score": 100.0,
|
|
4042
5464
|
"strict": 100.0
|
|
4043
5465
|
},
|
|
4044
5466
|
"Test health": {
|
|
4045
|
-
"score":
|
|
4046
|
-
"strict":
|
|
5467
|
+
"score": 65.8,
|
|
5468
|
+
"strict": 65.8
|
|
4047
5469
|
},
|
|
4048
5470
|
"Security": {
|
|
4049
5471
|
"score": 100.0,
|
|
4050
5472
|
"strict": 100.0
|
|
4051
5473
|
},
|
|
4052
5474
|
"Error consistency": {
|
|
4053
|
-
"score":
|
|
4054
|
-
"strict":
|
|
5475
|
+
"score": 84.0,
|
|
5476
|
+
"strict": 84.0
|
|
4055
5477
|
},
|
|
4056
5478
|
"Abstraction fit": {
|
|
4057
|
-
"score":
|
|
4058
|
-
"strict":
|
|
5479
|
+
"score": 93.0,
|
|
5480
|
+
"strict": 93.0
|
|
4059
5481
|
},
|
|
4060
5482
|
"AI generated debt": {
|
|
4061
|
-
"score":
|
|
4062
|
-
"strict":
|
|
5483
|
+
"score": 82.0,
|
|
5484
|
+
"strict": 82.0
|
|
4063
5485
|
},
|
|
4064
5486
|
"High elegance": {
|
|
4065
|
-
"score":
|
|
4066
|
-
"strict":
|
|
5487
|
+
"score": 93.0,
|
|
5488
|
+
"strict": 93.0
|
|
4067
5489
|
},
|
|
4068
5490
|
"Mid elegance": {
|
|
4069
|
-
"score":
|
|
4070
|
-
"strict":
|
|
5491
|
+
"score": 90.0,
|
|
5492
|
+
"strict": 90.0
|
|
4071
5493
|
},
|
|
4072
5494
|
"Low elegance": {
|
|
4073
|
-
"score":
|
|
4074
|
-
"strict":
|
|
5495
|
+
"score": 87.0,
|
|
5496
|
+
"strict": 87.0
|
|
4075
5497
|
},
|
|
4076
5498
|
"Cross-module arch": {
|
|
4077
|
-
"score":
|
|
4078
|
-
"strict":
|
|
5499
|
+
"score": 92.0,
|
|
5500
|
+
"strict": 92.0
|
|
4079
5501
|
},
|
|
4080
5502
|
"Convention drift": {
|
|
4081
|
-
"score":
|
|
4082
|
-
"strict":
|
|
5503
|
+
"score": 88.5,
|
|
5504
|
+
"strict": 88.5
|
|
4083
5505
|
},
|
|
4084
5506
|
"API coherence": {
|
|
4085
|
-
"score":
|
|
4086
|
-
"strict":
|
|
5507
|
+
"score": 86.0,
|
|
5508
|
+
"strict": 86.0
|
|
4087
5509
|
},
|
|
4088
5510
|
"Auth consistency": {
|
|
4089
|
-
"score":
|
|
4090
|
-
"strict":
|
|
5511
|
+
"score": 100.0,
|
|
5512
|
+
"strict": 100.0
|
|
4091
5513
|
},
|
|
4092
5514
|
"Stale migration": {
|
|
4093
|
-
"score":
|
|
4094
|
-
"strict":
|
|
5515
|
+
"score": 97.0,
|
|
5516
|
+
"strict": 97.0
|
|
4095
5517
|
},
|
|
4096
5518
|
"Structure nav": {
|
|
4097
|
-
"score":
|
|
4098
|
-
"strict":
|
|
5519
|
+
"score": 93.0,
|
|
5520
|
+
"strict": 93.0
|
|
4099
5521
|
},
|
|
4100
5522
|
"Design coherence": {
|
|
4101
|
-
"score":
|
|
4102
|
-
"strict":
|
|
5523
|
+
"score": 84.0,
|
|
5524
|
+
"strict": 84.0
|
|
4103
5525
|
}
|
|
4104
5526
|
}
|
|
4105
5527
|
},
|
|
4106
5528
|
{
|
|
4107
|
-
"timestamp": "2026-03-15T00:
|
|
5529
|
+
"timestamp": "2026-03-15T00:23:57+00:00",
|
|
4108
5530
|
"lang": "typescript",
|
|
4109
|
-
"strict_score":
|
|
4110
|
-
"verified_strict_score":
|
|
4111
|
-
"objective_score":
|
|
4112
|
-
"overall_score":
|
|
4113
|
-
"open":
|
|
4114
|
-
"diff_new":
|
|
4115
|
-
"diff_resolved":
|
|
5531
|
+
"strict_score": 88.6,
|
|
5532
|
+
"verified_strict_score": 86.5,
|
|
5533
|
+
"objective_score": 86.5,
|
|
5534
|
+
"overall_score": 88.6,
|
|
5535
|
+
"open": 31,
|
|
5536
|
+
"diff_new": 1,
|
|
5537
|
+
"diff_resolved": 21,
|
|
4116
5538
|
"ignored": 0,
|
|
4117
|
-
"raw_findings":
|
|
5539
|
+
"raw_findings": 30,
|
|
4118
5540
|
"suppressed_pct": 0.0,
|
|
4119
5541
|
"ignore_patterns": 0,
|
|
4120
5542
|
"subjective_integrity": {
|
|
4121
|
-
"status": "
|
|
5543
|
+
"status": "pass",
|
|
4122
5544
|
"matched_count": 0,
|
|
4123
5545
|
"reset_count": 0,
|
|
4124
|
-
"target_score":
|
|
5546
|
+
"target_score": 95.0
|
|
4125
5547
|
},
|
|
4126
5548
|
"score_confidence": {
|
|
4127
5549
|
"status": "full",
|
|
@@ -4135,16 +5557,16 @@
|
|
|
4135
5557
|
"strict": 100.0
|
|
4136
5558
|
},
|
|
4137
5559
|
"Code quality": {
|
|
4138
|
-
"score":
|
|
4139
|
-
"strict":
|
|
5560
|
+
"score": 96.4,
|
|
5561
|
+
"strict": 96.4
|
|
4140
5562
|
},
|
|
4141
5563
|
"Duplication": {
|
|
4142
5564
|
"score": 100.0,
|
|
4143
5565
|
"strict": 100.0
|
|
4144
5566
|
},
|
|
4145
5567
|
"Test health": {
|
|
4146
|
-
"score":
|
|
4147
|
-
"strict":
|
|
5568
|
+
"score": 65.8,
|
|
5569
|
+
"strict": 65.8
|
|
4148
5570
|
},
|
|
4149
5571
|
"Security": {
|
|
4150
5572
|
"score": 100.0,
|
|
@@ -4205,17 +5627,17 @@
|
|
|
4205
5627
|
}
|
|
4206
5628
|
},
|
|
4207
5629
|
{
|
|
4208
|
-
"timestamp": "2026-03-15T00:
|
|
5630
|
+
"timestamp": "2026-03-15T00:25:14+00:00",
|
|
4209
5631
|
"lang": "typescript",
|
|
4210
|
-
"strict_score": 88.
|
|
4211
|
-
"verified_strict_score":
|
|
4212
|
-
"objective_score":
|
|
4213
|
-
"overall_score":
|
|
4214
|
-
"open":
|
|
4215
|
-
"diff_new":
|
|
4216
|
-
"diff_resolved":
|
|
5632
|
+
"strict_score": 88.6,
|
|
5633
|
+
"verified_strict_score": 86.5,
|
|
5634
|
+
"objective_score": 100.0,
|
|
5635
|
+
"overall_score": 94.0,
|
|
5636
|
+
"open": 1,
|
|
5637
|
+
"diff_new": 0,
|
|
5638
|
+
"diff_resolved": 0,
|
|
4217
5639
|
"ignored": 0,
|
|
4218
|
-
"raw_findings":
|
|
5640
|
+
"raw_findings": 30,
|
|
4219
5641
|
"suppressed_pct": 0.0,
|
|
4220
5642
|
"ignore_patterns": 0,
|
|
4221
5643
|
"subjective_integrity": {
|
|
@@ -4236,16 +5658,16 @@
|
|
|
4236
5658
|
"strict": 100.0
|
|
4237
5659
|
},
|
|
4238
5660
|
"Code quality": {
|
|
4239
|
-
"score":
|
|
4240
|
-
"strict":
|
|
5661
|
+
"score": 100.0,
|
|
5662
|
+
"strict": 96.4
|
|
4241
5663
|
},
|
|
4242
5664
|
"Duplication": {
|
|
4243
5665
|
"score": 100.0,
|
|
4244
5666
|
"strict": 100.0
|
|
4245
5667
|
},
|
|
4246
5668
|
"Test health": {
|
|
4247
|
-
"score":
|
|
4248
|
-
"strict": 65.
|
|
5669
|
+
"score": 100.0,
|
|
5670
|
+
"strict": 65.8
|
|
4249
5671
|
},
|
|
4250
5672
|
"Security": {
|
|
4251
5673
|
"score": 100.0,
|
|
@@ -4306,24 +5728,24 @@
|
|
|
4306
5728
|
}
|
|
4307
5729
|
},
|
|
4308
5730
|
{
|
|
4309
|
-
"timestamp": "2026-03-
|
|
5731
|
+
"timestamp": "2026-03-15T05:00:28+00:00",
|
|
4310
5732
|
"lang": "typescript",
|
|
4311
|
-
"strict_score":
|
|
4312
|
-
"verified_strict_score":
|
|
4313
|
-
"objective_score":
|
|
4314
|
-
"overall_score":
|
|
4315
|
-
"open":
|
|
4316
|
-
"diff_new":
|
|
4317
|
-
"diff_resolved":
|
|
5733
|
+
"strict_score": 93.6,
|
|
5734
|
+
"verified_strict_score": 100.0,
|
|
5735
|
+
"objective_score": 100.0,
|
|
5736
|
+
"overall_score": 93.6,
|
|
5737
|
+
"open": 19,
|
|
5738
|
+
"diff_new": 19,
|
|
5739
|
+
"diff_resolved": 31,
|
|
4318
5740
|
"ignored": 0,
|
|
4319
|
-
"raw_findings":
|
|
5741
|
+
"raw_findings": 19,
|
|
4320
5742
|
"suppressed_pct": 0.0,
|
|
4321
5743
|
"ignore_patterns": 0,
|
|
4322
5744
|
"subjective_integrity": {
|
|
4323
|
-
"status": "
|
|
5745
|
+
"status": "disabled",
|
|
4324
5746
|
"matched_count": 0,
|
|
4325
5747
|
"reset_count": 0,
|
|
4326
|
-
"target_score":
|
|
5748
|
+
"target_score": null
|
|
4327
5749
|
},
|
|
4328
5750
|
"score_confidence": {
|
|
4329
5751
|
"status": "full",
|
|
@@ -4337,92 +5759,92 @@
|
|
|
4337
5759
|
"strict": 100.0
|
|
4338
5760
|
},
|
|
4339
5761
|
"Code quality": {
|
|
4340
|
-
"score":
|
|
4341
|
-
"strict":
|
|
5762
|
+
"score": 100.0,
|
|
5763
|
+
"strict": 100.0
|
|
4342
5764
|
},
|
|
4343
5765
|
"Duplication": {
|
|
4344
5766
|
"score": 100.0,
|
|
4345
5767
|
"strict": 100.0
|
|
4346
5768
|
},
|
|
4347
5769
|
"Test health": {
|
|
4348
|
-
"score":
|
|
4349
|
-
"strict":
|
|
5770
|
+
"score": 100.0,
|
|
5771
|
+
"strict": 100.0
|
|
4350
5772
|
},
|
|
4351
5773
|
"Security": {
|
|
4352
5774
|
"score": 100.0,
|
|
4353
5775
|
"strict": 100.0
|
|
4354
5776
|
},
|
|
4355
5777
|
"Error consistency": {
|
|
4356
|
-
"score":
|
|
4357
|
-
"strict":
|
|
5778
|
+
"score": 82.0,
|
|
5779
|
+
"strict": 82.0
|
|
4358
5780
|
},
|
|
4359
5781
|
"Abstraction fit": {
|
|
4360
|
-
"score":
|
|
4361
|
-
"strict":
|
|
5782
|
+
"score": 91.0,
|
|
5783
|
+
"strict": 91.0
|
|
4362
5784
|
},
|
|
4363
5785
|
"AI generated debt": {
|
|
4364
|
-
"score":
|
|
4365
|
-
"strict":
|
|
5786
|
+
"score": 88.0,
|
|
5787
|
+
"strict": 88.0
|
|
4366
5788
|
},
|
|
4367
5789
|
"High elegance": {
|
|
4368
|
-
"score":
|
|
4369
|
-
"strict":
|
|
5790
|
+
"score": 92.0,
|
|
5791
|
+
"strict": 92.0
|
|
4370
5792
|
},
|
|
4371
5793
|
"Mid elegance": {
|
|
4372
|
-
"score":
|
|
4373
|
-
"strict":
|
|
5794
|
+
"score": 88.0,
|
|
5795
|
+
"strict": 88.0
|
|
4374
5796
|
},
|
|
4375
5797
|
"Low elegance": {
|
|
4376
|
-
"score":
|
|
4377
|
-
"strict":
|
|
5798
|
+
"score": 86.0,
|
|
5799
|
+
"strict": 86.0
|
|
4378
5800
|
},
|
|
4379
5801
|
"Cross-module arch": {
|
|
4380
|
-
"score":
|
|
4381
|
-
"strict":
|
|
5802
|
+
"score": 93.0,
|
|
5803
|
+
"strict": 93.0
|
|
4382
5804
|
},
|
|
4383
5805
|
"Convention drift": {
|
|
4384
|
-
"score":
|
|
4385
|
-
"strict":
|
|
5806
|
+
"score": 90.0,
|
|
5807
|
+
"strict": 90.0
|
|
4386
5808
|
},
|
|
4387
5809
|
"API coherence": {
|
|
4388
|
-
"score":
|
|
4389
|
-
"strict":
|
|
5810
|
+
"score": 85.0,
|
|
5811
|
+
"strict": 85.0
|
|
4390
5812
|
},
|
|
4391
5813
|
"Auth consistency": {
|
|
4392
5814
|
"score": 100.0,
|
|
4393
5815
|
"strict": 100.0
|
|
4394
5816
|
},
|
|
4395
5817
|
"Stale migration": {
|
|
4396
|
-
"score":
|
|
4397
|
-
"strict":
|
|
5818
|
+
"score": 95.0,
|
|
5819
|
+
"strict": 95.0
|
|
4398
5820
|
},
|
|
4399
5821
|
"Structure nav": {
|
|
4400
|
-
"score":
|
|
4401
|
-
"strict":
|
|
5822
|
+
"score": 94.0,
|
|
5823
|
+
"strict": 94.0
|
|
4402
5824
|
},
|
|
4403
5825
|
"Design coherence": {
|
|
4404
|
-
"score":
|
|
4405
|
-
"strict":
|
|
5826
|
+
"score": 87.0,
|
|
5827
|
+
"strict": 87.0
|
|
4406
5828
|
}
|
|
4407
5829
|
}
|
|
4408
5830
|
},
|
|
4409
5831
|
{
|
|
4410
|
-
"timestamp": "2026-03-
|
|
5832
|
+
"timestamp": "2026-03-15T05:00:35+00:00",
|
|
4411
5833
|
"lang": "typescript",
|
|
4412
|
-
"strict_score":
|
|
4413
|
-
"verified_strict_score":
|
|
4414
|
-
"objective_score":
|
|
4415
|
-
"overall_score":
|
|
4416
|
-
"open":
|
|
4417
|
-
"diff_new":
|
|
4418
|
-
"diff_resolved":
|
|
5834
|
+
"strict_score": 87.8,
|
|
5835
|
+
"verified_strict_score": 85.5,
|
|
5836
|
+
"objective_score": 85.5,
|
|
5837
|
+
"overall_score": 87.8,
|
|
5838
|
+
"open": 50,
|
|
5839
|
+
"diff_new": 2,
|
|
5840
|
+
"diff_resolved": 0,
|
|
4419
5841
|
"ignored": 0,
|
|
4420
|
-
"raw_findings":
|
|
5842
|
+
"raw_findings": 31,
|
|
4421
5843
|
"suppressed_pct": 0.0,
|
|
4422
5844
|
"ignore_patterns": 0,
|
|
4423
5845
|
"subjective_integrity": {
|
|
4424
|
-
"status": "
|
|
4425
|
-
"matched_count":
|
|
5846
|
+
"status": "warn",
|
|
5847
|
+
"matched_count": 1,
|
|
4426
5848
|
"reset_count": 0,
|
|
4427
5849
|
"target_score": 95.0
|
|
4428
5850
|
},
|
|
@@ -4442,88 +5864,88 @@
|
|
|
4442
5864
|
"strict": 96.4
|
|
4443
5865
|
},
|
|
4444
5866
|
"Duplication": {
|
|
4445
|
-
"score":
|
|
4446
|
-
"strict":
|
|
5867
|
+
"score": 99.0,
|
|
5868
|
+
"strict": 99.0
|
|
4447
5869
|
},
|
|
4448
5870
|
"Test health": {
|
|
4449
|
-
"score":
|
|
4450
|
-
"strict":
|
|
5871
|
+
"score": 63.1,
|
|
5872
|
+
"strict": 63.1
|
|
4451
5873
|
},
|
|
4452
5874
|
"Security": {
|
|
4453
5875
|
"score": 100.0,
|
|
4454
5876
|
"strict": 100.0
|
|
4455
5877
|
},
|
|
4456
5878
|
"Error consistency": {
|
|
4457
|
-
"score":
|
|
4458
|
-
"strict":
|
|
5879
|
+
"score": 82.0,
|
|
5880
|
+
"strict": 82.0
|
|
4459
5881
|
},
|
|
4460
5882
|
"Abstraction fit": {
|
|
4461
|
-
"score":
|
|
4462
|
-
"strict":
|
|
5883
|
+
"score": 91.0,
|
|
5884
|
+
"strict": 91.0
|
|
4463
5885
|
},
|
|
4464
5886
|
"AI generated debt": {
|
|
4465
|
-
"score":
|
|
4466
|
-
"strict":
|
|
5887
|
+
"score": 88.0,
|
|
5888
|
+
"strict": 88.0
|
|
4467
5889
|
},
|
|
4468
5890
|
"High elegance": {
|
|
4469
|
-
"score":
|
|
4470
|
-
"strict":
|
|
5891
|
+
"score": 92.0,
|
|
5892
|
+
"strict": 92.0
|
|
4471
5893
|
},
|
|
4472
5894
|
"Mid elegance": {
|
|
4473
|
-
"score":
|
|
4474
|
-
"strict":
|
|
5895
|
+
"score": 88.0,
|
|
5896
|
+
"strict": 88.0
|
|
4475
5897
|
},
|
|
4476
5898
|
"Low elegance": {
|
|
4477
|
-
"score":
|
|
4478
|
-
"strict":
|
|
5899
|
+
"score": 86.0,
|
|
5900
|
+
"strict": 86.0
|
|
4479
5901
|
},
|
|
4480
5902
|
"Cross-module arch": {
|
|
4481
|
-
"score":
|
|
4482
|
-
"strict":
|
|
5903
|
+
"score": 93.0,
|
|
5904
|
+
"strict": 93.0
|
|
4483
5905
|
},
|
|
4484
5906
|
"Convention drift": {
|
|
4485
|
-
"score":
|
|
4486
|
-
"strict":
|
|
5907
|
+
"score": 90.0,
|
|
5908
|
+
"strict": 90.0
|
|
4487
5909
|
},
|
|
4488
5910
|
"API coherence": {
|
|
4489
|
-
"score":
|
|
4490
|
-
"strict":
|
|
5911
|
+
"score": 85.0,
|
|
5912
|
+
"strict": 85.0
|
|
4491
5913
|
},
|
|
4492
5914
|
"Auth consistency": {
|
|
4493
5915
|
"score": 100.0,
|
|
4494
5916
|
"strict": 100.0
|
|
4495
5917
|
},
|
|
4496
5918
|
"Stale migration": {
|
|
4497
|
-
"score":
|
|
4498
|
-
"strict":
|
|
5919
|
+
"score": 95.0,
|
|
5920
|
+
"strict": 95.0
|
|
4499
5921
|
},
|
|
4500
5922
|
"Structure nav": {
|
|
4501
|
-
"score":
|
|
4502
|
-
"strict":
|
|
5923
|
+
"score": 94.0,
|
|
5924
|
+
"strict": 94.0
|
|
4503
5925
|
},
|
|
4504
5926
|
"Design coherence": {
|
|
4505
|
-
"score":
|
|
4506
|
-
"strict":
|
|
5927
|
+
"score": 87.0,
|
|
5928
|
+
"strict": 87.0
|
|
4507
5929
|
}
|
|
4508
5930
|
}
|
|
4509
5931
|
},
|
|
4510
5932
|
{
|
|
4511
|
-
"timestamp": "2026-03-
|
|
5933
|
+
"timestamp": "2026-03-15T05:08:48+00:00",
|
|
4512
5934
|
"lang": "typescript",
|
|
4513
|
-
"strict_score":
|
|
4514
|
-
"verified_strict_score":
|
|
4515
|
-
"objective_score":
|
|
4516
|
-
"overall_score":
|
|
4517
|
-
"open":
|
|
5935
|
+
"strict_score": 87.7,
|
|
5936
|
+
"verified_strict_score": 85.4,
|
|
5937
|
+
"objective_score": 85.4,
|
|
5938
|
+
"overall_score": 87.7,
|
|
5939
|
+
"open": 31,
|
|
4518
5940
|
"diff_new": 0,
|
|
4519
|
-
"diff_resolved":
|
|
5941
|
+
"diff_resolved": 19,
|
|
4520
5942
|
"ignored": 0,
|
|
4521
5943
|
"raw_findings": 30,
|
|
4522
5944
|
"suppressed_pct": 0.0,
|
|
4523
5945
|
"ignore_patterns": 0,
|
|
4524
5946
|
"subjective_integrity": {
|
|
4525
|
-
"status": "
|
|
4526
|
-
"matched_count":
|
|
5947
|
+
"status": "warn",
|
|
5948
|
+
"matched_count": 1,
|
|
4527
5949
|
"reset_count": 0,
|
|
4528
5950
|
"target_score": 95.0
|
|
4529
5951
|
},
|
|
@@ -4539,72 +5961,72 @@
|
|
|
4539
5961
|
"strict": 100.0
|
|
4540
5962
|
},
|
|
4541
5963
|
"Code quality": {
|
|
4542
|
-
"score":
|
|
5964
|
+
"score": 96.4,
|
|
4543
5965
|
"strict": 96.4
|
|
4544
5966
|
},
|
|
4545
5967
|
"Duplication": {
|
|
4546
|
-
"score":
|
|
4547
|
-
"strict":
|
|
5968
|
+
"score": 99.0,
|
|
5969
|
+
"strict": 99.0
|
|
4548
5970
|
},
|
|
4549
5971
|
"Test health": {
|
|
4550
|
-
"score":
|
|
4551
|
-
"strict":
|
|
5972
|
+
"score": 63.1,
|
|
5973
|
+
"strict": 63.1
|
|
4552
5974
|
},
|
|
4553
5975
|
"Security": {
|
|
4554
5976
|
"score": 100.0,
|
|
4555
5977
|
"strict": 100.0
|
|
4556
5978
|
},
|
|
4557
5979
|
"Error consistency": {
|
|
4558
|
-
"score":
|
|
4559
|
-
"strict":
|
|
5980
|
+
"score": 82.0,
|
|
5981
|
+
"strict": 82.0
|
|
4560
5982
|
},
|
|
4561
5983
|
"Abstraction fit": {
|
|
4562
|
-
"score":
|
|
4563
|
-
"strict":
|
|
5984
|
+
"score": 91.0,
|
|
5985
|
+
"strict": 91.0
|
|
4564
5986
|
},
|
|
4565
5987
|
"AI generated debt": {
|
|
4566
|
-
"score":
|
|
4567
|
-
"strict":
|
|
5988
|
+
"score": 88.0,
|
|
5989
|
+
"strict": 88.0
|
|
4568
5990
|
},
|
|
4569
5991
|
"High elegance": {
|
|
4570
|
-
"score":
|
|
4571
|
-
"strict":
|
|
5992
|
+
"score": 92.0,
|
|
5993
|
+
"strict": 92.0
|
|
4572
5994
|
},
|
|
4573
5995
|
"Mid elegance": {
|
|
4574
|
-
"score":
|
|
4575
|
-
"strict":
|
|
5996
|
+
"score": 88.0,
|
|
5997
|
+
"strict": 88.0
|
|
4576
5998
|
},
|
|
4577
5999
|
"Low elegance": {
|
|
4578
|
-
"score":
|
|
4579
|
-
"strict":
|
|
6000
|
+
"score": 86.0,
|
|
6001
|
+
"strict": 86.0
|
|
4580
6002
|
},
|
|
4581
6003
|
"Cross-module arch": {
|
|
4582
|
-
"score":
|
|
4583
|
-
"strict":
|
|
6004
|
+
"score": 93.0,
|
|
6005
|
+
"strict": 93.0
|
|
4584
6006
|
},
|
|
4585
6007
|
"Convention drift": {
|
|
4586
|
-
"score":
|
|
4587
|
-
"strict":
|
|
6008
|
+
"score": 90.0,
|
|
6009
|
+
"strict": 90.0
|
|
4588
6010
|
},
|
|
4589
6011
|
"API coherence": {
|
|
4590
|
-
"score":
|
|
4591
|
-
"strict":
|
|
6012
|
+
"score": 85.0,
|
|
6013
|
+
"strict": 85.0
|
|
4592
6014
|
},
|
|
4593
6015
|
"Auth consistency": {
|
|
4594
6016
|
"score": 100.0,
|
|
4595
6017
|
"strict": 100.0
|
|
4596
6018
|
},
|
|
4597
6019
|
"Stale migration": {
|
|
4598
|
-
"score":
|
|
4599
|
-
"strict":
|
|
6020
|
+
"score": 95.0,
|
|
6021
|
+
"strict": 95.0
|
|
4600
6022
|
},
|
|
4601
6023
|
"Structure nav": {
|
|
4602
|
-
"score":
|
|
4603
|
-
"strict":
|
|
6024
|
+
"score": 94.0,
|
|
6025
|
+
"strict": 94.0
|
|
4604
6026
|
},
|
|
4605
6027
|
"Design coherence": {
|
|
4606
|
-
"score":
|
|
4607
|
-
"strict":
|
|
6028
|
+
"score": 87.0,
|
|
6029
|
+
"strict": 87.0
|
|
4608
6030
|
}
|
|
4609
6031
|
}
|
|
4610
6032
|
}
|
|
@@ -4630,21 +6052,20 @@
|
|
|
4630
6052
|
"patterns": 1,
|
|
4631
6053
|
"naming": 10,
|
|
4632
6054
|
"facade": 29,
|
|
4633
|
-
"
|
|
4634
|
-
"test_coverage": 208,
|
|
6055
|
+
"test_coverage": 240,
|
|
4635
6056
|
"smells": 30,
|
|
4636
6057
|
"react": 0,
|
|
4637
6058
|
"security": 29,
|
|
4638
6059
|
"subjective_review": 23,
|
|
4639
|
-
"boilerplate_duplication":
|
|
4640
|
-
"dupes":
|
|
4641
|
-
"stale_wontfix":
|
|
6060
|
+
"boilerplate_duplication": 2,
|
|
6061
|
+
"dupes": 67,
|
|
6062
|
+
"stale_wontfix": 0
|
|
4642
6063
|
}
|
|
4643
6064
|
},
|
|
4644
6065
|
"codebase_metrics": {
|
|
4645
6066
|
"typescript": {
|
|
4646
6067
|
"total_files": 41,
|
|
4647
|
-
"total_loc":
|
|
6068
|
+
"total_loc": 6024,
|
|
4648
6069
|
"total_directories": 10
|
|
4649
6070
|
}
|
|
4650
6071
|
},
|
|
@@ -4733,31 +6154,37 @@
|
|
|
4733
6154
|
},
|
|
4734
6155
|
"Duplication": {
|
|
4735
6156
|
"score": 100.0,
|
|
4736
|
-
"strict_score":
|
|
4737
|
-
"verified_strict_score":
|
|
4738
|
-
"checks":
|
|
6157
|
+
"strict_score": 99.0,
|
|
6158
|
+
"verified_strict_score": 99.0,
|
|
6159
|
+
"checks": 69,
|
|
4739
6160
|
"issues": 0,
|
|
4740
6161
|
"tier": 3,
|
|
4741
6162
|
"detectors": {
|
|
4742
6163
|
"dupes": {
|
|
4743
|
-
"potential":
|
|
6164
|
+
"potential": 67,
|
|
6165
|
+
"pass_rate": 1.0,
|
|
6166
|
+
"issues": 0,
|
|
6167
|
+
"weighted_failures": 0.0
|
|
6168
|
+
},
|
|
6169
|
+
"boilerplate_duplication": {
|
|
6170
|
+
"potential": 2,
|
|
4744
6171
|
"pass_rate": 1.0,
|
|
4745
6172
|
"issues": 0,
|
|
4746
6173
|
"weighted_failures": 0.0
|
|
4747
6174
|
}
|
|
4748
6175
|
},
|
|
4749
|
-
"strict":
|
|
6176
|
+
"strict": 99.0
|
|
4750
6177
|
},
|
|
4751
6178
|
"Test health": {
|
|
4752
6179
|
"score": 100.0,
|
|
4753
|
-
"strict_score":
|
|
4754
|
-
"verified_strict_score":
|
|
4755
|
-
"checks":
|
|
6180
|
+
"strict_score": 63.1,
|
|
6181
|
+
"verified_strict_score": 63.1,
|
|
6182
|
+
"checks": 263,
|
|
4756
6183
|
"issues": 0,
|
|
4757
6184
|
"tier": 4,
|
|
4758
6185
|
"detectors": {
|
|
4759
6186
|
"test_coverage": {
|
|
4760
|
-
"potential":
|
|
6187
|
+
"potential": 240,
|
|
4761
6188
|
"pass_rate": 1.0,
|
|
4762
6189
|
"issues": 0,
|
|
4763
6190
|
"weighted_failures": 0.0
|
|
@@ -4769,7 +6196,7 @@
|
|
|
4769
6196
|
"weighted_failures": 0.0
|
|
4770
6197
|
}
|
|
4771
6198
|
},
|
|
4772
|
-
"strict":
|
|
6199
|
+
"strict": 63.1
|
|
4773
6200
|
},
|
|
4774
6201
|
"Security": {
|
|
4775
6202
|
"score": 100.0,
|
|
@@ -4795,202 +6222,202 @@
|
|
|
4795
6222
|
"strict": 100.0
|
|
4796
6223
|
},
|
|
4797
6224
|
"Error consistency": {
|
|
4798
|
-
"score":
|
|
4799
|
-
"strict_score":
|
|
4800
|
-
"verified_strict_score":
|
|
6225
|
+
"score": 82.0,
|
|
6226
|
+
"strict_score": 82.0,
|
|
6227
|
+
"verified_strict_score": 82.0,
|
|
4801
6228
|
"checks": 10,
|
|
4802
6229
|
"issues": 0,
|
|
4803
6230
|
"tier": 4,
|
|
4804
6231
|
"detectors": {
|
|
4805
6232
|
"subjective_assessment": {
|
|
4806
6233
|
"potential": 10,
|
|
4807
|
-
"pass_rate": 0.
|
|
6234
|
+
"pass_rate": 0.82,
|
|
4808
6235
|
"issues": 0,
|
|
4809
|
-
"weighted_failures": 1.
|
|
4810
|
-
"assessment_score":
|
|
6236
|
+
"weighted_failures": 1.8,
|
|
6237
|
+
"assessment_score": 82.0,
|
|
4811
6238
|
"placeholder": false,
|
|
4812
6239
|
"dimension_key": "error_consistency",
|
|
4813
6240
|
"configured_weight": 3.0,
|
|
4814
6241
|
"components": []
|
|
4815
6242
|
}
|
|
4816
6243
|
},
|
|
4817
|
-
"strict":
|
|
6244
|
+
"strict": 82.0
|
|
4818
6245
|
},
|
|
4819
6246
|
"Abstraction fit": {
|
|
4820
|
-
"score":
|
|
4821
|
-
"strict_score":
|
|
4822
|
-
"verified_strict_score":
|
|
6247
|
+
"score": 91.0,
|
|
6248
|
+
"strict_score": 91.0,
|
|
6249
|
+
"verified_strict_score": 91.0,
|
|
4823
6250
|
"checks": 10,
|
|
4824
6251
|
"issues": 0,
|
|
4825
6252
|
"tier": 4,
|
|
4826
6253
|
"detectors": {
|
|
4827
6254
|
"subjective_assessment": {
|
|
4828
6255
|
"potential": 10,
|
|
4829
|
-
"pass_rate": 0.
|
|
6256
|
+
"pass_rate": 0.91,
|
|
4830
6257
|
"issues": 0,
|
|
4831
|
-
"weighted_failures": 0.
|
|
4832
|
-
"assessment_score":
|
|
6258
|
+
"weighted_failures": 0.9,
|
|
6259
|
+
"assessment_score": 91.0,
|
|
4833
6260
|
"placeholder": false,
|
|
4834
6261
|
"dimension_key": "abstraction_fitness",
|
|
4835
6262
|
"configured_weight": 8.0,
|
|
4836
6263
|
"components": []
|
|
4837
6264
|
}
|
|
4838
6265
|
},
|
|
4839
|
-
"strict":
|
|
6266
|
+
"strict": 91.0
|
|
4840
6267
|
},
|
|
4841
6268
|
"AI generated debt": {
|
|
4842
|
-
"score":
|
|
4843
|
-
"strict_score":
|
|
4844
|
-
"verified_strict_score":
|
|
6269
|
+
"score": 88.0,
|
|
6270
|
+
"strict_score": 88.0,
|
|
6271
|
+
"verified_strict_score": 88.0,
|
|
4845
6272
|
"checks": 10,
|
|
4846
6273
|
"issues": 0,
|
|
4847
6274
|
"tier": 4,
|
|
4848
6275
|
"detectors": {
|
|
4849
6276
|
"subjective_assessment": {
|
|
4850
6277
|
"potential": 10,
|
|
4851
|
-
"pass_rate": 0.
|
|
6278
|
+
"pass_rate": 0.88,
|
|
4852
6279
|
"issues": 0,
|
|
4853
|
-
"weighted_failures": 1.
|
|
4854
|
-
"assessment_score":
|
|
6280
|
+
"weighted_failures": 1.2,
|
|
6281
|
+
"assessment_score": 88.0,
|
|
4855
6282
|
"placeholder": false,
|
|
4856
6283
|
"dimension_key": "ai_generated_debt",
|
|
4857
6284
|
"configured_weight": 1.0,
|
|
4858
6285
|
"components": []
|
|
4859
6286
|
}
|
|
4860
6287
|
},
|
|
4861
|
-
"strict":
|
|
6288
|
+
"strict": 88.0
|
|
4862
6289
|
},
|
|
4863
6290
|
"High elegance": {
|
|
4864
|
-
"score":
|
|
4865
|
-
"strict_score":
|
|
4866
|
-
"verified_strict_score":
|
|
6291
|
+
"score": 92.0,
|
|
6292
|
+
"strict_score": 92.0,
|
|
6293
|
+
"verified_strict_score": 92.0,
|
|
4867
6294
|
"checks": 10,
|
|
4868
6295
|
"issues": 0,
|
|
4869
6296
|
"tier": 4,
|
|
4870
6297
|
"detectors": {
|
|
4871
6298
|
"subjective_assessment": {
|
|
4872
6299
|
"potential": 10,
|
|
4873
|
-
"pass_rate": 0.
|
|
6300
|
+
"pass_rate": 0.92,
|
|
4874
6301
|
"issues": 0,
|
|
4875
|
-
"weighted_failures": 0.
|
|
4876
|
-
"assessment_score":
|
|
6302
|
+
"weighted_failures": 0.8,
|
|
6303
|
+
"assessment_score": 92.0,
|
|
4877
6304
|
"placeholder": false,
|
|
4878
6305
|
"dimension_key": "high_level_elegance",
|
|
4879
6306
|
"configured_weight": 22.0,
|
|
4880
6307
|
"components": []
|
|
4881
6308
|
}
|
|
4882
6309
|
},
|
|
4883
|
-
"strict":
|
|
6310
|
+
"strict": 92.0
|
|
4884
6311
|
},
|
|
4885
6312
|
"Mid elegance": {
|
|
4886
|
-
"score":
|
|
4887
|
-
"strict_score":
|
|
4888
|
-
"verified_strict_score":
|
|
6313
|
+
"score": 88.0,
|
|
6314
|
+
"strict_score": 88.0,
|
|
6315
|
+
"verified_strict_score": 88.0,
|
|
4889
6316
|
"checks": 10,
|
|
4890
6317
|
"issues": 0,
|
|
4891
6318
|
"tier": 4,
|
|
4892
6319
|
"detectors": {
|
|
4893
6320
|
"subjective_assessment": {
|
|
4894
6321
|
"potential": 10,
|
|
4895
|
-
"pass_rate": 0.
|
|
6322
|
+
"pass_rate": 0.88,
|
|
4896
6323
|
"issues": 0,
|
|
4897
|
-
"weighted_failures": 1.
|
|
4898
|
-
"assessment_score":
|
|
6324
|
+
"weighted_failures": 1.2,
|
|
6325
|
+
"assessment_score": 88.0,
|
|
4899
6326
|
"placeholder": false,
|
|
4900
6327
|
"dimension_key": "mid_level_elegance",
|
|
4901
6328
|
"configured_weight": 22.0,
|
|
4902
6329
|
"components": []
|
|
4903
6330
|
}
|
|
4904
6331
|
},
|
|
4905
|
-
"strict":
|
|
6332
|
+
"strict": 88.0
|
|
4906
6333
|
},
|
|
4907
6334
|
"Low elegance": {
|
|
4908
|
-
"score":
|
|
4909
|
-
"strict_score":
|
|
4910
|
-
"verified_strict_score":
|
|
6335
|
+
"score": 86.0,
|
|
6336
|
+
"strict_score": 86.0,
|
|
6337
|
+
"verified_strict_score": 86.0,
|
|
4911
6338
|
"checks": 10,
|
|
4912
6339
|
"issues": 0,
|
|
4913
6340
|
"tier": 4,
|
|
4914
6341
|
"detectors": {
|
|
4915
6342
|
"subjective_assessment": {
|
|
4916
6343
|
"potential": 10,
|
|
4917
|
-
"pass_rate": 0.
|
|
6344
|
+
"pass_rate": 0.86,
|
|
4918
6345
|
"issues": 0,
|
|
4919
|
-
"weighted_failures": 1.
|
|
4920
|
-
"assessment_score":
|
|
6346
|
+
"weighted_failures": 1.4,
|
|
6347
|
+
"assessment_score": 86.0,
|
|
4921
6348
|
"placeholder": false,
|
|
4922
6349
|
"dimension_key": "low_level_elegance",
|
|
4923
6350
|
"configured_weight": 12.0,
|
|
4924
6351
|
"components": []
|
|
4925
6352
|
}
|
|
4926
6353
|
},
|
|
4927
|
-
"strict":
|
|
6354
|
+
"strict": 86.0
|
|
4928
6355
|
},
|
|
4929
6356
|
"Cross-module arch": {
|
|
4930
|
-
"score":
|
|
4931
|
-
"strict_score":
|
|
4932
|
-
"verified_strict_score":
|
|
6357
|
+
"score": 93.0,
|
|
6358
|
+
"strict_score": 93.0,
|
|
6359
|
+
"verified_strict_score": 93.0,
|
|
4933
6360
|
"checks": 10,
|
|
4934
6361
|
"issues": 0,
|
|
4935
6362
|
"tier": 4,
|
|
4936
6363
|
"detectors": {
|
|
4937
6364
|
"subjective_assessment": {
|
|
4938
6365
|
"potential": 10,
|
|
4939
|
-
"pass_rate": 0.
|
|
6366
|
+
"pass_rate": 0.93,
|
|
4940
6367
|
"issues": 0,
|
|
4941
|
-
"weighted_failures": 0.
|
|
4942
|
-
"assessment_score":
|
|
6368
|
+
"weighted_failures": 0.7,
|
|
6369
|
+
"assessment_score": 93.0,
|
|
4943
6370
|
"placeholder": false,
|
|
4944
6371
|
"dimension_key": "cross_module_architecture",
|
|
4945
6372
|
"configured_weight": 1.0,
|
|
4946
6373
|
"components": []
|
|
4947
6374
|
}
|
|
4948
6375
|
},
|
|
4949
|
-
"strict":
|
|
6376
|
+
"strict": 93.0
|
|
4950
6377
|
},
|
|
4951
6378
|
"Convention drift": {
|
|
4952
|
-
"score":
|
|
4953
|
-
"strict_score":
|
|
4954
|
-
"verified_strict_score":
|
|
6379
|
+
"score": 90.0,
|
|
6380
|
+
"strict_score": 90.0,
|
|
6381
|
+
"verified_strict_score": 90.0,
|
|
4955
6382
|
"checks": 10,
|
|
4956
6383
|
"issues": 0,
|
|
4957
6384
|
"tier": 4,
|
|
4958
6385
|
"detectors": {
|
|
4959
6386
|
"subjective_assessment": {
|
|
4960
6387
|
"potential": 10,
|
|
4961
|
-
"pass_rate": 0.
|
|
6388
|
+
"pass_rate": 0.9,
|
|
4962
6389
|
"issues": 0,
|
|
4963
|
-
"weighted_failures": 1.
|
|
4964
|
-
"assessment_score":
|
|
6390
|
+
"weighted_failures": 1.0,
|
|
6391
|
+
"assessment_score": 90.0,
|
|
4965
6392
|
"placeholder": false,
|
|
4966
6393
|
"dimension_key": "convention_outlier",
|
|
4967
6394
|
"configured_weight": 1.0,
|
|
4968
6395
|
"components": []
|
|
4969
6396
|
}
|
|
4970
6397
|
},
|
|
4971
|
-
"strict":
|
|
6398
|
+
"strict": 90.0
|
|
4972
6399
|
},
|
|
4973
6400
|
"API coherence": {
|
|
4974
|
-
"score":
|
|
4975
|
-
"strict_score":
|
|
4976
|
-
"verified_strict_score":
|
|
6401
|
+
"score": 85.0,
|
|
6402
|
+
"strict_score": 85.0,
|
|
6403
|
+
"verified_strict_score": 85.0,
|
|
4977
6404
|
"checks": 10,
|
|
4978
6405
|
"issues": 0,
|
|
4979
6406
|
"tier": 4,
|
|
4980
6407
|
"detectors": {
|
|
4981
6408
|
"subjective_assessment": {
|
|
4982
6409
|
"potential": 10,
|
|
4983
|
-
"pass_rate": 0.
|
|
6410
|
+
"pass_rate": 0.85,
|
|
4984
6411
|
"issues": 0,
|
|
4985
|
-
"weighted_failures": 1.
|
|
4986
|
-
"assessment_score":
|
|
6412
|
+
"weighted_failures": 1.5,
|
|
6413
|
+
"assessment_score": 85.0,
|
|
4987
6414
|
"placeholder": false,
|
|
4988
6415
|
"dimension_key": "api_surface_coherence",
|
|
4989
6416
|
"configured_weight": 1.0,
|
|
4990
6417
|
"components": []
|
|
4991
6418
|
}
|
|
4992
6419
|
},
|
|
4993
|
-
"strict":
|
|
6420
|
+
"strict": 85.0
|
|
4994
6421
|
},
|
|
4995
6422
|
"Auth consistency": {
|
|
4996
6423
|
"score": 100.0,
|
|
@@ -5015,86 +6442,86 @@
|
|
|
5015
6442
|
"strict": 100.0
|
|
5016
6443
|
},
|
|
5017
6444
|
"Stale migration": {
|
|
5018
|
-
"score":
|
|
5019
|
-
"strict_score":
|
|
5020
|
-
"verified_strict_score":
|
|
6445
|
+
"score": 95.0,
|
|
6446
|
+
"strict_score": 95.0,
|
|
6447
|
+
"verified_strict_score": 95.0,
|
|
5021
6448
|
"checks": 10,
|
|
5022
6449
|
"issues": 0,
|
|
5023
6450
|
"tier": 4,
|
|
5024
6451
|
"detectors": {
|
|
5025
6452
|
"subjective_assessment": {
|
|
5026
6453
|
"potential": 10,
|
|
5027
|
-
"pass_rate": 0.
|
|
6454
|
+
"pass_rate": 0.95,
|
|
5028
6455
|
"issues": 0,
|
|
5029
|
-
"weighted_failures": 0.
|
|
5030
|
-
"assessment_score":
|
|
6456
|
+
"weighted_failures": 0.5,
|
|
6457
|
+
"assessment_score": 95.0,
|
|
5031
6458
|
"placeholder": false,
|
|
5032
6459
|
"dimension_key": "incomplete_migration",
|
|
5033
6460
|
"configured_weight": 1.0,
|
|
5034
6461
|
"components": []
|
|
5035
6462
|
}
|
|
5036
6463
|
},
|
|
5037
|
-
"strict":
|
|
6464
|
+
"strict": 95.0
|
|
5038
6465
|
},
|
|
5039
6466
|
"Structure nav": {
|
|
5040
|
-
"score":
|
|
5041
|
-
"strict_score":
|
|
5042
|
-
"verified_strict_score":
|
|
6467
|
+
"score": 94.0,
|
|
6468
|
+
"strict_score": 94.0,
|
|
6469
|
+
"verified_strict_score": 94.0,
|
|
5043
6470
|
"checks": 10,
|
|
5044
6471
|
"issues": 0,
|
|
5045
6472
|
"tier": 4,
|
|
5046
6473
|
"detectors": {
|
|
5047
6474
|
"subjective_assessment": {
|
|
5048
6475
|
"potential": 10,
|
|
5049
|
-
"pass_rate": 0.
|
|
6476
|
+
"pass_rate": 0.94,
|
|
5050
6477
|
"issues": 0,
|
|
5051
|
-
"weighted_failures": 0.
|
|
5052
|
-
"assessment_score":
|
|
6478
|
+
"weighted_failures": 0.6,
|
|
6479
|
+
"assessment_score": 94.0,
|
|
5053
6480
|
"placeholder": false,
|
|
5054
6481
|
"dimension_key": "package_organization",
|
|
5055
6482
|
"configured_weight": 5.0,
|
|
5056
6483
|
"components": []
|
|
5057
6484
|
}
|
|
5058
6485
|
},
|
|
5059
|
-
"strict":
|
|
6486
|
+
"strict": 94.0
|
|
5060
6487
|
},
|
|
5061
6488
|
"Design coherence": {
|
|
5062
|
-
"score":
|
|
5063
|
-
"strict_score":
|
|
5064
|
-
"verified_strict_score":
|
|
6489
|
+
"score": 87.0,
|
|
6490
|
+
"strict_score": 87.0,
|
|
6491
|
+
"verified_strict_score": 87.0,
|
|
5065
6492
|
"checks": 10,
|
|
5066
6493
|
"issues": 0,
|
|
5067
6494
|
"tier": 4,
|
|
5068
6495
|
"detectors": {
|
|
5069
6496
|
"subjective_assessment": {
|
|
5070
6497
|
"potential": 10,
|
|
5071
|
-
"pass_rate": 0.
|
|
6498
|
+
"pass_rate": 0.87,
|
|
5072
6499
|
"issues": 0,
|
|
5073
|
-
"weighted_failures": 1.
|
|
5074
|
-
"assessment_score":
|
|
6500
|
+
"weighted_failures": 1.3,
|
|
6501
|
+
"assessment_score": 87.0,
|
|
5075
6502
|
"placeholder": false,
|
|
5076
6503
|
"dimension_key": "design_coherence",
|
|
5077
6504
|
"configured_weight": 10.0,
|
|
5078
6505
|
"components": []
|
|
5079
6506
|
}
|
|
5080
6507
|
},
|
|
5081
|
-
"strict":
|
|
6508
|
+
"strict": 87.0
|
|
5082
6509
|
}
|
|
5083
6510
|
},
|
|
5084
6511
|
"reminder_history": {
|
|
5085
6512
|
"zone_classification": 3,
|
|
5086
|
-
"report_scores":
|
|
6513
|
+
"report_scores": 8,
|
|
5087
6514
|
"feedback_nudge": 3,
|
|
5088
|
-
"review_findings_pending":
|
|
6515
|
+
"review_findings_pending": 3,
|
|
5089
6516
|
"stagnant_nudge": 4,
|
|
5090
6517
|
"review_not_run": 3,
|
|
5091
6518
|
"wontfix_growing": 1
|
|
5092
6519
|
},
|
|
5093
6520
|
"review_cache": {
|
|
5094
6521
|
"holistic": {
|
|
5095
|
-
"reviewed_at": "2026-03-
|
|
5096
|
-
"file_count_at_review":
|
|
5097
|
-
"finding_count":
|
|
6522
|
+
"reviewed_at": "2026-03-15T05:00:28+00:00",
|
|
6523
|
+
"file_count_at_review": 41,
|
|
6524
|
+
"finding_count": 19
|
|
5098
6525
|
}
|
|
5099
6526
|
},
|
|
5100
6527
|
"assessment_import_audit": [
|
|
@@ -5109,6 +6536,18 @@
|
|
|
5109
6536
|
"provisional_count": 0,
|
|
5110
6537
|
"attest": "I validated this review was completed without awareness of overall score and is unbiased.",
|
|
5111
6538
|
"import_file": "/Users/suyash.x.srijan/Documents/Personal_Projects/llm-mock-server/.desloppify/external_review_sessions/ext_20260315_000339_a6cdc3e6/canonical_import_20260315_000950.json"
|
|
6539
|
+
},
|
|
6540
|
+
{
|
|
6541
|
+
"timestamp": "2026-03-15T05:00:28+00:00",
|
|
6542
|
+
"mode": "attested_external",
|
|
6543
|
+
"trusted": true,
|
|
6544
|
+
"reason": "attested external blind subagent provenance",
|
|
6545
|
+
"override_used": false,
|
|
6546
|
+
"attested_external": true,
|
|
6547
|
+
"provisional": false,
|
|
6548
|
+
"provisional_count": 0,
|
|
6549
|
+
"attest": "I validated this review was completed without awareness of overall score and is unbiased.",
|
|
6550
|
+
"import_file": "/Users/suyash.x.srijan/Documents/Personal_Projects/llm-mock-server/.desloppify/external_review_sessions/ext_20260315_045546_0587ea3b/canonical_import_20260315_050028.json"
|
|
5112
6551
|
}
|
|
5113
6552
|
]
|
|
5114
6553
|
}
|