===== analyse (baseline) =====
verify rows: 7686   drafted/row: 7.00   accepted/row: 1.823   committed/step-row: 2.823

accepted-length distribution (accepted drafts per row)
   0     2276   29.6%  #################
   1     1916   24.9%  ##############
   2     1331   17.3%  ##########
   3      885   11.5%  ######
   4      456    5.9%  ###
   5      318    4.1%  ##
   6      162    2.1%  #
   7      342    4.4%  ##

first rejection position (7344 rows rejected something, 95.6%)
  slot  0     2276   31.0% of rejections
  slot  1     1916   26.1% of rejections
  slot  2     1331   18.1% of rejections
  slot  3      885   12.1% of rejections
  slot  4      456    6.2% of rejections
  slot  5      318    4.3% of rejections
  slot  6      162    2.2% of rejections

the four cases, over 21357 TESTED slots (slots past a rejection are excluded)
  drafter right, draw kept it      -> no loss     11993   56.2%
  drafter right, draw REJECTED it  -> SAMPLING loss      620    2.9%
  drafter wrong, draw rejected it  -> DRAFTER loss     6724   31.5%
  drafter wrong, draw kept it      -> no loss      2020    9.5%
  -> of all rejections, 8.4% were tokens the drafter got RIGHT (sampling) and 91.6% were drafter misses

per-slot decomposition  (hit = draft token IS target argmax)
  hit%(all) is over every DRAFTED slot: unbiased drafter quality.
  hit%(tested) is over slots the prefix reached: conditioned on surviving,
  so it runs HIGH at depth and its n shrinks. Read the trend off hit%(all).

slot   n_all hit%(all)  tested hit%(tst)   E[p'top1|hit]    E[p'draft|miss]  alpha_obs
   0    7686     62.3     7686     62.3     0.8744+-0.0054     0.0924+-0.0044     0.704
   1    7686     51.2     5410     57.3     0.8638+-0.0069     0.0807+-0.0047     0.646
   2    7686     43.5     3494     57.1     0.8724+-0.0085     0.0773+-0.0059     0.619
   3    7686     36.9     2163     54.2     0.8850+-0.0110     0.0654+-0.0069     0.591
   4    7686     32.7     1278     61.0     0.9180+-0.0114     0.0580+-0.0092     0.643
   5    7686     27.2      822     55.6     0.9248+-0.0143     0.0673+-0.0111     0.613
   6    7686     25.4      504     64.1     0.9214+-0.0162     0.0679+-0.0167     0.679

reading: hit%(all) falling with slot = the DRAFTER degrades with depth.
         hit%(all) flat and high but alpha_obs low = SAMPLING rejects tokens
         the drafter got right; the bucket table above says so directly.

value of one more accepted token per row: +35.4% tok/s at the measured accept length (2.82 committed), 40 us/token commit cost assumed

===== miss census =====
rows: 7686   rows that rejected something: 7344   of those, DRAFTER misses: 6724 (91.6%)

MISS CENSUS -- the first rejection of a row, when the drafter missed it.
  count  = how often the drafter fails this way
  slots  = drafted slots discarded (K_row - k), the raw upper bound
  disc.  = the same, discounted by this drive's own per-slot pass rates

bucket                   count      %    slots      %    disc.      %
different_word            4706  70.0%    25694  70.8%  11197.8  70.3%
punct_vs_word             1342  20.0%     6961  19.2%   3129.7  19.7%
punctuation_swap           404   6.0%     2179   6.0%    955.5   6.0%
boundary_prefix            210   3.1%     1173   3.2%    501.3   3.1%
draft_structural            27   0.4%      117   0.3%     58.4   0.4%
case_variant                14   0.2%       78   0.2%     33.9   0.2%
numeric                     10   0.1%       47   0.1%     23.1   0.1%
target_structural            9   0.1%       44   0.1%     20.8   0.1%
whitespace_variant           2   0.0%       12   0.0%      5.0   0.0%
TOTAL                     6724 100.0%    36305 100.0%  15925.5 100.0%

miss count by slot, per bucket
bucket                       0      1      2      3      4      5      6
different_word            1437   1311    854    555    284    162    103
punct_vs_word              391    298    227    192     99    101     34
punctuation_swap           128    100     74     48     22     23      9
boundary_prefix             87     36     43     21     10      6      7
draft_structural             3      6      5      4      3      4      2
case_variant                 4      4      3      2      1      0      0
numeric                      1      2      2      4      0      1      0
target_structural            3      0      2      2      1      1      0
whitespace_variant           1      0      1      0      0      0      0

