Grasp-SFT route C — joint step 2000, token (AR) head on unseen seeds

Checkpoint fontaine_grasp_sft_joint_corrected/step_002000 (the flow-leg page's checkpoint, served through the token head: grammar-constrained greedy decode, no temperature) · execute-horizon 30, seeds 0–99, 30 s episodes · leg 3 re-run finished 06:17Z 08-19 (first attempt owner-paused at seed 24 on 08-16), leg 4 token-base finished 09:01:18Z 08-19, ~2.2–2.4 GPU-h each · verdict surface B §3: 7/100 — OWNER_DECISION band (5–19); SFT delta over the token base +7 (0 → 7), real but ~5× below the flow sibling's +35 (9 → 44) · decode diagnosis (08-19, CPU): greedy magnitude attenuation, not calibration — recommendation posted: activate R2 from the 7% checkpoint (R2 samples at T=1.0)

7/100
successes (≤3 cm, held)
0 / 44
anchors: token base / flow sibling
26/100
moved the boat >0.5 cm
0.92 cm
mean progress toward disk
0
reset strikes

Against the anchors

Decode diagnosis: greedy magnitude attenuation

Frozen token_decode_diagnosis.py read (08-19, CPU-only, computed from the banked probe episodes + videos). SFT bought reach (touch 7 → 60) but greedy decode under-commands amplitude everywhere past contact: touch collapses with spawn distance, grasped carries move at 40% of flow's speed, and 15 pinch-failures split 6 wrong-way / 7 stalled-carry / 2 timeout-holding (flow, n=16: 12/4/0). Zero frozen episodes in any arm (motion instrument over all 300 videos) — the 08-13 no-op-chunk class is retired; this is the ar-draws mean-collapse shape in closed loop.

60 → 22 → 7
token funnel: touch → pinch → success (flow 91 → 59 → 44; base 7 → 0 → 0)
0 vs 17
successes past 10 cm spawn, token vs flow
0.81 vs 2.00
median carry speed cm/s, token vs flow (ratio 0.405)
25 vs 7
knock-aways >1 cm, token vs flow
2 + 5
successes shared with flow (35, 96) + token-only (34, 63, 68, 71, 91)
token decode diagnosis: funnel, reach envelope, carry speed, carry traces

Per-seed outcomes

Clips

flow-overlap success — seed 35, final 3.9 cm, success at tick 120
flow-overlap success — seed 96, final 3.9 cm, success at tick 151
timeout-holding carry (clock runs out, boat in hand) — seed 29, final 2.3 cm
timeout-holding carry (clock runs out, boat in hand) — seed 41, final 6.1 cm
far-spawn no-touch — seed 72, final 12.1 cm

Per-seed table

seedspawn cmmin cmfinal cmprogress cmsuccess
010.510.510.50.0—
17.36.87.10.6—
210.210.210.20.0—
310.610.610.60.0—
410.310.313.50.0—
58.68.58.50.1—
610.17.07.13.1—
77.86.16.41.7—
87.17.18.00.0—
911.011.011.00.0—
1011.611.611.60.0—
119.48.88.80.6—
127.37.39.80.0—
138.68.68.60.0—
1410.610.610.60.0—
158.38.314.00.0—
169.79.79.70.0—
1711.411.411.40.0—
188.36.16.12.2—
197.47.48.00.0—
209.49.29.20.3—
219.49.49.40.0—
2210.610.610.60.0—
239.09.018.30.0—
249.79.79.70.0—
2511.611.611.60.0—
2610.510.511.40.0—
2710.510.510.50.0—
288.58.512.60.0—
299.52.32.37.2—
309.69.611.50.0—
3112.012.012.00.0—
329.08.811.00.2—
339.04.414.34.6—
348.02.52.55.5✓ @ 644
359.43.93.95.5✓ @ 120
369.89.811.40.0—
379.08.811.30.2—
3810.410.410.40.0—
399.28.011.01.2—
408.98.613.00.3—
419.36.16.13.2—
4210.110.110.10.0—
4311.611.611.60.0—
4410.55.417.15.0—
459.39.39.30.0—
4611.911.911.90.0—
478.78.38.30.4—
488.82.56.06.3—
498.84.24.84.6—
508.55.15.33.4—
5111.111.111.10.0—
529.27.79.51.4—
538.68.69.20.0—
549.29.29.20.0—
558.58.510.50.0—
5611.811.811.80.0—
579.89.89.80.0—
587.57.38.90.2—
598.05.87.02.2—
6011.411.411.40.0—
618.08.08.60.0—
628.48.411.80.0—
637.23.73.73.5✓ @ 120
6410.210.219.30.0—
659.49.19.20.3—
669.59.515.60.0—
6710.910.910.90.0—
687.83.94.03.9✓ @ 348
699.39.311.10.0—
708.38.08.20.3—
719.13.93.95.2✓ @ 151
7212.112.112.10.0—
7310.210.013.20.3—
7410.110.110.10.0—
7510.810.812.70.0—
767.97.99.00.0—
779.69.69.60.0—
787.47.07.20.4—
7912.012.012.00.0—
8011.811.811.80.0—
8110.610.610.60.0—
829.19.112.40.0—
8311.39.910.01.4—
848.08.08.00.0—
859.69.59.60.1—
8610.910.910.90.0—
878.27.47.40.8—
888.48.18.10.3—
898.28.28.20.0—
908.48.413.90.0—
917.43.13.14.3✓ @ 118
9211.311.311.30.0—
9310.39.99.90.4—
948.08.09.90.0—
957.64.74.92.8—
968.73.93.94.8✓ @ 151
979.99.99.90.0—
988.95.68.33.3—
999.19.19.10.0—

Token base (no SFT) — leg 4 anchor

0/100 successes · 7/100 made contact · 6/100 moved the boat >0.5 cm · 0 reset strikes — the no-SFT token head barely reaches the boat; the +7 delta above is real signal.

per-seed table (token base)
seedspawn cmmin cmfinal cmprogress cmsuccess
010.510.510.50.0—
17.37.37.30.0—
210.210.210.20.0—
310.610.610.60.0—
410.310.310.30.0—
58.68.68.60.0—
610.110.110.10.0—
77.87.87.80.0—
87.17.17.10.0—
911.011.011.00.0—
1011.611.611.60.0—
119.48.68.60.8—
127.37.37.30.0—
138.68.68.60.0—
1410.610.610.60.0—
158.38.38.30.0—
169.79.79.70.0—
1711.411.411.40.0—
188.38.38.30.0—
197.47.47.40.0—
209.49.49.40.0—
219.49.49.40.0—
2210.610.610.60.0—
239.09.09.00.0—
249.79.79.70.0—
2511.611.611.60.0—
2610.510.510.50.0—
2710.510.510.50.0—
288.58.58.90.0—
299.59.59.50.0—
309.68.88.80.8—
3112.012.012.00.0—
329.09.09.00.0—
339.09.09.00.0—
348.08.08.00.0—
359.49.49.40.0—
369.89.89.80.0—
379.09.09.00.0—
3810.410.410.40.0—
399.29.29.20.0—
408.98.98.90.0—
419.39.39.30.0—
4210.110.110.10.0—
4311.611.611.60.0—
4410.510.510.50.0—
459.39.39.30.0—
4611.911.911.90.0—
478.78.78.70.0—
488.88.88.80.0—
498.88.88.80.0—
508.57.97.90.5—
5111.111.111.10.0—
529.29.29.20.0—
538.68.68.60.0—
549.29.29.20.0—
558.58.58.50.0—
5611.85.76.46.1—
579.89.89.80.0—
587.57.57.50.0—
598.08.08.00.0—
6011.411.411.40.0—
618.08.08.00.0—
628.48.48.40.0—
637.27.27.20.0—
6410.210.210.20.0—
659.49.49.40.0—
669.59.59.50.0—
6710.910.910.90.0—
687.87.87.80.0—
699.39.39.30.0—
708.38.38.30.0—
719.19.19.10.0—
7212.112.112.10.0—
7310.210.210.20.0—
7410.110.110.10.0—
7510.810.810.80.0—
767.97.97.90.0—
779.69.69.60.0—
787.47.47.40.0—
7912.012.012.00.0—
8011.811.811.80.0—
8110.610.610.60.0—
829.19.19.10.0—
8311.311.311.30.0—
848.08.08.00.0—
859.69.69.60.0—
8610.910.910.90.0—
878.28.28.20.0—
888.48.48.40.0—
898.28.28.20.0—
908.48.48.40.0—
917.45.65.71.8—
9211.311.311.30.0—
9310.310.310.30.0—
948.07.57.50.5—
957.67.67.60.0—
968.77.27.21.5—
979.99.99.90.0—
988.98.98.90.0—
999.19.19.10.0—

Regenerate: fontaine/scripts/grasp_sft_joint_unseen_report.py from the banked token_unseen.json only.