01A correct graph that ran on the CPU
The ring graft is a speculative-attention graph for a ring-buffer key/value cache. Each call writes two provisional key/value proposals, takes an acceptance count from the host, and attends only over committed history, including after the ring wraps.
On 27 August 2026 it passed its end-to-end check at two cache sizes. Rejected proposals that were physically present in the cache stayed out of attention in every poison case.
| Cache slots | Calls | Wraps | Poison cases isolated | Correctness |
|---|---|---|---|---|
| 16 | 41 | 3 | 10 / 10 | Pass |
| 514 | 15 | 1 | 7 / 7 | Pass |
Those runs requested the Neural Engine. A separate placement census of the exact compiled artifacts then asked MLComputePlan where each operation goes. The answer was the CPU, for every operation that has a device, at both sizes, under both .cpuAndNeuralEngine and .all.
| Cache slots | Ops | ANE | CPU | No device | CPU share of cost |
|---|---|---|---|---|---|
| 16 | 115 | 0 | 72 | 43 | 100% |
| 514 | 115 | 0 | 72 | 43 | 100% |
The 43 operations with no device are constants. The census reports Core ML’s preferred placement; it is not a trace of execution.
02A correct draft head that makes every call slower
An EAGLE-3 draft head was grafted into the single-token function of a LUT4 Qwen2.5 model, so one call returns both the verified token and a draft. On 24 June 2026 the grafted subgraph matched the PyTorch reference at three internal stages on two independent inputs: relative L2 at most 0.00195 and cosine at least 0.999998.
The graft is not free. A breakdown of one build, timed as the fastest of 120 calls on the same Mac:
| Build | Fastest call | Added |
|---|---|---|
| Base, graft removed by the compiler | 20.83 ms | — |
| Graft, draft logits out | 24.66 ms | +3.83 ms |
| Graft with on-device argmax | 27.41 ms | +2.75 ms |
That build added 6.58 ms, or 31.6%, per call. The largest single piece is the draft’s argmax over a 151,936-token vocabulary, which runs as 17 CPU operations.
A separate settled-loop measurement with a different harness recorded 18.98 ms per base call and 22.98 ms per graft call, and a draft acceptance of 63.16% open-loop and 65.66% against an oracle, over 80 rounds on 3 prompts. A graft call that yields about 1.6 tokens can cover a call that is about 21% longer. The tokens-per-second figures in that receipt are calculated from those two measurements, not timed generation, so we do not quote them as a speedup.
The one timed generation run forced every draft to be accepted: 65.1 against 37.7 tokens per second, over three 50-token trials. That is an upper bound, not a result at real acceptance.
03The per-call floor
The cost of a call shows up plainly in a simpler test. Five fixed-shape builds of a two-layer LFM2.5 slice processed 1, 4, 8, 16 and 64 tokens per call. Each ran 21 timed calls after one warmup, with seeded random inputs.
| Tokens per call | Ops | Fastest call | Median call | Per token |
|---|---|---|---|---|
| 1 | 151 | 14.09 ms | 15.14 ms | 14.09 ms |
| 4 | 771 | 15.16 ms | 15.96 ms | 3.79 ms |
| 8 | 799 | 14.42 ms | 15.19 ms | 1.80 ms |
| 16 | 855 | 14.89 ms | 15.76 ms | 0.93 ms |
| 64 | 1191 | 15.26 ms | 16.21 ms | 0.24 ms |
A 64-fold range of tokens and an eightfold range of operations moved the call time by about a millisecond. At this depth the call is the cost. That is what speculative decoding and batching try to amortize, and it is why a graft that adds milliseconds to every call has to earn them back. A full model does far more work per call, so this floor is a property of shallow graphs, as N/003 found for batch sweeps.
04What this does and does not show
Prove correctness, then check placement with MLComputePlan, then time the call. A graph can pass the first gate and fail either of the others, and “requested the Neural Engine” is not “ran on the Neural Engine”.
The ring graft is a negative result for that design as measured: correct, but not on the Neural Engine. The EAGLE graft is on the Neural Engine and correct, and its net value is still open until generation is timed at real acceptance. Neither result says what other designs can do.
05Reproducibility boundary
| Receipt | Date | SHA-256 (first 16) |
|---|---|---|
ringgraft_phaseb_l4_speculative_attention_e2e_20260827.md | 27 Aug 2026 | a99573dc5dcf649f |
RINGGRAFT_ANE_PLACEMENT_PROOF_20260827.md | 27 Aug 2026 | 0a07dbfa7122487b |
talon_d1/RESULTS.md (EAGLE numerics) | 24 Jun 2026 | 1970b64dfa33c8b4 |
talon_d1/D3_overhead.md (EAGLE dispatch) | 25 Jun 2026 | 9dfdc9a1921ba1b2 |
e2e_bench_d061.json (EAGLE acceptance) | 24 Jun 2026 | ccbafc1765ba2e9e |
e2e_bench_d059.txt (forced acceptance) | 24 Jun 2026 | a802e93f7ec5c3af |
spec_decode_latency_2026-07-27.md | 27 Jul 2026 | 27ece053b77cf0dc |
The ring graft placement receipt pins the compiled artifact tree hashes (6f085676c39b25cc… for 16 slots, 39baaf80ff547d11… for 514) and its placement JSONs. The call-floor receipt records compiler 3520.5.1. None of these receipts records the device model or OS version, and the EAGLE receipts were committed to the repository on 24 and 25 June 2026.
Source: ane-re receipts and data directories. Referenced artifacts are not public downloads.