where the drafted token sat in the target's ranking (misses only)
  draft outside target top-5            3824   56.9%
  draft is target #2                    1330   19.8%
  draft is target #3                     754   11.2%
  draft is target #4                     465    6.9%
  draft is target #5                     351    5.2%

when in the request the miss happened
  verify step 6 or later                6368   94.7%
  verify steps 2-5                       279    4.1%
  verify step 1 of the request            77    1.1%

could the drafter have proposed the target's token AT ALL?
  (--draft-vocab-prefix narrows the drafter head, so any id at or above
   the window is structurally unproposable and its miss is not a quality one)
  target id is inside the drafter head window     6579  97.8%  slots  35479  97.7%  disc. 15575.0  97.8%
  target id is OUTSIDE the drafter head window     145   2.2%  slots    826   2.3%  disc.   350.5   2.2%

how PEAKED the target was AT the missed slot (its own p'(top1))
  a near-miss on a flat target is a token a wider draft could carry;
  on a sharp target the drafter simply proposed the wrong token
  draft in target top-5              n=  2900  E[p'top1|miss] = 0.7055
  draft outside top-5                n=  3824  E[p'top1|miss] = 0.7056

most frequent (drafted -> target argmax) pairs, per bucket
  different_word:
        21  ' main'                  -> ' explain'
        16  ' to'                    -> ' answer'
        13  ' reading'               -> ' with'
        12  ' analyze'               -> ' summarize'
        10  ' The'                   -> ' It'
        10  ' well'                  -> ' paragraphs'
        10  '/conf'                  -> '/m'
         9  ' summarize'             -> ' answer'
         9  ' most'                  -> ' single'
         8  ' analyze'               -> ' read'
  punct_vs_word:
        37  '.'                      -> ' in'
        34  ':'                      -> ' in'
        18  ' in'                    -> ','
        16  ' and'                   -> ','
        14  ','                      -> ' and'
        13  ' carefully'             -> ','
        12  '.'                      -> ' Bron'
        11  ' want'                  -> "'"
        10  ','                      -> ' conflicts'
        10  ','                      -> ' to'
  punctuation_swap:
        47  ','                      -> '?'
        36  '.'                      -> ','
        35  ','                      -> '.'
        29  ','                      -> ' ('
        21  '.'                      -> '?'
        18  '.'                      -> ':'
        12  '?'                      -> ','
        11  ';'                      -> ','
        11  ' ('                     -> '?'
        10  ':'                      -> '.'
  boundary_prefix:
        18  'organ'                  -> 'organized'
        11  ' conflict'              -> ' conflicts'
         5  'ash'                    -> 'asha'
         3  'phin'                   -> 'phine'
         3  ' Mr'                    -> ' Mrs'
         3  ' C'                     -> ' Caroline'
         3  '?),'                    -> '?'
         3  ' Minh'                  -> ' Minha'
         3  '"'                      -> '"?'
         2  ' St'                    -> ' Ste'
  draft_structural:
        14  '\n\n'                   -> ' Need'
         2  '\n\n'                   -> ' It'
         1  '\n'                     -> ' Jennifer'
         1  '-'                      -> 'er'
         1  '\n\n'                   -> ' Shawn'
         1  '-'                      -> '-s'
         1  '-'                      -> 'lei'
         1  '-'                      -> '-X'
         1  '\n'                     -> ' Hal'
         1  '\n\n'                   -> ' The'
  case_variant:
         2  'market'                 -> ' Market'
         1  ' Mayor'                 -> ' mayor'
         1  'my'                     -> 'MY'
         1  'broken'                 -> 'Broken'
         1  ' General'               -> ' general'
         1  ' crowd'                 -> ' Crowd'
         1  ' names'                 -> ' Names'
         1  ' in'                    -> ' In'
         1  ' Dag'                   -> ' dag'
         1  ' place'                 -> ' Place'
  numeric:
         1  '1'                      -> '3'
         1  '6'                      -> '8'
         1  '9'                      -> '7'
         1  '7'                      -> '6'
         1  '1'                      -> '5'
         1  '9'                      -> '1'
         1  '7'                      -> '8'
         1  '4'                      -> '2'
         1  '7'                      -> '5'
         1  '3'                      -> '5'
  target_structural:
         1  ' This'                  -> '\n\n'
         1  ' We'                    -> '\n\n'
         1  ' G'                     -> '\n'
         1  ' estate'                -> '-'
         1  ' Let'                   -> '\n\n'
         1  ' narrator'              -> '\n'
         1  ','                      -> '-'
         1  ' Buck'                  -> '\n'
         1  ' The'                   -> '\n\n'
  whitespace_variant:
         1  'land'                   -> ' land'
         1  ' boy'                   -> 'boy'
