pmat 3.11.0

PMAT - Zero-config AI context generation and code quality toolkit (CLI, MCP, HTTP)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
{
  "train": [
    {
      "message": "perf(matrix): Fix convolve2d 25-67% regression via direct indexing\n\nPerformance Fixes:\n- Replace .get()/.get_mut() with direct array indexing in convolve2d inner loop\n- Eliminates millions of redundant bounds checks per convolution\n- 3x3 kernels now 25-32% faster vs regressed baseline\n\nRegression Prevention Infrastructure:\n- Add .github/workflows/benchmark.yml for CI regression detection\n- Add 'make bench-check' and 'make bench-baseline' targets\n- Update pre-commit hook to warn on .get()/.get_mut() in hot paths\n- Add HOT PATH documentation blocks to matmul and convolve2d\n\nTest Coverage Improvements:\n- tuner.rs: 83.89% -> 91.63%\n- builder.rs: 89.80% -> 90.48%\n- device.rs: 88.36% -> 92.20%\n- Overall: 95.91%\n\nRefs TRUENO-PERF-001\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "8b064e118e31358abb156e7881fd6a319e8cf9ac",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768379037,
      "lines_added": 2939,
      "lines_removed": 24,
      "files_changed": 14,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(q6k): PAR-066 Fix CoalescedQ6K scale alignment for byte loads\n\nFive-Whys root cause analysis:\n- Why 1: CoalescedQ6K kernel crashes with CUDA_ERROR_UNKNOWN (716)\n- Why 2: Memory access error detected by compute-sanitizer\n- Why 3: Misaligned 4-byte (u32) loads on scale data\n- Why 4: Q6K super-blocks are 210 bytes (NOT 4-byte aligned)\n- Why 5 (ROOT CAUSE): Scales at offset 192, row 1 gives 402 bytes, 402 % 4 = 2\n\nFix: Changed from 4x ld_global_u32 loads to 16x ld_global_u8 byte loads\nwith warp shuffle broadcast to share scales across all 32 lanes.\n\nPerformance: Now matches original Q6K correctness (max diff 0.00001)\nEnabled for all aligned K dimensions (K % 256 == 0)\n\nRefs SHOWCASE-BRICK-001\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "db374f759053c5f77f58f985be9b77aea246df7e",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768255376,
      "lines_added": 247,
      "lines_removed": 68,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(trueno-gpu): Add ArgMax falsification tests (PARITY-114)\n\n- F114-TEST-1 through F114-TEST-9: cuda-tdg style falsification\n- Barrier safety analysis (PARITY-114)\n- Bounds verification (PAR-002)\n- PTX register allocation validation\n- Shared memory layout verification\n\n8/9 tests pass (GPU execution hits error 700, CPU fallback works)\n\nRefs SHOWCASE-BRICK-001\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "d8099eb627d520486a1628641c8e5f0174182623",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768170478,
      "lines_added": 655,
      "lines_removed": 51,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "perf(cbtop): fix 4M element performance cliff and efficiency calculation (Refs OPT-007)\n\nOPT-006: Pre-allocate result buffers for tiled elementwise operations\n- Added tile_results Vec<Vec<f32>> to SimdLoadBrick\n- Eliminates allocation overhead in hot path\n\nOPT-007: Increase tiling threshold to avoid 4M element cliff\n- Changed threshold from 50% to 150% of L3 cache\n- Account for 3 arrays (2 inputs + 1 output) in working set\n- Prevents cache thrashing at L3 boundary\n\nOPT-009: Fix working set calculation in efficiency analysis\n- Use bytes_per_flop * size for accurate working set estimate\n- Correctly identifies cache vs memory-bound behavior\n\nPerformance improvements:\n- dot_product @ 4M: 33.5 \u2192 99.6 GFLOP/s (+197%)\n- elementwise_mul @ 4M: 4.1 \u2192 10.9 GFLOP/s (+166%)\n- Average efficiency: 49.5% \u2192 60.9% (+23%)\n\nBottleneck reduction:\n- Critical: 11 \u2192 8 (-27%)\n- Unstable: 11 \u2192 1 (-91%)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "8fdd76105a729638a6907127cd660f841d6f70f4",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768130663,
      "lines_added": 99,
      "lines_removed": 12,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(cbtop): identify and fix performance issues via headless mode\n\nUsed cbtop headless mode to identify 4 performance issues. Fixed 2:\n\nPERF-002 (COMPLETE): Unify CV calculation between headless and brick\n- HeadlessBenchmark now uses brick's internal latency_history\n- Stability scores now match CV% in JSON output consistently\n- Added latency_history_slice() method to SimdLoadBrick\n\nPERF-004 (COMPLETE): Update efficiency speedup constants\n- Elementwise speedup: 1.7x -> 4.0x (measured)\n- Bandwidth speedup: 1.7x -> 3.0x (memory-bound)\n- Elementwise efficiency score improved from 13/25 to 20/25\n\nRemaining issues tracked as PMAT work items:\n- PERF-001: Cache-aware tiling for large problem sizes (P1, 3 days)\n- PERF-003: CPU frequency pinning for determinism (P2, 1 day)\n\nSpec \u00a731 added with full performance analysis and citations.\n\nRefs CBTOP-PERF-002, CBTOP-PERF-004\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "facde9cd35e7c7e355f5089cec22dcc1d24d44a3",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768125485,
      "lines_added": 389,
      "lines_removed": 36,
      "files_changed": 4,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs: add PMAT tickets and FKR registry for pending spec items\n\nCreate comprehensive documentation tracking 10 PMAT tickets and 12 FKR\n(Falsifiable Knowledge Record) entries for pending specification items.\n\nPMAT Tickets (docs/pmat-tickets/PMAT-001-to-010.md):\n- PMAT-001: Loop Splitting Optimization (F51-F65)\n- PMAT-002: Token-Based Synchronization (F66-F80)\n- PMAT-003: FMA Fusion Correctness (F17-F29)\n- PMAT-004: Memory Coalescing Optimization (F34-F39)\n- PMAT-005: LZ4 GPU Kernel (COMPLETE - F082 resolved)\n- PMAT-006: Apple Silicon Metal Backend\n- PMAT-007: AMD ROCm Backend\n- PMAT-008: PTX Debugger Implementation (REQ-001 to REQ-010)\n- PMAT-009: Numerical Stability Test Suite (F92-F99)\n- PMAT-010: Backend Equivalence Testing (F81-F87)\n\nFKR Registry (docs/CUDA_TDG_COMPLIANCE.md):\n- 12 FKR entries with Popperian falsification methodology\n- 36 unique peer-reviewed citations\n- Quality gates, bug pattern registry, performance baselines\n- Continuous protocol for weekly/monthly/quarterly reviews\n\nEach entry includes:\n- 3 peer-reviewed citations with DOI/ISBN\n- Specific falsification attempts with criteria\n- Cross-references to PMAT tickets\n\n(Refs TRUENO-PTX-DEBUG-001)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ConcurrencyBugs",
      "confidence": 0.8,
      "commit_hash": "1002aa96051bfc8e21dd9c7046435a48b77daafb",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768084882,
      "lines_added": 1247,
      "lines_removed": 0,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat: add LZ4 file compression CLI example (Refs LZ4)\n\n- Add lz4_file_compress example with:\n  - compress: Compress any file using LZ4 page-based format\n  - decompress: Restore original file\n  - bench: Benchmark different data patterns\n  - gpu-info: Show GPU kernel configuration\n\n- Performance results (CPU, debug build):\n  - Zero pages: 452 MB/s, 204:1 ratio\n  - Text data: 440 MB/s, 68:1 ratio\n  - Binary: 256 MB/s, 10:1 ratio\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ConfigurationErrors",
      "confidence": 0.75,
      "commit_hash": "eb6aaeac6d7724cd2cb02d6c9948320523f33abc",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767534548,
      "lines_added": 303,
      "lines_removed": 0,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix: resolve clippy warnings in trueno-gpu (Refs QUALITY)\n\n- lz4.rs: Add #[must_use] to public functions, allow similar_names for offset variables\n- lz4.rs: Add underscores to LZ4_HASH_MULT constant for readability\n- lz4.rs: Remove unnecessary raw string hashes\n- backend/mod.rs: Use usize::from() instead of bool-to-int conversion\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "45d37c7dbda7edbfc51bb8242dc824f5dce63326",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767533772,
      "lines_added": 11,
      "lines_removed": 4,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "Release v0.11.0: TUI logging, real stress testing, AVX-512 coverage\n\n## Added\n- TUI logging to ~/.trueno/monitor.log with daily rotation\n- RUST_LOG=debug environment variable support\n- Real stress testing using trueno SIMD/CUDA compute paths\n  - CPU: 512x512 matmul via AVX-512 (268M FLOPs/op)\n  - GPU: 4x256MB buffers saturating PCIe (22.9 GB/s)\n\n## Improved\n- AVX-512 coverage: 83.9% \u2192 93.6%\n- Overall coverage: 91.8% \u2192 94.0%\n- Added SIMD path tests for gelu, swish, tanh, log2, log10\n\n## Fixed\n- Removed unused import in gpu_monitor_demo.rs\n- Added crate documentation to xtask\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "b60e97fad77b183b9a3f3cd6f289509aa37298bc",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767481574,
      "lines_added": 10672,
      "lines_removed": 446,
      "files_changed": 26,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(trueno-gpu): Add BatchedGemmKernel, FMA fusion, tile validation\n\nCloses #66, #71, #72, #73\n\n## BatchedGemmKernel (Issue #71)\n\nAdd batched GEMM kernels for 3D/4D tensor matmul:\n- BatchedGemmKernel: [batch, m, k] @ [batch, k, n] -> [batch, m, n]\n- Batched4DGemmKernel: [batch, heads, m, k] @ [batch, heads, k, n]\n- Both naive and tiled variants\n- Uses ctaid.z for batch indexing\n- PARITY-114 compliant (barrier safety)\n\n## FMA Fusion Integration (Issue #72)\n\nIntegrate FMA fusion pass into PTX builder:\n- New `PtxKernel::build_optimized()` method\n- Applies FMA fusion (mul+add -> fma.rn.f32)\n- Expected ~33% instruction reduction for applicable patterns\n\n## PTX Tile Validation (Issue #73)\n\nIntegrate tile validation pass:\n- MAX_TILE_ELEMENTS: 16M elements\n- MAX_TILE_DIM: 4096 per dimension\n- WMMA shape validation (16x16x16, etc.)\n- Returns descriptive errors for invalid configurations\n\n## Register Allocation Investigation (Issue #66)\n\nADR-002: PTX Register Allocation Strategy\n- Decision: Continue delegating to ptxas (correct approach)\n- ptxas performs graph coloring on virtual registers\n- In-place operations already prevent register explosion\n- pressure_report() available for monitoring\n\n## Tests Added\n\n- 17 unit tests for batched GEMM\n- 3 property tests for batched GEMM\n- 5 tests for build_optimized()\n- Barrier safety tests for all new kernels\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ConfigurationErrors",
      "confidence": 0.75,
      "commit_hash": "e83f115960c428a76dfd0b733f59fee9c05e12f9",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767466912,
      "lines_added": 1148,
      "lines_removed": 4,
      "files_changed": 6,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "Add GPU tiled reduction benchmarks for Metal validation\n\nValidates issue #76 tiled reduction shader on AMD Radeon Pro W5700X (Metal).\n\nEmpirical results (1M/10M/32M elements):\n- GPU achieves consistent ~150 Melem/s throughput\n- CPU is 7-37x faster for standalone reductions\n- Expected due to ~8ms GPU transfer overhead baseline\n- GPU reduction optimal when data already on GPU\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "78711407d512ff28c1b7f3e74decded6e11c385a",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767463173,
      "lines_added": 211,
      "lines_removed": 0,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(trueno-gpu): PTX emission 20.9% faster + barrier safety fixes (Refs TRUENO-RELEASE-010)\n\nPerformance:\n- Pre-allocated String capacity based on instruction count\n- Zero-allocation write_instruction() writes directly to buffer\n- Zero-allocation write_operand() and write_mem_operand() helpers\n- Added Display impl for VirtualReg enabling write!() formatting\n- Throughput: 68,316 kernels/sec\n\nAdded:\n- bench_kernel_gen example for kernel generation benchmarks\n- PtxBugAnalyzer::with_performance_whitelist() for documented tradeoffs\n- Loop splitting optimization pass (loop_split.rs)\n- Token-based ordering for memory dependencies (tko.rs)\n- Barrier safety analyzer (barrier_safety.rs) - PARITY-114 prevention\n\nFixed:\n- Barrier safety analyzer false positives in quantized kernels\n- Now recognizes *_done suffix labels as loop ends (not just *_end)\n- Added explicit patterns: sb_loop_done, sub_block_done, k_block_done\n- All 22 barrier safety tests pass\n\nQuality:\n- Coverage: 93.49% (exceeds 90% requirement)\n- All kernels pass production quality gate\n- 0 P0 Critical bugs, 0 P1 High bugs after whitelist\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "66227d12e3ed9aa2915011ea7496501d87c63f8e",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767282386,
      "lines_added": 4973,
      "lines_removed": 417,
      "files_changed": 34,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(matrix): Add batched matmul for 3D/4D tensors (Refs #71)\n\nAdd SIMD-accelerated batched matrix multiplication:\n- Matrix::batched_matmul: [batch, m, k] @ [batch, k, n] -> [batch, m, n]\n- Matrix::batched_matmul_4d: Attention pattern [batch, heads, m, k] @ [batch, heads, k, n]\n\nCritical for transformer multi-head attention (Q @ K^T, attn @ V)\n\nAlso includes:\n- 8 unit tests for batched matmul\n- Updated examples/matrix_operations.rs with demos\n- Book updates for API reference and examples\n- GitHub issue #71 for GPU kernel support\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "3819ba7e833aa7c5a0242a01ed097fc3c7296104",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766512857,
      "lines_added": 525,
      "lines_removed": 2,
      "files_changed": 7,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat: Add PTX bug detection and release trueno-explain 0.2.0, trueno-gpu 0.2.2 (Refs #66)\n\ntrueno-explain 0.2.0:\n- PTX Bug Detection with 12 bug classes (P0 Critical, P1 High, P2 Medium)\n- PtxBugAnalyzer with default, strict, and whitelist modes\n- Detects: shared memory addressing bugs, missing barriers, register pressure,\n  placeholder code, dead code, empty loops, missing bounds checks\n- with_quantized_whitelist() for Q4K/Q5K/Q6K/Q8K kernels\n- Coverage tracking with PtxCoverageTracker\n- 3 examples: deep_bug_hunt, analyze_realizar, ptx_inspector\n- 190 new tests for bug detection\n- New book chapter: PTX Bug Detection\n\ntrueno-gpu 0.2.2:\n- Internal: Reduced predicate pressure in tiled GEMM\n- No API changes\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "250c49feeaa9db55aa5a12c48e95780ac3f580ba",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765915515,
      "lines_added": 4078,
      "lines_removed": 40,
      "files_changed": 23,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat: Add wgpu analyzer, compare mode, and CLI tests (TRUENO-SPEC-015) (Refs #66)\n\nSprint 3 features:\n- wgpu/WGSL analyzer with workgroup size detection (F067)\n- Compare mode for kernel configuration comparison\n- F034 coalescing warning test (<80% threshold)\n- CLI integration tests (F001, F002, F008)\n- Fix CLI -k argument conflict (kernel vs inner)\n\nFalsification tests: F001, F002, F008, F034, F067\nTest count: 93 (77 unit + 15 integration + 1 doctest)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ConfigurationErrors",
      "confidence": 0.75,
      "commit_hash": "37aceba4b9bfc5750bb0a1f3f0501751abaeaf26",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765906535,
      "lines_added": 944,
      "lines_removed": 28,
      "files_changed": 7,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat: Implement TRUENO-SPEC-014 kernel validation (Refs TRUENO-SPEC-014)\n\nTASK-011: PTX Kernel Property Testing\n- Add 10 proptest tests for all kernel builders (GEMM, Softmax, LayerNorm, Attention)\n- Test mathematical invariants and edge cases\n- Verify PTX structure consistency across dimension ranges\n\nTASK-012: Mutation Testing Infrastructure\n- Verified cargo-mutants works on trueno-gpu package\n- Sample run shows test coverage gaps in WASM/driver code\n- Full CI run needed for \u226580% kill rate validation\n\nTASK-013: Probar TUI Visual Regression\n- All 25 pixel FKR tests pass:\n  - Scalar: 6/6 (baseline truth)\n  - SIMD: 5/5 (backend equivalence)\n  - WGPU: 3/3 (GPU validation)\n  - PTX: 11/11 (kernel analysis)\n- Fix PtxBugClass::MissingBarrier -> MissingBarrierSync\n\nTASK-014: Miri Provability Testing (22 scalar tests pass)\nTASK-015: Example Validation (all 17 examples run without errors)\n\nMakefile: Add quick-validate, full-validate, pixel-fkr targets\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "4cfaccf1790108197f5826aa5e92607c6cb150e4",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765897889,
      "lines_added": 251,
      "lines_removed": 58,
      "files_changed": 5,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): Update to v4.65.0 with PAR-107 CUDA graph preservation\n\nFive-Whys root cause: Graph re-captured each request because\ninit_workspace() reallocated buffers (invalidating captured addresses).\n\nFix applied in realizar:\n- Added has_workspace()/has_indexed_weights() checks to skip re-init\n- Graph now persists across requests (1 capture + N replays)\n\nCurrent status:\n- 350-360 tok/s (1.75-1.80x Ollama)\n- Gap to 2x: 11-14% (40-50 tok/s)\n- Memory bandwidth at 32% suggests kernel-bound, not memory-bound\n\nRefs PAR-107\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "8a4d78a37738f8d5b3a6d985f12c41de81e682c3",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768323784,
      "lines_added": 15,
      "lines_removed": 13,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): Update showcase spec v4.60.0 - Ollama parity achieved (Refs SHOWCASE-BRICK-001)\n\nUpdated qwen2.5-coder-showcase-demo.md with:\n\nv4.60.0 Changes:\n- VectorizedQ4KGemvKernel nibble layout bug fixed (Five-Whys analysis)\n- Re-enabled CoalescedQ6K kernel: FFNDown 43.7\u00b5s \u2192 29.6\u00b5s (32% faster)\n- Overall throughput: 134.6 \u2192 293.3 tok/s (+118%)\n\nCurrent metrics:\n- Tokens/sec: 293.3 tok/s (greedy sampling)\n- ComputeBlocks/sec: 90,234 CB/s (293.3 \u00d7 28 layers \u00d7 11 bricks)\n- Per-layer time: 121\u00b5s\n- Ollama ratio: 103% (AT PARITY!)\n\nREAL per-brick timing (via BrickProfiler):\n- Attention: 44.3\u00b5s (24.5%)\n- FFNGateUp: 37.4\u00b5s (20.7%)\n- FFNDown: 29.6\u00b5s (16.4%)\n- QKV: 18.9\u00b5s (10.5%)\n\nTarget: 566 tok/s (2x Ollama). Gap: 93% improvement needed.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "9b40039e840b8e14f77a3b52d96ab32cf51df2c0",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768319434,
      "lines_added": 56,
      "lines_removed": 8,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): PAR-091 Ollama speculative decoding status - MILESTONE ACHIEVED\n\nKey discovery: Ollama does NOT support speculative decoding (per GitHub\nIssues #5800, #9216). This validates our performance comparison:\n\n1. BOTH systems use single-token autoregressive decode\n2. 1.24x speedup (359 vs 288 tok/s) is FAIR apples-to-apples\n3. 2x goal requires speculative infrastructure NEITHER system has\n4. Current 359 tok/s = 84% of realistic bandwidth limit (429 tok/s)\n\nMILESTONE: realizar beats Ollama by 24% on level playing field!\n\nFuture 2x Ollama requires:\n- Q4K GEMM batch kernels (not just GEMV)\n- Batched attention kernel\n- Draft model loading (0.5B Qwen)\n- Speculative KV cache management\n\nThis is significant infrastructure work that goes beyond kernel optimization.\n\nRefs SHOWCASE-BRICK-001\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "4529292bbf75c0b8aa92fb0dc65fd5c346f999cd",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768303680,
      "lines_added": 21,
      "lines_removed": 2,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): Update showcase to v4.31.0 with PAR-066 CoalescedQ6K results\n\nPerformance improvement with CoalescedQ4K + CoalescedQ6K:\n- 1.5B model: 196.9 tok/s vs Ollama 232 tok/s = 0.85x Ollama\n- 11% improvement from Q6K alignment fix\n\nFive-Whys root cause for Q6K:\n- Q6K super-blocks are 210 bytes (NOT 4-byte aligned)\n- Caused CUDA_ERROR_UNKNOWN (716) from misaligned u32 loads\n- Fix: Changed to byte loads + warp shuffle broadcast\n- Correctness verified: max diff 0.00001, correlation 1.0\n\nRefs SHOWCASE-BRICK-001\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "e18ca82f3b853c34420b193f7cb55404e9a75b0d",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768255588,
      "lines_added": 3,
      "lines_removed": 2,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): Update five-whys with CPU profiling findings\n\nPerformance analysis findings:\n- Disproved memory-bandwidth hypothesis (not memory-bound)\n- Identified true bottleneck: 154+ Vec allocations per token\n- Updated remediation priorities:\n  - P1-REV: Zero-alloc forward pass (need fused_matmul_into)\n  - P2-REV: Q8_0 quantized activations\n- Added detailed profiling data:\n  - Matmul alone: 25ms/token (42% of forward pass)\n  - Non-matmul overhead: 34ms (58% of forward pass)\n  - System bandwidth utilization: only 5%\n\nAlso:\n- Fix MSRV compatibility: use OnceLock instead of LazyLock\n- Add book chapters for bench_comparison and showcase_benchmark\n\nRefs CPU-PERF\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "d8d313a55e55eb0dcbde5dfe4aa8024ff4a0c3c9",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767948742,
      "lines_added": 107,
      "lines_removed": 11,
      "files_changed": 5,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(format): APR v2 migration + trueno 0.10.1 ecosystem update (Refs PAR-001)\n\n- Migrate APR format from v1 (APRN) to v2 (APR2) magic\n- Update trueno 0.9.0 \u2192 0.10.1 (thiserror 2.x compatibility)\n- Update renacer 0.8 \u2192 0.9.1\n- Fix integration tests for v2 format (INT-01b, CC1)\n- Bump version to 0.20.2\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "IntegrationFailures",
      "confidence": 0.75,
      "commit_hash": "2187cfbcfb3dc65b80c04b88aab6dee0dc890b0f",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767289417,
      "lines_added": 344,
      "lines_removed": 259,
      "files_changed": 13,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix: Add -j2 parallelism limit to prevent OOM in test targets\n\nFive-Whys Root Cause Analysis:\n1. Why OOM? \u2192 Tests consume more memory than available\n2. Why high memory? \u2192 Multiple tests run in parallel, each allocating ML matrices\n3. Why high parallelism? \u2192 Default = num_cpus, no explicit limit\n4. Why large allocations per test? \u2192 ML library with tensors, property tests\n5. Why no limit set? \u2192 Missing -j flag to constrain parallelism\n\nChanges:\n- test-fast: Add -j 2 for nextest, --test-threads=2 for cargo test\n- test: Add -j 2 for nextest, --test-threads=2 for cargo test\n- coverage: Reduce -j 8 to -j 2 (LLVM instrumentation ~2x overhead)\n- coverage-full: Reduce -j 8 to -j 2\n\nAlso fixes clippy lints in llama_tokenizer.rs:\n- Add #[allow(dead_code)] for reserved fields (scores, pad_token_id)\n- Inline format args in format! calls\n- Change skip_value to return usize instead of Result<usize>\n- Use range patterns (4..=6) instead of OR patterns (4 | 5 | 6)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "8bd1137f3ea844185c8bfe1c072bddb9d3547ef7",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766842377,
      "lines_added": 24,
      "lines_removed": 23,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): Update GQA status to FIXED, document FFN gate limitation\n\n- GQA attention: FIXED (realizar commit 0fd76d6, aprender commit 8d78335)\n  - Added group_size calculation for Q\u2192KV head mapping\n  - apply_rope() now GQA-aware with num_heads_in_x parameter\n  - TinyLlama 1.1B (32 q_heads, 4 kv_heads) no longer panics\n\n- FFN Gate (SwiGLU): Documented as known limitation\n  - OwnedQuantizedLayer missing ffn_gate_weight\n  - Causes garbage output (model runs but FFN broken)\n  - Documented 5-step fix plan in spec\n  - Workaround: Use QuantizedGGUFTransformer\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "22f776995232fda43a4613d5df68100af838937e",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766779941,
      "lines_added": 18,
      "lines_removed": 7,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(chat): Add GQA fallback and progress indicators for GGUF generation\n\n- Store model_path in ChatSession for mmap-based loading\n- Discovered GQA bug in realizar's causal_attention (panics on TinyLlama)\n- Fall back to QuantizedGGUFTransformer for GQA models (simplified attention)\n- Add clear progress indicator showing layers, hidden_dim, token limit\n- Note GQA models with simplified attention warning\n- Limit max_tokens to 16 for CPU (O(n\u00b2) without KV cache)\n\nThe tokenizer now works correctly - \"Hello\" -> [15043] (single token).\nGeneration runs but output quality is limited due to simplified attention\n(no RoPE position encoding or causal mask in QuantizedGGUFTransformer).\n\nProper attention requires fixing realizar's causal_attention for GQA models\nwhere num_kv_heads < num_heads (TinyLlama: 4 kv_heads vs 32 q_heads).\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "7fb24a27417302746c8d6590e2288b0a5d741543",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766777646,
      "lines_added": 27,
      "lines_removed": 2,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(quantize): PAR-126 Fix PARALLEL_THRESHOLD mismatch in Q4K _into variant\n\nROOT CAUSE: fused_q4k_parallel_matvec_into used PARALLEL_THRESHOLD=4096\nwhile the allocating version used 256. This caused 44 matmuls per token\nto run single-threaded on TinyLlama (hidden_dim=2048 < 4096).\n\nRESULT: Scratch path was 25% SLOWER than allocating path. After fix,\nscratch path is now 1.3% faster (as expected for zero-allocation).\n\nREMAINING GAP: CPU still 5.5x slower than Ollama (12.8 vs 70.59 tok/s).\nNext step: investigate 55ms unexplained gap between estimated and actual\nforward time (possibly Rayon sync overhead or cache thrashing).\n\nRefs: PAR-126\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "d630426f06eea5ddc6e983fb3f4bf548cdc5a486",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768348133,
      "lines_added": 159,
      "lines_removed": 1,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(gguf): PAR-126 Fix scratch path bugs for correct generation\n\nTwo critical bugs fixed in zero-allocation inference paths:\n\n1. GQA dimension bug in forward_single_with_scratch:\n   - OLD: Used layer.qkv_weight.q_dim() which returns out_dim/3\n   - PROBLEM: For GQA (e.g., Qwen with 12 heads, 2 kv_heads), this gave\n     wrong dimensions: 2560/3=853 instead of q_dim=1536, k_dim=256\n   - FIX: Use config to compute correct dimensions like forward_single_with_cache\n\n2. Loop structure bug in generate_with_scratch:\n   - OLD: Called forward() BEFORE sampling on each iteration\n   - PROBLEM: First iteration re-processed last prompt token at wrong position,\n     corrupting KV cache and producing wrong output\n   - FIX: Match generate_with_cache structure - sample first (using prefill\n     logits), then forward the new token for next iteration\n\nVerified: generate_with_scratch now produces identical output to\ngenerate_with_cache (bench_scratch passes).\n\nRefs: PAR-126\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "6c11feb39aec06ca5a9f550d7377662266fa0f04",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768346883,
      "lines_added": 17,
      "lines_removed": 15,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(gguf): PAR-126 Add Q8K scratch buffers for future VNNI optimization\n\nAdd Q8K scratch buffer infrastructure to InferenceScratchBuffer and\nOwnedInferenceScratchBuffer for potential VNNI-accelerated matmul.\n\nKey findings from Five-Whys analysis:\n- Q8K quantization causes ~0.03% relative error per matmul\n- Error accumulates across 140 matmuls/token, affecting argmax\n- NOT suitable for production without error compensation\n- Infrastructure kept for future research\n\nRoot cause of 3.8x slower than Ollama identified:\n- 140 Vec allocations per token in fused_matmul calls\n- Profile shows 78ms/token unexplained overhead\n- Fix requires converting forward_single_with_cache to use\n  fused_matmul_into with pre-allocated scratch buffers\n\nPerformance status:\n- Realizar CPU: 18.7 tok/s (with RAYON_NUM_THREADS=24)\n- Ollama CPU: 71 tok/s\n- Gap: 3.8x (allocation overhead is the bottleneck)\n\nRefs PAR-126\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "2d6fedcfbe60934eb76cb704f66b0adba025a40f",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768345906,
      "lines_added": 536,
      "lines_removed": 1,
      "files_changed": 5,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(safety): add SAFETY comments and convert unwrap() to expect()\n\nComputeBrick compliance fixes:\n- CB-020: Add SAFETY comments to all unsafe blocks\n- Convert workspace buffer .unwrap() to .expect() with descriptive messages\n- Convert benchmark writeln!().unwrap() to .expect()\n- Fix partial_cmp().unwrap() to handle NaN with unwrap_or(Ordering::Equal)\n\nFiles fixed: cuda.rs, gpu.rs, memory.rs, quantize.rs, layers.rs,\napr_transformer.rs, bench_viz.rs, brick.rs, gguf.rs\n\nVerified: cargo check passes\n\nRefs CB-IMPL-001\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "f659d463a12b01b25f2f69d435ba345d08c53b48",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768324161,
      "lines_added": 265,
      "lines_removed": 127,
      "files_changed": 9,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(cuda): Re-enable CoalescedQ6K kernel for FFNDown optimization (Refs CORRECTNESS-002)\n\nAfter fixing VectorizedQ4KGemvKernel nibble layout in trueno-gpu, we can now\nre-enable the optimized CoalescedQ6K kernel for Q6K GEMV operations.\n\nChanges:\n- cuda.rs:4819-4824: Re-enable CoalescedQ6K for aligned dimensions (k % 256 == 0)\n- FFNDown now uses CoalescedQ6K: 43.7\u00b5s \u2192 29.6\u00b5s (32% faster)\n- Overall throughput: 134.6 \u2192 293.3 tok/s (+118%)\n\nFive-Whys root cause:\n- CoalescedQ6K was disabled during CORRECTNESS-002 debugging\n- Q6K uses different format than Q4K (6-bit vs 4-bit, no nibble issue)\n- Safe to re-enable after Q4K fix verification\n\nPer-brick timing (REAL via BrickProfiler):\n- Attention: 44.3\u00b5s (24.5%)\n- FFNGateUp: 37.4\u00b5s (20.7%)\n- FFNDown: 29.6\u00b5s (16.4%)\n- QKV: 18.9\u00b5s (10.5%)\n\nCurrent: 293.3 tok/s vs Ollama 283 tok/s = 103% (AT PARITY!)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "85d60028d9a8c8570910a166a595eda5e8bc63cd",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768319387,
      "lines_added": 3097,
      "lines_removed": 5,
      "files_changed": 19,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(batch): PAR-103 GQA dimension fix + weight pre-caching\n\nFixes index out of bounds error in forward_batch_cuda_native:\n- Return (qkv, q_dim, k_dim, v_dim) from QKV projection for GQA\n- Use actual dims for splitting instead of hidden_dim for all\n- Handle optional ffn_gate_weight correctly\n- Add pre_cache_weights_for_batch() for batch mode setup\n\nEnables concurrent batch benchmark to measure aggregate throughput.\n\nRefs SHOWCASE-BRICK-001\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ConcurrencyBugs",
      "confidence": 0.8,
      "commit_hash": "b3ebd4cda48a6a402342e977fafb3f73ce76dea3",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768309255,
      "lines_added": 149,
      "lines_removed": 20,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(cuda): Remove CORRECTNESS-001 debug eprintln causing 19% slowdown (Refs SHOWCASE-BRICK-001)\n\n- Removed debug eprintln in q4k_gemv_into (printed every matmul op)\n- Removed debug eprintln in load_quantized_weights_with_qtype\n- GPU-resident path improved from 92.78 \u2192 110.11 tok/s (+19%)\n- CORRECTNESS-001 resolved: GPU/CPU Q divergence was FALSE POSITIVE\n  - Qwen2.5 adds QKV bias AFTER qkv_matmul()\n  - Comparing raw kernel output vs post-bias forward() was invalid\n  - TiledQ4KGemv produces identical output to CPU fused_q4k_parallel_matvec\n\nCurrent: 110 tok/s vs Ollama 257 tok/s (43%, 2.3x gap)\nTarget: 513 tok/s (2x Ollama)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "3788e34ef2f4365338bc407856545e32f905290c",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768250258,
      "lines_added": 173,
      "lines_removed": 39,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(cuda): PAR-069 Decouple skip_debug from graph capture mode\n\nRoot cause (Five-Whys):\n1. Why \"position_buf not initialized\" error? \u2192 Code requires position_buf when skip_debug=true\n2. Why skip_debug=true in non-graphed path? \u2192 transformer_layer_workspace always passes skip_debug=true\n3. Why does skip_debug affect KV scatter? \u2192 skip_debug=true triggered indirect scatter\n4. Why is position_buf null? \u2192 Only graphed path initializes position_buf\n5. ROOT CAUSE: skip_debug conflated \"skip debug prints\" with \"use graph mode\"\n\nFix: KV scatter and attention code now check position_buf/seq_len_buf.is_some()\ninstead of relying on skip_debug flag.\n\nNote: CORRECTNESS-001 still unresolved - GPU output diverges from CPU.\nThis is a deeper bug in the GPU kernels requiring further investigation.\n\n(Refs PAR-069)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "92b0f59acc9cb4eb88c5d90294a6e2c3aa7b6c6a",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768240594,
      "lines_added": 182,
      "lines_removed": 94,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(cuda): Add GPU-side ArgMax and clean up debug statements (Refs SHOWCASE-BRICK-001)\n\n- Add gpu_argmax() method to CudaExecutor using trueno-gpu kernels\n- Add forward_graphed_replay_to_token_id for GPU-resident inference\n- Add clear_decode_graph method for fresh graph capture\n- Derive Default for TransformerWorkspace (clippy fix)\n- Remove empty line after doc comment (clippy fix)\n- Replace is_multiple_of manual implementations (cargo clippy --fix)\n- Simplify if false && patterns to if false (clippy fix)\n\nPerformance: GPU-resident path achieves 137.97 tok/s with CUDA graph\ncapture/replay (using CPU argmax fallback until GPU argmax is verified)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "50feb70c18e1ff3391967c967ef1a103ae94fd78",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768170885,
      "lines_added": 329,
      "lines_removed": 68,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(brick): Complete F001-F100 falsification test suite (Refs SHOWCASE-BRICK-001)\n\n91 brick tests now pass covering all falsification categories:\n\nF001-F022: Core Invariants (22 tests)\n- Trait implementation, assertions, budget, naming, composition\n\nF023-F030: Budget Compliance (8 tests)\n- RmsNorm, Attention, FFN, FusedFFN budget targets\n- Throughput target infrastructure\n\nF041-F062: Backend Correctness (15 tests)\n- CPU consistency, RoPE properties, softmax stability\n- SwiGLU correctness, RMSNorm epsilon handling\n\nF063-F080: CUDA Infrastructure (14 tests)\n- Graph capture/replay, shared memory, warp alignment\n- Memory pool, kernel launch tracking, error handling\n\nF081-F100: Performance Regression (22 tests)\n- Iteration count, timing precision, percentile calculation\n- Bandwidth/AI tracking, regression detection, CI integration\n\nR001-R010: Real Implementation (10 tests)\n- Verified quantize/dequantize roundtrip\n- Online softmax correctness\n- SwiGLU activation verification\n\nPMAT Scores: A+ Rust (152.9/134), A+ TDG (98.1/100)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "b7ca52c0b2607af6b7837aa15334e052a748d2b2",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768084063,
      "lines_added": 470,
      "lines_removed": 0,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(brick): Add F061-F094 falsification test infrastructure (Refs QWEN-SHOWCASE)\n\nComplete 100-point Popperian falsification test suite infrastructure:\n\nF061-F080 CUDA Kernel Validation:\n- F063: CUDA graph capture infrastructure ready\n- F064: CUDA graph replay verification\n- F065: Indirect kernel (bandwidth efficiency)\n- F066: DP4A instruction infrastructure\n- F067: Memory coalescing verification\n- F070: Register usage tracking\n- F073: Error handling infrastructure\n\nF081-F100 Performance Regression:\n- F081: Throughput comparison infrastructure\n- F085: CV calculation ready\n- F086: Latency percentile infrastructure\n- F087: Baseline comparison ready\n- F090: CUDA graph overhead tracking\n- F092: Memory usage tracking\n- F093: Memory leak detection (via Rust ownership)\n- F094: Graceful degradation infrastructure\n\nTotal: 49 brick tests pass (34 \u2192 49)\nFalsification score: 100/100 \u2705\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "MemorySafety",
      "confidence": 0.85,
      "commit_hash": "b59725cc9dbaa312a6f4e7f2052ed8ba2cafb532",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768082630,
      "lines_added": 221,
      "lines_removed": 0,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(brick): Add ActivationQuantBrick for P2 optimization (Refs QWEN-SHOWCASE)\n\nP2 Implementation: Q8 activation quantization for memory bandwidth reduction\n\nActivationQuantBrick (Jacob et al. 2018):\n- Per-tensor and per-channel quantization modes\n- ~4x bandwidth reduction (f32 \u2192 int8)\n- 0.1% error (per-tensor) / 0.05% error (per-channel)\n- Methods: bandwidth_reduction(), bytes_saved(), estimated_error()\n- Custom assertions: symmetric_range, error_bound\n\nTests: F058-F062 (5 new brick falsification tests)\nTotal: 34 brick tests pass (29 \u2192 34)\n\nAll P0/P1/P2 optimizations now complete:\n- P0: CudaGraphBrick, CoalescedDp4aBrick\n- P1: FusedFfnBrick, FlashAttentionBrick\n- P2: ActivationQuantBrick\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "1af89595a5d49e17606625de551598eb03b4230a",
      "author": "noah.gift@gmail.com",
      "timestamp": 1768082121,
      "lines_added": 220,
      "lines_removed": 0,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(gguf): Correct RoPE rotation and tokenizer for LLaMA models\n\nRoot cause analysis (five-whys):\n1. Why wrong output? Logits were incorrect (token \"1\" > token \"2\" for \"1+1=\")\n2. Why wrong logits? Attention computation was incorrect\n3. Why wrong attention? RoPE rotation used wrong style\n4. Why wrong RoPE? Used NEOX (split halves) instead of NORM (adjacent pairs)\n5. Why NEOX? No rope_type detection - assumed all models use NEOX\n\nFixes:\n- Add rope_type field to GGUFConfig (0=NORM, 2=NEOX)\n- Read rope_type from GGUF metadata\n- Fix apply_rope() in both QuantizedGGUFTransformer and OwnedQuantizedModel\n- NORM style: rotates (x[0],x[1]), (x[2],x[3]) - used by LLaMA\n- NEOX style: rotates (x[0],x[half]), (x[1],x[half+1]) - used by GPT-NeoX\n\nTokenizer fix:\n- SentencePiece models prepend space before tokenization\n- \"1+1=\" \u2192 \" 1+1=\" \u2192 \"\u25811+1=\" (6 tokens, matching llama.cpp)\n\nVerified correct output:\n- \"1+1=\" \u2192 \"2\" (was \"1\")\n- \"2+2=\" \u2192 \"4\" (was newline)\n- \"The capital of France is\" \u2192 \"Paris.\" (matches llama.cpp)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "906029aaf9e5151b8805e2bb26c5450ad2d5ff82",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767944816,
      "lines_added": 2206,
      "lines_removed": 376,
      "files_changed": 8,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix: Quality improvements and test fixes (Refs PAR-001)\n\n- Fix clippy needless_borrow in gguf.rs (lines 11564, 11568)\n- Fix doc over-indentation in quantize.rs\n- Add #[allow(unsafe_op_in_unsafe_fn)] for AVX2 intrinsics\n- Update Q8_0 tests for 34-byte block format (f16 scale per GGML spec)\n- Relax H2 falsification test threshold to 2% for random data\n- Add CUDA feature gates to 5 examples for conditional compilation\n- Add PAR-001 debug examples for llama.cpp parity verification\n- Run cargo fmt on all files\n\nTests: 794 lib tests pass, TDG 92.1/100 (A grade)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "7e0cba63f7176d7a4fb2bb6969c4ef0e231f5112",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767277736,
      "lines_added": 13189,
      "lines_removed": 455,
      "files_changed": 114,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(gqa): Support GQA models in KV cache forward pass\n\nEXTREME TDD fix for Grouped Query Attention (GQA) models in KV cache:\n\nProblem:\n- forward_single_with_cache and forward_with_cache assumed Q/K/V have\n  equal sizes (hidden_dim), but GQA models have smaller K/V dimensions\n- Caused panic: \"range end index X out of range for slice of length Y\"\n- Affected models: Qwen2 (14 heads, 2 KV heads), TinyLlama (32 heads, 4 KV heads)\n\nSolution:\n- Calculate kv_dim = num_kv_heads * head_dim for proper QKV extraction\n- Extract Q: [0..hidden_dim], K: [hidden_dim..hidden_dim+kv_dim],\n  V: [hidden_dim+kv_dim..hidden_dim+2*kv_dim]\n- Apply RoPE with num_kv_heads for K (not num_heads)\n- Use attention_with_cache_gqa for GQA-aware attention computation\n- Handle first token case with proper V expansion for all Q heads\n\nChanges:\n- src/gguf.rs: Fix forward_single_with_cache QKV extraction and RoPE\n- src/apr_transformer.rs: Fix forward_with_cache QKV extraction\n- src/apr_transformer.rs: Add empty_gqa() for GQA-sized layers\n- src/apr_transformer.rs: Add GQA KV cache tests (IMP-GQA-001)\n- examples/bench_toks.rs: Add KV cache benchmark example\n\nPerformance improvement:\n- TinyLlama: 1.1 tok/s \u2192 14.9 tok/s (13.5x speedup with KV cache)\n- Qwen2.5: 1.0 tok/s \u2192 1.7 tok/s (cache working, needs optimization)\n\nAll 794 tests pass.\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "2cc06a74e254573de3abe06b31afae574cd8e8bc",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767166737,
      "lines_added": 281,
      "lines_removed": 19,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(tests): Update Q4_0 tests for 18-byte block format\n\nFixes property and smoke tests to use correct Q4_0 block format:\n- Block size: 18 bytes (2-byte f16 scale + 16 quants), not 20 bytes\n- Scale: f16 (half precision), not f32\n\nChanges:\n- property_quantize.rs: Update strategy and bounds tests for f16 scale\n- smoke_e2e.rs: Fix block creation for 18-byte format\n- Code formatting (rustfmt) in apr_transformer.rs, quantize.rs, examples\n\nAll 792 lib tests + 26 integration tests pass.\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "dea0968a572187f1df17eec54c4211f966f8b4f4",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767121533,
      "lines_added": 531,
      "lines_removed": 246,
      "files_changed": 14,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(apr): Add GGUF-to-APR converter benchmark and fix GQA support\n\n- Add convert_and_bench_apr example for GGUF vs APR comparison\n- Fix qkv_dim calculation to use actual weight size (handles GQA models)\n- Add dimension check fallback in SIMD matmul\n- Fix index out of bounds in APR transformer\n\nPerformance comparison (TinyLlama-1.1B):\n- GGUF Q4_0: 10.3 tok/s @ 640MB\n- APR F32: 0.1 tok/s @ 4.2GB (memory bandwidth limited)\n\nThe 100x performance gap is expected due to:\n1. 6.6x more memory traffic (F32 vs Q4_0)\n2. No integer SIMD acceleration (F32 matmul vs Q4_0\u00d7Q8_0)\n3. Memory bandwidth saturation with 4GB weights\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "a4d870a54d35c812279895c08691626eb38ac999",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767083267,
      "lines_added": 151,
      "lines_removed": 12,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "perf(gguf): Add AVX2+FMA SIMD optimizations for attention and Q4_0\n\n- Add simd_dot_f32 with AVX2+FMA for fast dot products (8-way SIMD)\n- Add simd_axpy_f32 with AVX2+FMA for scaled accumulation\n- Optimize attention_with_cache to use direct SIMD (remove trueno overhead)\n- Optimize attention_with_cache_gqa with SIMD dot products and axpy\n- Improve fused_q4_0_dot_avx2 nibble extraction\n- Fix redundant else block in fused_matmul\n\nPerformance: 1.4 tok/s on TinyLlama-1.1B Q4_0 (CPU)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "6b1d6cd87c4a9362dc1f0ab9a5a0a425d517cf7a",
      "author": "noah.gift@gmail.com",
      "timestamp": 1767033807,
      "lines_added": 302,
      "lines_removed": 70,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix: Resolve clippy warnings and update OwnedQuantizedLayer struct\n\n- Replace redundant closures with std::num::NonZeroUsize::get in http_client.rs\n- Fix assertion on constant in y5_quantized_apr_tests.rs using runtime check\n- Add missing OwnedQuantizedLayer fields (ffn_gate_weight, ffn_gate_bias,\n  ffn_norm_weight, ffn_norm_bias) in performance_parity.rs benchmark\n- Wrap qkv_weight with OwnedQKVWeights::Fused for new struct API\n- Fix unused variables in examples and tests\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\n",
      "label": "StdlibMapping",
      "confidence": 0.8,
      "commit_hash": "1e3bc0432469f1962f301826132ae19628ad103f",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766953961,
      "lines_added": 57,
      "lines_removed": 47,
      "files_changed": 14,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "test(gguf): Update tokenizer tests for SentencePiece format\n\nUpdate test_encode_simple and test_encode_roundtrip to use\nSentencePiece-style vocabulary with \u2581 prefix for word boundaries\ninstead of trailing spaces. This aligns tests with the tokenizer\nfix that properly converts spaces to \u2581 (U+2581).\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "58185111e090c5cf14594aea5f8ff2976fe076ad",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766939970,
      "lines_added": 2249,
      "lines_removed": 362,
      "files_changed": 33,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    }
  ],
  "validation": [
    {
      "message": "docs: Add PTX/SIMD kernel validation requirements (Refs TRUENO-SPEC-014)\n\nTRUENO-SPEC-014 Updates:\n- Add validation pyramid: unit \u2192 miri \u2192 property \u2192 mutation \u2192 fuzz \u2192 pixel\n- Add TASK-011 through TASK-016 for kernel validation\n- Add Section G (20 bonus points) to QA checklist\n- Update scoring guide for A++ (110-120 points)\n- Add fast validation commands (quick-validate, full-validate)\n\nCode Improvements:\n- Add WMMA FP16 tests to gemm.rs (coverage improvement)\n- Add comprehensive BugClass tests in testing/mod.rs\n- Fix Makefile clean target to remove book/book/ (SATD false positives)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "dfdaa70d5c48c71f1275c367f9d4615b4a28b04a",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765893659,
      "lines_added": 368,
      "lines_removed": 13,
      "files_changed": 4,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat: Implement quality improvements from PMAT analysis (Refs TRUENO-SPEC-014)\n\nTASK-001: Replace production unwrap() with expect() in matrix.rs\n- matmul_naive now uses explicit expect() with invariant docs\n- Eliminates Cloudflare-class panic vulnerability\n\nTASK-003: Reduce cyclomatic complexity in select_backend_for_operation\n- Extract select_x86_backend_for_operation helper function\n- Simplifies conditional logic with early returns\n- Complexity reduced from 15 to <10\n\nTASK-004: Fix clippy warnings in pixel_fkr tests\n- Add #[allow(dead_code)] to reserved constants/functions\n- Replace println!(\"\") with println!()\n- All code reserved for future golden baseline validation\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "SecurityVulnerabilities",
      "confidence": 0.9,
      "commit_hash": "6d9eb2881cd60f474c198abe585947bf296ad473",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765891527,
      "lines_added": 433,
      "lines_removed": 59,
      "files_changed": 4,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix: Coverage instrumentation working (<5 min, 92%+)\n\n- Change simular from path dependency to crates.io (path deps break llvm-cov)\n- Simplify coverage target: disable mold linker, run tests per-crate\n- Remove nextest (incompatible with llvm-cov in workspace setup)\n\nCoverage: 92.73% in 2:54 (trueno 92.44%, trueno-gpu 93.12%)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "09877e862a304fc39c63d88578b377483672ac9c",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765832615,
      "lines_added": 12,
      "lines_removed": 49,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(tokenizer): Correct SentencePiece-style word boundary encoding\n\nThe LlamaTokenizer now properly normalizes input text for SentencePiece:\n- Prepends \u2581 to entire input\n- Replaces spaces with \u2581 for word boundaries\n- \"Hello, world!\" \u2192 \"\u2581Hello\u2581,\u2581world\u2581!\" \u2192 [15043, 29892, 3186, 29991]\n\nThis fixes the double-space issue in decoded text by normalizing upfront\ninstead of checking per-character space prefixes.\n\nAlso adds integration test for TinyLlama tokenizer validation.\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "364591dfd43771316bffff480f4a497ab9d64a8a",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766776612,
      "lines_added": 68,
      "lines_removed": 17,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(book): Document SentencePiece tokenization and Q4_0 dequantization fixes\n\nUpdated book documentation with actual implementation details:\n\n1. tokenization/sentencepiece.md:\n   - Explains the \u2581 (U+2581) word boundary marker\n   - Shows correct space-to-\u2581 conversion\n   - Documents UTF-8 safe character boundary handling\n   - Includes before/after fix comparison\n\n2. quantization/q4-0-dequantize.md:\n   - Documents correct nibble ordering (low then high)\n   - Shows the common interleaving mistake to avoid\n   - Includes implementation code and tests\n   - Documents the critical fix impact on model accuracy\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "ae6ce8d84a6b7ca47c7d1c2cb65d3944ee51af02",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766939792,
      "lines_added": 258,
      "lines_removed": 48,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(gguf): Fix tokenizer and dequantization for correct LLaMA inference\n\nTwo critical fixes that enable correct GGUF model inference:\n\n1. SentencePiece tokenizer fix:\n   - Replace spaces with \u2581 (U+2581) before tokenization\n   - Use character boundaries instead of byte indices for UTF-8 safety\n   - This fixed \"Paris\" prediction from rank 470 to rank 1\n\n2. Q4_0/Q4_K/Q6_K dequantization nibble ordering:\n   - Fixed to match candle/llama.cpp layout\n   - Low nibbles go to positions 0-15/0-31, high nibbles to 16-31/32-63\n   - Previously interleaved (wrong), now sequential (correct)\n   - This improved \"Paris\" rank from 24,573 to 470\n\nBefore: \"The capital of France is a country that...\"\nAfter:  \"The capital of France is Paris, which...\"\n\nAlso adds vocabulary(), encode(), decode(), bos_token_id(), eos_token_id()\nhelper methods to GGUFModel for tokenization support.\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "0ed071786dc4eb3c4d7e779b801e76ed19650503",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766939458,
      "lines_added": 689,
      "lines_removed": 223,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(gguf): Apply delta transformation to layer norm weights\n\nGGUF stores layer norm weights as (gamma - 1), not gamma directly.\nWithout this fix, attention scores were ~0 giving uniform 50/50 weights.\n\nBefore: [BOS] vs [BOS,Hello] cosine = 0.9850 (nearly identical)\nAfter:  [BOS] vs [BOS,Hello] cosine = 0.1199 (properly different)\n\nChanges:\n- Add gamma = 1 + stored_weight for attn_norm_weight\n- Add gamma = 1 + stored_weight for ffn_norm_weight\n- Add RMSNorm implementation for LLaMA models\n- Fix SwiGLU: apply silu to gate projection, not up\n- Add FFN norm loading for pre-FFN layer norm\n- Add FFN-09, FFN-10 verification tests\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "09ec92ac4aa58ab32f7adcf2f26f66413b51a15e",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766829021,
      "lines_added": 187,
      "lines_removed": 27,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(clippy): Fix lint errors for make lint && make coverage (Refs PERF-PARITY-001)\n\nClippy fixes:\n- Replace manual div_ceil with .div_ceil() (17 occurrences in gguf.rs)\n- Remove identity operations (* 1) in gguf.rs\n- Fix print_literal errors by embedding literals in format strings\n- Fix unused variables (prefix with _)\n- Add #[allow(clippy::type_complexity)] in pipeline_tui.rs\n- Fix assert formatting in layers.rs\n\nTest fix:\n- Relax IMP-149b performance threshold from 0.8x to 0.5x for CI stability\n\nResults: make lint \u2705, make coverage \u2705 (2461 tests, 95.02% function coverage)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "9f7884c19c5d7c7409a480013944d21f0724fb49",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765812154,
      "lines_added": 12006,
      "lines_removed": 96,
      "files_changed": 4,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    }
  ],
  "test": [
    {
      "message": "feat: Implement TRUENO-SPEC-013 quality gates with smoke tests and pixel FKR\n\nTRUENO-SPEC-013 Implementation:\n- Add smoke_e2e.rs with SIMD/WGPU backend validation tests\n- Add pixel_fkr.rs with FKR (Falsification Kernel Regression) test suites\n  - scalar-pixel-fkr: Baseline truth tests (RMS norm, SiLU, softmax, RoPE)\n  - simd-pixel-fkr: SIMD validation against scalar baseline\n  - wgpu-pixel-fkr: WGPU validation against scalar baseline\n  - ptx-pixel-fkr: PTX validation for trueno-gpu\n- Add Makefile targets: coverage-cuda, coverage-95, smoke, pixel-fkr-all\n- Update pre-commit hook with 95% coverage target notification\n\nPTX Bug Fixes (Issues #67, #68):\n- Fix U8 register bug: use U16 minimum for ld_global_u8\n- Fix and/or bitwise ops: change from .u32 to .b32 type\n- Fix shfl.idx width: change from 31 to 32 (power of 2)\n- Fix warp shuffle: add address clamping for all thread participation\n- Fix F16 load: change from ld.global.f16 to ld.global.b16\n- Fix F16->F32 convert: remove illegal .rn rounding modifier\n- Add Q4_K GEMM example demonstrating quantized inference\n\nTest results: All 240+ trueno-gpu tests pass, Q4_K runs on RTX 4090\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "7f0045c693549038d6447dd37d3860233fd1edfa",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765828432,
      "lines_added": 1802,
      "lines_removed": 39,
      "files_changed": 9,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat: Add simulation testing framework (TRUENO-SPEC-012)\n\n- Add `simulation` module with Toyota Production System principles\n- SimRng: Deterministic PCG-based RNG for reproducible testing\n- BackendSelector: Intelligent backend selection with thresholds\n- JidokaGuard: Stop-on-defect quality checks (NaN/Inf detection)\n- BufferRenderer: Visual regression testing with color palettes\n- StressTestConfig: Stress testing infrastructure with anomaly detection\n- 100 falsifiable claims validating all backends\n- Fix coverage-check Makefile parsing\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "28addba65912794fda883c22956c90baa3efcffb",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765802663,
      "lines_added": 6490,
      "lines_removed": 370,
      "files_changed": 23,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(vector): Add layer_norm for transformers (#61)\n\n- Add layer_norm() with learnable gamma/beta parameters\n- Add layer_norm_simple() for inference without parameters\n- Proper error handling for empty vectors and size mismatches\n- 9 comprehensive unit tests\n- 2 doctests with examples\n\nRefs #61 (Tier 1: layer_norm - enables transformer-style models)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "9632bada0ca07fb4cc788dfdb1e543acee739a40",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765099612,
      "lines_added": 275,
      "lines_removed": 0,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "chore: Release v0.7.1 - Quality Infrastructure & Golden Trace Validation (Release)\n\nAdded:\n- EXTREME PMAT Integration (O(1) Quality Gates)\n- Golden Trace Validation (Renacer v0.6.2+)\n- GPU Batch API demonstration example\n\nFixed:\n- Replaced .unwrap() with .expect() in examples\n- Corrected documentation paths\n\nDependencies:\n- Updated wgpu 27.0.1, criterion 0.7, thiserror 2.0.17\n\nQuality: 90.40% coverage, 942 tests passing, all gates green\n\nRelease: v0.7.1\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "e1660fdebf28d9745c2051bbb5e15a036fdca3b7",
      "author": "noah.gift@gmail.com",
      "timestamp": 1763985027,
      "lines_added": 87,
      "lines_removed": 3,
      "files_changed": 4,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix: Resolve clippy warnings and format code\n\n- converter.rs: Collapse nested if statement\n- qwen2/mod.rs: Replace unwrap() with expect() + descriptive messages\n- gguf.rs: Remove redundant closures, combine match arms, use range\n  patterns, use From traits for casts, add TensorDataMap type alias\n- Auto-format all files with cargo fmt\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "ec05d20a06ae70cfb984ebdd3f95a035980f8ab3",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766762323,
      "lines_added": 627,
      "lines_removed": 587,
      "files_changed": 34,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "test(regularization): Add 35+ tests for coverage improvement\n\nAdded tests for:\n- StochasticDepth::mode() getter and DropMode variants\n- SpecAugment::default() and with_mask_value()\n- RandAugment apply_single for all AugmentationType variants\n- Mixup::mix_labels() and alpha edge cases\n- CutMix sample edge cases\n- Clone and Debug impls for all regularization types\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "e1d4c5c601bcdc1b74515e290877c51596ef3e2d",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766613255,
      "lines_added": 243,
      "lines_removed": 0,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "test(error): Add coverage tests for helper methods and traits\n\n- dimension_mismatch, index_out_of_bounds, empty_input helpers\n- PartialEq<&str> implementation tests\n- Error::source() for Io and non-Io variants\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "daf661f41b8c67dc6a1b4caba2dad833b3da1586",
      "author": "noah.gift@gmail.com",
      "timestamp": 1766611057,
      "lines_added": 59,
      "lines_removed": 0,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "docs(spec): Add PARITY-042/043 spec sections, fix SATD in cuda.rs\n\nPARITY-042: Pinned Host Buffer Infrastructure (6 tests)\n- PinnedHostBuffer<T> for page-aligned allocation\n- StagingBufferPool for buffer reuse\n- TransferMode enum (Sync/Async/Staged)\n\nPARITY-043: Multi-Head Attention CUDA Kernel (8 tests)\n- Fused multi-head attention PTX generation\n- Causal masking support\n- Per-head scaling and thread configuration\n\nFixed SATD:\n- cuda.rs:1223 TODO \u2192 Note with PARITY-042 reference\n\nSpec version: 6.5.0\nTotal tests: 2592 (0 SATD in src/)\n\n(Refs PARITY-042, PARITY-043)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "749f18b228e52ba37d45398a24ccc51db9a2cd5b",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765807370,
      "lines_added": 1495,
      "lines_removed": 11,
      "files_changed": 2,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "test(integration): Implement IMP-084 through IMP-087 integration tests\n\nReplace todo!() stubs with actual HTTP integration tests:\n- IMP-084: serve_gguf_model health and generate endpoint tests\n- IMP-085: OpenAI-compatible /v1/completions endpoint test\n- IMP-086: llama.cpp-compatible /completion endpoint test\n- IMP-087: Benchmark integration test with tok/s measurement\n\nAll tests use reqwest blocking client and gracefully handle missing\nserver infrastructure with informative error messages.\n\n(Refs IMP-084, IMP-085, IMP-086, IMP-087)\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "eefcb7fa58b646a3cb260963b8ad377a5c8a6f96",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765806063,
      "lines_added": 221,
      "lines_removed": 16,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "fix(roadmap): Correct pmat roadmap format (subtasks must be empty array)\n\nFixed YAML schema validation errors:\n- subtasks field requires struct array, not string array\n- Moved subtask details into notes field\n- Validated with: pmat work validate\n\nPARITY-001 now in progress via: pmat work start PARITY-001\n\nRefs PERF-PARITY-001\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "OwnershipBorrow",
      "confidence": 0.85,
      "commit_hash": "fe18b36aa61dd70ca29b0c46d215915c61afa5f3",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765643782,
      "lines_added": 17,
      "lines_removed": 191,
      "files_changed": 1,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(perf): Complete Popperian falsification of trueno capabilities (IMP-600 to IMP-802)\n\n- IMP-600: GPU capability falsification\n  - GPU 2.7x SLOWER than SIMD for MATVEC (token generation)\n  - GPU 57x FASTER for GEMM (batch processing)\n  - Added gpu_matvec_benchmark.rs and gpu_gemm_benchmark.rs\n\n- IMP-700: Real-world verification against Ollama\n  - Measured: Ollama 240.1 tok/s, Realizar 0.22 tok/s\n  - Verified gap: 1,090x (not theoretical)\n  - Added imp_700_realworld_verification.rs\n\n- IMP-800: KV cache falsification\n  - trueno-db MemoryKvStore provides 128x average speedup\n  - Range: 4.5x (short seq) to 512x (long seq)\n  - Added imp_800_kv_cache_falsification.rs\n\n- IMP-801: FlashAttention CUDA falsification\n  - trueno-gpu FlashAttention provides 16x conservative speedup\n  - Scales with sequence length (2x at 128, 32x at 2048)\n  - Added imp_801_flash_attention_falsification.rs\n\n- IMP-802: Combined path to parity documented\n  - Step 1: KV cache \u2192 8.5x gap\n  - Step 2: FlashAttention \u2192 ~5x gap\n  - Step 3: Q4_K quantized \u2192 ~1.25x (PARITY)\n\nAll components exist in trueno ecosystem - work is INTEGRATION, not implementation.\n\nAlso fixed various clippy lints:\n- Added module-level allow for many_single_char_names and similar_names in gguf.rs\n- Added lib.rs allow for missing_errors_doc and items_after_statements\n- Fixed unused variables and dead code warnings\n\nSpec updated to v3.4.0. All 2025 tests pass.\n\nRefs PERF-PARITY-001\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "ASTTransform",
      "confidence": 0.85,
      "commit_hash": "2fcb7f4f8287b4e2d2d5d7f26380fbafc8a33d9f",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765643244,
      "lines_added": 17008,
      "lines_removed": 2139,
      "files_changed": 13,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    },
    {
      "message": "feat(gpu): Add M29-M32 production hardening (error recovery, pooling, circuit breakers, logging)\n\nImplements Phase 20-23 of GPU Performance Parity specification:\n\nM29 - Error Recovery & Graceful Degradation (IMP-070, IMP-071, IMP-072):\n- ErrorRecoveryStrategy with exponential backoff and jitter\n- DegradationManager for GPU\u2192CPU fallback under memory pressure\n- FailureIsolator with circuit breaker pattern\n\nM30 - Connection Pooling & Resource Limits (IMP-073, IMP-074, IMP-075):\n- ConnectionPool with bounded capacity and health checking\n- ResourceLimiter with memory/compute time/queue depth limits\n- ResourceMonitor with real-time metrics and snapshots\n\nM31 - Retry Logic & Circuit Breakers (IMP-076, IMP-077, IMP-078):\n- RetryPolicy with configurable policies per error type\n- CircuitBreaker with Closed/Open/Half-Open states\n- BulkheadManager for isolated resource pools per request type\n\nM32 - Production Logging & Diagnostics (IMP-079, IMP-080, IMP-081):\n- Logger with structured JSON output and correlation IDs\n- PhaseTimer/MemoryTracker/DiagnosticsCollector for latency breakdown\n- DebugMode with request capture/replay and state dumps\n\nAll 12 new tests passing (IMP-070 through IMP-081).\nZero clippy warnings.\n\nRefs PERF-PARITY-001\n\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\n",
      "label": "TraitBounds",
      "confidence": 0.8,
      "commit_hash": "6ea81891e4a718ff47dccf8c05805ce799e750c4",
      "author": "noah.gift@gmail.com",
      "timestamp": 1765546594,
      "lines_added": 2966,
      "lines_removed": 2,
      "files_changed": 3,
      "error_code": null,
      "clippy_lint": null,
      "has_suggestion": false,
      "suggestion_applicability": null,
      "source": "CommitMessage"
    }
  ],
  "metadata": {
    "total_examples": 65,
    "train_size": 45,
    "validation_size": 8,
    "test_size": 12,
    "class_distribution": {
      "TraitBounds": 13,
      "ASTTransform": 35,
      "ConfigurationErrors": 3,
      "OwnershipBorrow": 8,
      "SecurityVulnerabilities": 1,
      "ConcurrencyBugs": 2,
      "IntegrationFailures": 1,
      "StdlibMapping": 1,
      "MemorySafety": 1
    },
    "avg_confidence": 0.8288888888888888,
    "min_confidence": 0.75,
    "repositories": [
      "trueno",
      "aprender",
      "realizar"
    ]
  }
}