jackasda211233 commited on
Commit
e286d83
Β·
verified Β·
1 Parent(s): fc63794

Upload PATCHCODE_TESTING_PROCESS.html with huggingface_hub

Browse files
Files changed (1) hide show
  1. PATCHCODE_TESTING_PROCESS.html +209 -1
PATCHCODE_TESTING_PROCESS.html CHANGED
@@ -400,7 +400,7 @@
400
  table { min-width: 680px; }
401
  }
402
  </style>
403
- </head>
404
  <body>
405
  <header>
406
  <div class="wrap">
@@ -591,6 +591,141 @@
591
  <p>The key question was not "best adapter in BF16" β€” it was "what we would actually deploy". The deploy target was a merged GGUF, <code>IQ4_NL</code>, imatrix-quantized, on the custom ik-llama runtime (Jinja + DeepSeek reasoning format + flash attention + graph split, temp <code>0.7</code>).</p>
592
  <p>Live LoRA loading is not the production path for this release (the tested serving profile uses flash attention, which conflicts with live LoRA on this runtime). So the long-term path became: <strong>merge the adapter first, then export + quantize a full GGUF.</strong> That is why the upload is a merged GGUF, not an adapter.</p>
593
  <p>The plain <code>IQ4_NL</code> uses the <strong>reasoning/coding imatrix</strong> (the kind that worked). An earlier build used a media-domain imatrix; it underperformed and was superseded.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  <h2>The testing ladder (5 phases + confirms)</h2>
595
  <p>Single-shot and hard-suite gates <strong>saturate</strong> on this model family (every quant scores ~the same, including BF16). The discrimination that actually changed the decision came from a 160k-token real-world build (KritaLite) run multi-seed, plus a discipline rubric, plus an agentic-process efficiency probe. The phases:</p>
596
  <p><strong>Phase 1 β€” single-seed real-world build.</strong> Made the plain <code>IQ4_NL</code> look like the winner (0.933 vs c76's 0.867). This was <strong>noise</strong> β€” it did not reproduce.</p>
@@ -657,6 +792,79 @@
657
  </tbody>
658
  </table>
659
  <p>The base tended to ramble (~311 tokens of hedging preamble β€” e.g. it scored 0.20 on the coding-discipline case with "I might overwrite the user's changes…"); PatchCode was terse and on-target (~91 tokens) and scored higher. That is the distil's intended effect: more disciplined execution, less wasted output. Caveats: this is a behaviour rubric, not a multi-turn agent turn-count; Ξ»=0.5 is the sweet spot β€” higher strengths (0.7 / 1.0 / 1.3) also got terse (~60 tokens) but fell <em>below</em> the base (0.39–0.49), so terseness alone is not the win; single-temperature, small per-category N.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
660
  <h2>The noise lesson (critical β€” reuse for every future bake-off)</h2>
661
  <p>The SignalLatch-style suite is <strong>noisier than it looked</strong>:
662
  - KritaLite build: Β±0.067–0.13 <strong>run-to-run</strong> variance (beyond seed). c76 scored 0.933 β†’ 0.867 β†’ 0.907 on the same gguf.
 
400
  table { min-width: 680px; }
401
  }
402
  </style>
403
+ <style>main img{max-width:100%;height:auto;display:block;margin:1.4em auto .5em;border-radius:6px}main table{display:block;overflow-x:auto}</style></head>
404
  <body>
405
  <header>
406
  <div class="wrap">
 
591
  <p>The key question was not "best adapter in BF16" β€” it was "what we would actually deploy". The deploy target was a merged GGUF, <code>IQ4_NL</code>, imatrix-quantized, on the custom ik-llama runtime (Jinja + DeepSeek reasoning format + flash attention + graph split, temp <code>0.7</code>).</p>
592
  <p>Live LoRA loading is not the production path for this release (the tested serving profile uses flash attention, which conflicts with live LoRA on this runtime). So the long-term path became: <strong>merge the adapter first, then export + quantize a full GGUF.</strong> That is why the upload is a merged GGUF, not an adapter.</p>
593
  <p>The plain <code>IQ4_NL</code> uses the <strong>reasoning/coding imatrix</strong> (the kind that worked). An earlier build used a media-domain imatrix; it underperformed and was superseded.</p>
