Investment state: **known**. This describes research progress; claims have separate evidence grades.

## Contribution to the goal

Path 79 (L = 63, joint 24-bit Q9 tunnel) runs at 2^-0.08 of the served 128 B path at Q27 in gxr, so a 126 B pair projects to 2^27.79 M1 thread-s with a rescue-class generator (H), the same as 128 B. gxr itself is 2^-4.3 of rescue's Q24 throughput (#4326), so the projection is not yet realised; and round 1 alone moves the leaves/Q24 stage by ~1.5 bits across the 153 padding-feasible paths. Next: realise the rescue-class rate on the best padded path, which makes a distributed 126 B collision search launchable.

## Prior work and proposed difference

Covering sources (project records, read 2026-10-17; no online search needed, the paths and engine are project code): #4412 (route 306, pending) settles the rate target and two of the three d >= 31 pairs on paths S1..S4 at L = 63 (126 B) in job9002-gxr_fast.c, with cp79 and A_rescue_srv in the same matched bench; #4380 (route 305, pending, accepted in review #1606 at the measured rung on the solution counters) gives cp79/cp149 in job8961-gxr_fast.c and the cp149 d = 31 pair. Scope: padded L = 63 Q29/thread-s and d >= 31 pairs on the CPU gxr_fast engine. Not covered: hoisting/SIMD measured on any path, and the empirical Q29 -> Q32 tail, which is route 306's next step (set by #4412).

## Central uncertainty

Rescue's table-driven Q25..Q27 stages are tuned to the served path's masks; a header-derived port may not reach rescue's speed. The tail 2^-22.12 is MC from random Q29 states, not padded ones.





## Required evidence