594
+ <h2>Complete test catalog β€” every run, at a glance</h2>
595
+ <p>Thirteen separate test runs fed this decision, plus the behaviour-rubric Ξ»-sweep. This is the full list β€” what each measured, on what, and what it said. The detail for each follows in <em>The testing ladder</em>.</p>
596
+ <table>
597
+ <thead>
598
+ <tr>
599
+ <th>#</th>
600
+ <th>test</th>
601
+ <th>measures</th>
602
+ <th>candidates</th>
603
+ <th>conditions</th>
604
+ <th>headline result</th>
605
+ <th>verdict</th>
606
+ </tr>
607
+ </thead>
608
+ <tbody>
609
+ <tr>
610
+ <td>1</td>
611
+ <td>Phase 1 β€” single-seed KritaLite</td>
612
+ <td>160k-token real-world build</td>
613
+ <td>IQ4_NL, c76, c373, BF16</td>
614
+ <td>1 seed</td>
615
+ <td>IQ4_NL 0.933 vs c76 0.867</td>
616
+ <td><strong>noise</strong> β€” did not reproduce</td>
617
+ </tr>
618
+ <tr>
619
+ <td>2</td>
620
+ <td>Phase 2 β€” 3-seed KritaLite</td>
621
+ <td>build</td>
622
+ <td>8 quants + BF16</td>
623
+ <td>3 seeds</td>
624
+ <td>c76/c404 0.933; IQ4_NL/BF16 0.867</td>
625
+ <td>reversed phase 1; mixed recipe led</td>
626
+ </tr>
627
+ <tr>
628
+ <td>3</td>
629
+ <td>Phase 3 β€” 40-recipe broad search</td>
630
+ <td>build</td>
631
+ <td>40 mixed recipes</td>
632
+ <td>3 seeds</td>
633
+ <td>all-zero</td>
634
+ <td><strong>harness bug</strong> (missing <code>config.json</code>) β€” void</td>
635
+ </tr>
636
+ <tr>
637
+ <td>4</td>
638
+ <td>Phase 4 β€” search re-gate</td>
639
+ <td>build</td>
640
+ <td>53 candidates</td>
641
+ <td>bug fixed</td>
642
+ <td>none beat the curated originals</td>
643
+ <td>broad search doesn't help this merge</td>
644
+ </tr>
645
+ <tr>
646
+ <td>5</td>
647
+ <td>Phase 5 β€” discipline rubric</td>
648
+ <td>action-first style</td>
649
+ <td>5 quants</td>
650
+ <td>3 seeds</td>
651
+ <td>BF16/IQ4_NL 0.931; c76 0.903</td>
652
+ <td>IQ4_NL &amp; BF16 lead discipline</td>
653
+ </tr>
654
+ <tr>
655
+ <td>6</td>
656
+ <td>Phase 5 β€” <code>agent_eval_http</code></td>
657
+ <td>7-task agentic pass-rate + turns</td>
658
+ <td>5 quants</td>
659
+ <td>1 pass</td>
660
+ <td>c76 27/7 turns; baseline 27/11; c373 31/17 (thrash)</td>
661
+ <td>c76 leads process-efficiency</td>
662
+ </tr>
663
+ <tr>
664
+ <td>7</td>
665
+ <td>Q5 confirm</td>
666
+ <td>build + long-context + discipline</td>
667
+ <td>Q5_K_M (uniform, 20 G)</td>
668
+ <td>3 seeds</td>
669
+ <td>0.867 / 0.988 / 0.806</td>
670
+ <td>doesn't clear "both" (build+disc β‰₯ 0.90)</td>
671
+ </tr>
672
+ <tr>
673
+ <td>8</td>
674
+ <td>Overnight 2 β€” precision Γ— promotion matrix</td>
675
+ <td>build + discipline</td>
676
+ <td>8 (q5/q6/q8 Γ— uniform/promoted)</td>
677
+ <td>3 seeds</td>
678
+ <td>none clear both; promotion kills discipline</td>
679
+ <td>precision is <strong>not</strong> the build lever</td>
680
+ </tr>
681
+ <tr>
682
+ <td>9</td>
683
+ <td><strong>Confirm β€” 5-seed head-to-head</strong></td>
684
+ <td>build + long-context + discipline</td>
685
+ <td>IQ4_NL vs c76</td>
686
+ <td><strong>5 seeds, same-condition</strong></td>
687
+ <td>IQ4_NL 0.920 vs c76 0.907 (Ξ” 0.013 β‰ͺ 0.067)</td>
688
+ <td><strong>TIED within noise β€” the decisive test</strong></td>
689
+ </tr>
690
+ <tr>
691
+ <td>10</td>
692
+ <td>Q8 confirm</td>
693
+ <td>build + long-context + discipline</td>
694
+ <td>Q8_0 vs IQ4_NL</td>
695
+ <td>5 seeds</td>
696
+ <td>Q8 0.867 vs IQ4_NL 0.920</td>
697
+ <td>no edge; near-lossless buys nothing</td>
698
+ </tr>
699
+ <tr>
700
+ <td>11</td>
701
+ <td>Agentic-loop</td>
702
+ <td>40 held-out mini-projects; pytest-verified convergence + turns + recovery + stall</td>
703
+ <td>IQ4_NL, c76, Q8</td>
704
+ <td>40 tasks</td>
705
+ <td><strong>all 100 % convergence, ~6.6–7.2 turns, 0 % stall</strong></td>
706
+ <td><strong>did not discriminate</strong> β€” every quant (incl. base) converges; a family property, not a PatchCode distinction</td>
707
+ </tr>
708
+ <tr>
709
+ <td>12</td>
710
+ <td>SignalLatch 4-gate suite</td>
711
+ <td>coding/habits + hard-reasoning + long-context (exact + rubric)</td>
712
+ <td>IQ4_NL vs BF16</td>
713
+ <td>n=12 hard, n=4 longctx</td>
714
+ <td>IQ4_NL 0.887 vs BF16 0.846 (hard); 0.979 vs 0.941 (long); 0 errors</td>
715
+ <td>IQ4_NL tracks/edges BF16 within noise</td>
716
+ </tr>
717
+ <tr>
718
+ <td>13</td>
719
+ <td>Behaviour rubric β€” Ξ»-sweep</td>
720
+ <td>action-first style + coding discipline + held-out generalization</td>
721
+ <td>base (SignalLatch) vs PatchCode @ Ξ»{0.3,0.5,0.7,1.0,1.3}, ckpt{3661,2600,1800}</td>
722
+ <td>15 cases Γ— strengths</td>
723
+ <td>base 0.486 β†’ PatchCode Ξ»0.5 0.617 (~β…“ the tokens)</td>
724
+ <td>PatchCode beats base; Ξ»0.5 is the sweet spot</td>
725
+ </tr>
726
+ </tbody>
727
+ </table>
728
+ <p><strong>The only test that discriminated was #9</strong> (the 5-seed confirm) β€” and it discriminated by showing everything is <em>tied within noise</em>, which pushed the decision onto non-noise axes (size + plain-quant recipe), where IQ4_NL wins. Tests #1 and #3 were void (noise / harness bug). Tests #5–#8, #10 and #11 all failed to separate the finalists. #12 confirms IQ4_NL is not a quality cliff below BF16. #13 is the one place PatchCode clearly beats its SignalLatch base.</p>
729
  <h2>The testing ladder (5 phases + confirms)</h2>
730
  <p>Single-shot and hard-suite gates <strong>saturate</strong> on this model family (every quant scores ~the same, including BF16). The discrimination that actually changed the decision came from a 160k-token real-world build (KritaLite) run multi-seed, plus a discipline rubric, plus an agentic-process efficiency probe. The phases:</p>
731
  <p><strong>Phase 1 β€” single-seed real-world build.</strong> Made the plain <code>IQ4_NL</code> look like the winner (0.933 vs c76's 0.867). This was <strong>noise</strong> β€” it did not reproduce.</p>
 
792
  </tbody>
793
  </table>
794
  <p>The base tended to ramble (~311 tokens of hedging preamble β€” e.g. it scored 0.20 on the coding-discipline case with "I might overwrite the user's changes…"); PatchCode was terse and on-target (~91 tokens) and scored higher. That is the distil's intended effect: more disciplined execution, less wasted output. Caveats: this is a behaviour rubric, not a multi-turn agent turn-count; Ξ»=0.5 is the sweet spot β€” higher strengths (0.7 / 1.0 / 1.3) also got terse (~60 tokens) but fell <em>below</em> the base (0.39–0.49), so terseness alone is not the win; single-temperature, small per-category N.</p>
795
+ <p><strong>Q5_K_M confirm β€” uniform Q5 (3 seeds).</strong> Does a uniform higher precision (no selective promotion) clear "both"? <code>Q5_K_M</code> (20 G, imatrix-calibrated): build <code>0.867</code> (Β±0.133), long-context <code>0.988</code>, discipline <code>0.806</code> (Β±0.292) β†’ build and discipline both below 0.90. Uniform-precision does not fix build and erodes discipline. Ruled out.</p>
796
+ <p><strong>Agentic-loop β€” autonomous convergence (40 held-out mini-projects).</strong> Each quant ran 40 held-out mini-projects (a README plus a <em>failing</em> pytest suite) fully autonomously: reason β†’ read β†’ implement β†’ run tests β†’ fix β†’ converge. Convergence is <strong>objective pytest pass, not self-claimed.</strong></p>
797
+ <table>
798
+ <thead>
799
+ <tr>
800
+ <th>quant</th>
801
+ <th>n</th>
802
+ <th>convergence</th>
803
+ <th>mean turns (converged)</th>
804
+ <th>recovery (mean)</th>
805
+ <th>stall</th>
806
+ </tr>
807
+ </thead>
808
+ <tbody>
809
+ <tr>
810
+ <td>c76</td>
811
+ <td>40</td>
812
+ <td><code>100%</code></td>
813
+ <td>6.6</td>
814
+ <td>0.4</td>
815
+ <td><code>0%</code></td>
816
+ </tr>
817
+ <tr>
818
+ <td>Q8_0</td>
819
+ <td>40</td>
820
+ <td><code>100%</code></td>
821
+ <td>7.0</td>
822
+ <td>0.5</td>
823
+ <td><code>0%</code></td>
824
+ </tr>
825
+ <tr>
826
+ <td>IQ4_NL</td>
827
+ <td>40</td>
828
+ <td><code>100%</code></td>
829
+ <td>7.2</td>
830
+ <td>0.4</td>
831
+ <td><code>0%</code></td>
832
+ </tr>
833
+ </tbody>
834
+ </table>
835
+ <p>This axis <strong>did not discriminate</strong> β€” every quant (including the un-adapted base behaviour) converged on all 40 tasks, so autonomous convergence is a property of the model <em>family</em> on these tasks, not a PatchCode distinction. It does not favour any ship candidate, and the decision falls to size + recipe methodology. (Per-task: 8 tasks Γ— 5 reps each, all 5/5 for every quant β€” <code>calc</code>, <code>debug_stack</code>, <code>graph</code>, <code>lru</code>, <code>mdlist</code>, <code>minijson</code>, <code>taskq</code>, <code>tracker</code>.)</p>
836
+ <p><strong>SignalLatch gate suite β€” IQ4_NL vs BF16.</strong> The established four-type gate set (coding/habits, hard-reasoning, hard-project, long-context) run on the PatchCode merge in both formats. Both clear every gate with <strong>zero errors</strong>; IQ4_NL tracks or nominally edges BF16. The ~0.04 gaps sit inside the build noise floor, so this reads as <em>tied</em>, not an IQ4_NL win.</p>
837
+ <table>
838
+ <thead>
839
+ <tr>
840
+ <th>gate (cases)</th>
841
+ <th>PatchCode IQ4_NL</th>
842
+ <th>BF16 (control)</th>
843
+ </tr>
844
+ </thead>
845
+ <tbody>
846
+ <tr>
847
+ <td>coding / habits</td>
848
+ <td><code>0.958</code></td>
849
+ <td><code>0.917</code></td>
850
+ </tr>
851
+ <tr>
852
+ <td>hard-reasoning</td>
853
+ <td><code>0.789</code></td>
854
+ <td><code>0.751</code></td>
855
+ </tr>
856
+ <tr>
857
+ <td>long-context (4)</td>
858
+ <td><code>0.979</code></td>
859
+ <td><code>0.941</code></td>
860
+ </tr>
861
+ <tr>
862
+ <td><strong>weighted overall</strong></td>
863
+ <td><strong><code>0.887</code></strong></td>
864
+ <td><code>0.846</code></td>
865
+ </tr>
866
+ </tbody>
867
+ </table>
868
  <h2>The noise lesson (critical β€” reuse for every future bake-off)</h2>
869
  <p>The SignalLatch-style suite is <strong>noisier than it looked</strong>:
870
  - KritaLite build: Β±0.067–0.13 <strong>run-to-run</strong> variance (beyond seed). c76 scored 0.933 β†’ 0.867 β†’ 0.907 on the same gguf.