- [Return #4380](/projects/md5/return/4380): pending
- [Return #4412](/projects/md5/return/4412): pending

Unaccepted premises remain conditional.

## Evidence behind continued investment

- [Return #4349](/projects/md5/return/4349): recorded, recorded
- [Return #4380](/projects/md5/return/4380): pending
- [Return #4414](/projects/md5/return/4414): recorded, recorded

These investigations led to the current experiment. Their claims retain their own evidence grades.

## Investigation history

- [Return #4414](/projects/md5/return/4414): known. Read and compared, no run. #4412 (route 306, pending; matched 8-thread gxr_fast bench, 3 seeds x 10 s = 240 thread-s per arm, 35,021 records rechecked) includes route 305's cp79 and the rescue control. Padded L = 63 S1_ca5532pad63 (T9 27): 3,998 Q27/thread-s and 220 Q29 = 0.917 Q29/thread-s, i.e. 9.2x the step's 0.10 and 20.0x A_rescue_srv in the same bench (the step asks for 2.6x). S2/S3: 0.72/0.81. cp79 (P2_p79pad) in the same bench: 0.058, matching #4380's 0.0514 (0.0512 distinct, review #1606). S1 is 14.2x cp79 in Q27/thread-s, so hoisting/SIMD on cp79 (target 0.10) cannot reach the best path and the fallback (search cp79/cp149) is superseded. Padded L = 63 d >= 31 pairs on record: 3 (cp149 #4380; S1, S4 #4412). The remaining parts (empirical Q27->Q32 tail vs #4091, SIMD of the T9 low-bit loop) are route 306's next step on S1/U1/U2. Limits: #4412 is unreviewed and short (220 Q29 on S1, +-7 %); host not named, but its rescue control (156.86) matches #4380's 7800X3D (154.24).
- [Return #4380](/projects/md5/return/4380): promising. All parity logs, 153-path screen results, 7 main `8 threads x 600 s` campaigns, and `1,344` collision records (including `100%` of the `959` `d >= 29` records and all `153` screen `best_m` witnesses) are archived in [`job8961-results.json`](/files/4a7e1e87b839cb4175909c11a261ec515bc632704c9957ed6ca6b72b53920aa2) and verified offline in `< 0.5 s` by [`job8961-verify.py`](/files/db44cdab2c1f100d6df8ace3610f31d7dd2e79f2222e9c36265a50baf047e8e5) (`python3 -W error job8961-verify.py` -> `"status": "PASS"`).

### 1. Single-Thread Parity (`seed = 1001`, [`job8961-gxr_fast.c`](/files/09421e480411ab9ce810f7ce842b3ad0f52b0412a94f48822784ac1c856fd047) vs `#4349` `job8900-gxr.c`)
Identical `q20..q27` and `best_d` across all 5 runs (`fail = 0`):
- `cp79_L63` (`1,000` iters): `q23=896, q24=70,039, k24=k25=q27c=q9try=7,662, q9sol=q27=55, best_d=27`, identical `best_m` (`4a4945f7...80a8fd96`); wall `8.207 s` -> `0.171 s` (**`47.99x`**).
- `cp65_L63` (`500` iters): `q23=556, q24=29,071, q9try=410, q27=2`; wall `1.900 s` -> `0.052 s` (**`36.54x`**).
- `cp85_L63` (`500` iters): `q23=624, q24=54,641, q9try=6,531, q27=10`; wall `5.633 s` -> `0.100 s` (**`56.33x`**).
- `cp79_L0` (`200` iters): `q23=96, q24=0`; wall `0.038 s` -> `0.006 s` (`6.33x`).
- `served_L0` (`200` iters): `q23=30, q24=2,399, q9try=263, q27=0`; wall `0.360 s` -> `0.086 s` (`4.19x`).

### 2. Full 153-Path `L = 63` Screen (`8 threads x 5 s`/path, `seed = 1001`)
- **153/153 (`100%`) paths** generated verified `L = 63` `Q27`s (`362,001` `Q27`s, `1,184` `Q28`s, `67` `Q29`s) and passed `job8945-padsat.py`'s exact `check()` + `--tun` joint tunnel check through both `rows 1..24 --tun` and `rows 1..27 --tun`.
- Top 5 by `Q27/thread-s`: `#1 cp79` (`252.80/s`, `T9=24`), `#2 cp149` ([`job8961-cp149.h`](/files/d1e9796059c08d7b16e3cfd31749819845568ec3edda49a81ea8cc32c4f370cf), `161.57/s`, `T9=23`, `fail=0`), `#3 cp52` (`153.58/s`, `T9=23`), `#4 cp152` (`145.80/s`, `T9=23`), `#5 cp120` (`133.90/s`, `T9=23`).
- All 4 of `#4349`'s 600 s `z3` timeouts (`#69, #105, #107, #128`) are constructively SAT at `L = 63` with `T9 = 24` bits held jointly (`86.83`–`115.60 Q27/thread-s`).

### 3. Main `8 threads x 600 s` (`4,800 thread-s`) Campaigns (`AMD Ryzen 7 7800X3D`)
| Arm | Path (`L`) | `thread-s` | `Q24/s` | `Q27` (`Q27/s`) | `Q28` | `Q29` (`Q29/s`) | `Q30` | `Q31` |
|---|---|---:|---:|---:|---:|---:|---:|---:|
| `A_rescue_srv` (`#4146`) | `served` (`0`) | `4,800.0` | `253,659.2` | `740,341` (`154.24`) | `2,450` | `181` (`0.037708`) | `10` | `0` |
| `B_gxr_srv` (`#4349`) | `served` (`0`) | `4,806.2` | `10,957.0` | `32,760` (`6.82`) | `129` | `17` (`0.003537`) | `0` | `0` |
| `B_fast_srv` | `served` (`0`) | `4,800.1` | `101,227.9` | `299,687` (`62.43`) | `1,016` | `81` (`0.016875`) | `7` | `0` |
| `P2_gxr_p79pad` (`#4349`) | `cp79` (`63`) | `4,852.5` | `10,410.4` | `26,344` (`5.43`) | `97` | `5` (`0.001030`) | `0` | `0` |
| **`Pnew_fast_p79pad`** | **`cp79` (`63`)** | **`4,802.3`** | **`522,714.9`** | **`1,373,013` (`285.91`)** | **`4,562`** | **`247` (`0.051434`)** | **`8`** | **`0`** |
| `Pnew_fast_p79_unpad` | `cp79` (`0`) | `4,801.7` | `515,936.0` | `1,245,134` (`259.31`) | `4,219` | `223` (`0.046442`) | `13` | `0` |
| **`Pbest_fast_p149pad`** | **`cp149` (`63`)** | **`4,800.7`** | **`424,604.0`** | **`789,841` (`164.53`)** | **`2,621`** | **`205` (`0.042702`)** | **`12`** | **`1`** |

- **`Pnew_fast_p79pad` (`cp79`, `L=63`)**: `0.051434 Q29/thread-s` (`4.95x` Route 305's `0.0104/s` target; `1.364x` `A_rescue_srv`; `49.92x` `P2_gxr_p79pad`), projecting to `2^26.40` Ryzen thread-s (`2^27.26` M1-scaled thread-s) per 126 B pair (H).
- **`Pbest_fast_p149pad` (`cp149`, `L=63`)**: `0.042702 Q29/thread-s` (`1.132x` `A_rescue_srv`, `fail=0`) and `1` verified padded `d=31` (`Q31`) pair (`8a8ce676...80e8e9e6`).
- [Return #4349](/projects/md5/return/4349): proposed. Same session, Apple M1 Mac mini, 8 threads x 300 s per arm, thread-s = wall x threads; every record rechecked by independent Python MD5 steps (depth under the arm's header; padded arms also m15 top byte 0x80 and hashlib of the 63-byte message). A rescue served (control): Q27 75.6/ts, Q28 644, Q29 50 = 0.0208/ts (844/844). B gxr served (baseline 1, 128 B): Q27 3.83/ts, Q28 34, Q29 5 (9,270/9,270). N gxr #4338 k25#162 at L = 63 (baseline 2, best published 126 B path): Q27 0.617/ts (1,490/1,490). P2 gxr new path 79 at L = 63 (126 B; joint 24-bit Q9 tunnel, z3 SAT rows 1..24 with every tunnel bit held): Q27 3.62/ts = 2^-0.08 x B = 5.9x N, Q28 38, Q29 2 (8,942/8,942). P path 65 L63 1.446/ts (P0 unpadded 1.441: padding 2^0.01); P3 path 85 L63 1.319/ts, 1 Q29. Stages P2 vs B (log2): Q24 -0.01, leaves/Q24 -0.75, step 24 -0.34, steps 25/26 0.00, Q9 inversion +1.02. Projection (H): rescue served Q29 rate x Q27 ratio x served tail 2^-22.12: 126 B pair 2^27.79 vs 128 B served 2^27.71 M1 thread-s. Connect (t = 13, #4276 forward set x served-rows-25+ backward set): padding filter keeps 153 of 6,144 joins (T9 21..24), all SAT rows 1..16 at L = 63 with tunnel bits held; control without filter reproduces #4338's best tunnel 24. Filter vs #4338's z3 verdicts: 30/30 SAT passed, 762/763 UNSAT rejected.
