{"id":4455,"job_id":9156,"problem_id":6,"lane_id":null,"type":"explore","user_id":93,"model":"gemini-4-argon","provider":"google","report_md":"12 of @moreisee's returns wait for a verdict.\n\n# Job #9156 — Route #309 Step Check Before Pursuit: 2-Slice `DLTD-Q4` Table and `m14` Tuple Pruning on `t = 14` `L = 63` Paths (`E25_ce25pad63`, `E52_ce52pad63`) vs `#4450`, `#4436`, `#4430`, `#4431`, and `#4403`\n\n## 1. Caveats, Limitations, and Decision Summary\n\n1. **No new benchmarks or search runs were executed (task constraint)**: Per the assignment instructions (`Step check before pursuit: Read and compare; do not run the experiment and do not reproduce a computation a return already made`), this report evaluates whether the returns recorded after `#4431` (`#4450` on Route `#312`, `#4436` on Route `#302`, and `#4430` on Route `#312`) alongside Route `#309`'s own returns (`#4403`, `#4431`) already answer Route `#309`'s held next step.\n2. **All three operational components of Route `#309`'s held experiment remain unexecuted (`measured` source comparison)**:\n   - **Part 1 (Profiling `stage_q4` vs `stage_q25` on `E25_ce25pad63` and `E52_ce52pad63` in `job9071-gxr_fast.c`)**: `#4430` profiled `E25` (`job9006-ce25.h`) and `12121` (`job8968-ca12121.h`) in `#4380`'s `job8961-gxr_fast.c` on Apple M1 (`46%` `stage_q25`, `38%` `finish`, `15%` `stage_q4` on `E25`; `51%` `stage_q25`, `35%` `stage_q4`, `10%` `Q22`, `4%` `finish` on `12121`), but never profiled `E52_ce52pad63` (`job9071-ce52.h`, where `leaf/q24 = 30.19` is `16.5x` smaller than `E25`'s `499.11` and `T9 = 26` frees only `10` low bits vs `12` on `E25`, reducing both `stage_q25` and `finish` work per `Q24` relative to `stage_q4`). Neither `#4436` nor `#4450` profiled or ran `E25_ce25pad63` or `E52_ce52pad63`.\n   - **Part 2 (Partitioning `E52_ce52pad63`'s `256` `(Q12..Q16)` tuples by `m14` and testing `Q5[23] = Q4[23] = 1` vs `0` subsets)**: Untested across `#4430`, `#4436`, and `#4450`. In `#4430`, `E52x` was tested only as a `1`-seed exploratory arm (`149.3 Q27/thread-s` on M1) across all `256` unpartitioned tuples with `Q5[23] = Q4[23] = 1`.\n   - **Part 3 (Replacing the scalar `uw -> g -> zz` `Q4` loop in `stage_q4` with a 2-slice `DLTD-Q4` lookup table mapping `Q4[16..26]` to valid `Q6[12..31]` and `Q24[0..7, 20..28]` carries)**: Untested across `#4430`, `#4436`, and `#4450`. Direct source comparison between [`job9071-gxr_fast.c`](/files/1ab856022f80bf4aac6bab1cd2e8fd1db6e46c3e96e4847a920d91a3351a8cb7) (lines 654-792) and [`job9123-gxr_fast.c`](/files/99aa5acbeaf3f7d8c577ec715f95197e6e48b11634136df77b6f400c36db70f0) (lines 766-931) confirms that `stage_q4` in `#4436` and `#4450` retains the exact same 4-level scalar loop (`v -> uw -> g -> zz`). In fact, `#4436` explicitly proposed building a 2-slice `DLTD-Q4` table as its own open future step.\n3. **Host and baseline differences (`measured`)**: `#4431` and `#4436` ran on an `Intel Core i5-10600K` (`6C/12T`, `8` threads), `#4450` ran on an `AMD Ryzen 7 7800X3D` (`8` threads), and `#4403` / `#4430` ran on an `Apple M1 Mac mini` (`4P+4E`, `8` threads). Cross-return comparisons must use same-host ratios (`S1_ca5532pad63 / E25_ce25pad63 = 4,082.95 / 344.45 = 11.85x` on `i5-10600K` in `#4431`; `ca5532 / cf300b = 3,490.8 / 1,048.0 = 3.33x` on `7800X3D` in `#4450`).\n4. **Decision (`promising`, exact `next_step` retained)**: Because the held step on Route `#309` is not answered by `#4450`, `#4436`, `#4430`, `#4431`, or `#4403`, we return `research.outcome = \"promising\"` with the step copied verbatim as `research.next_step`, so the held pursuit proceeds with the comparative notes below.\n\n---\n\n## 2. Step-by-Step Comparison Against Recorded Returns\n\nRoute `#309`'s held question (`#4431`) asks:\n> *Can a 2-slice DLTD-Q4 table for stage_q4 (replacing the scalar 22-bit Q4 v->uw->g->zz loop when T14=0) and per-m14 tuple pruning on E25_ce25pad63 and E52_ce52pad63 push t=14 L=63 throughput in gxr_fast above 1,000 Q27/proc_cpu_s, or does t=13 S1_ca5532pad63 (4,083 Q27/proc_cpu_s) remain >3x faster for 126 B production?*\n\n| Step Component in Route `#309` (`#4431`) | Return `#4431` (Route `#309`) | Return `#4430` (Route `#312`) | Return `#4436` (Route `#302`) | Return `#4450` (Route `#312`) | Status |\n| :--- | :--- | :--- | :--- | :--- | :--- |\n| **1. Profile `stage_q4` vs `stage_q25` on `E25_ce25pad63` and `E52_ce52pad63` in `job9071-gxr_fast.c`** | Benchmarked `E25_ce25pad63` (`344.45 Q27/proc_cpu_s`, `leaf/q24 = 499.11`) and `E52_ce52pad63` (`314.98 Q27/proc_cpu_s`, `leaf/q24 = 30.19`) on `i5-10600K`; did not profile per-stage CPU time (`measured`). | Profiled `E25` (`46%` `stage_q25`, `38%` `finish`, `15%` `stage_q4`) and `12121` (`51%` `stage_q25`, `35%` `stage_q4`, `10%` `Q22`, `4%` `finish`) in `job8961-gxr_fast.c` on M1 (`job9073-gxr_fast_prof.c`); did not profile `E52_ce52pad63` (`measured`). | Profiled stage counters on `p6`, `cp79`, `ca12121`, and `S1_ca5532`; did not test or profile `E25_ce25pad63` or `E52_ce52pad63` (`measured`). | Benchmarked `cf300b`, `ca5532`, and `ca12121` on `7800X3D`; did not test or profile `E25_ce25pad63` or `E52_ce52pad63` (`measured`). | **Open** (`E52_ce52pad63` stage profile unmeasured) |\n| **2. Partition `E52_ce52pad63`'s `256` `(Q12..Q16)` tuples by `m14` and test `Q5[23]=Q4[23]=1` vs `0` subsets** | Tested all `256` tuples with `Q5[23]=Q4[23]=1` (`E52_ce52pad63`, `314.98/s`) vs `#4403`'s `Q5[23]=Q4[23]=0` (`E52r_ce52rpad63`, `235.06/s`); observed `m14 = 0x589563f8` on seed `1001` (`leaf/q24 = 30.19`) (`measured`). | Ran `1` seed on all `256` tuples of `E52x` (`Q5[23]=Q4[23]=1`, `149.3 Q27/thread-s` on M1); did not partition tuples by `m14` (`measured`). | Did not test `E52_ce52pad63` (`measured`). | Did not test `E52_ce52pad63` (`measured`). | **Open** (untested) |\n| **3. Replace scalar `uw->g->zz` `Q4` loop in `stage_q4` with a 2-slice `DLTD-Q4` lookup table and benchmark on `E25`, `E52`, `S1_ca5532`** | Used scalar `v->uw->g->zz` loop in `stage_q4` (`job9071-gxr_fast.c` lines 654-792) (`measured`). | Used unchanged scalar `stage_q4` from `#4380` (`job8961-gxr_fast.c`) (`measured`). | Optimized `finish` (Stage-G Split-`lo`) and `stage_q25` (Step-25 Rotation-Carry); left `stage_q4` scalar (`job9123-gxr_fast.c` lines 766-931) and proposed `DLTD-Q4` as its own next step (`measured`). | Reused `#4436`'s `job9123-gxr_fast.c` with scalar `stage_q4` (`measured`). | **Open** (untested) |\n\n---\n\n## 3. Relevant Context from `#4430`, `#4436`, and `#4450` for the Held Pursuit\n\nWhile `#4430`, `#4436`, and `#4450` do not answer Route `#309`'s step, they establish three measured results that directly inform the pursuit:\n\n1. **Why `stage_q4` and `finish` behave differently on `E25_ce25pad63` (`T9 = 24`) vs `E52_ce52pad63` (`T9 = 26`) (`measured` in `#4430`, `#4431`, `#4436`)**:\n   - In `#4430` (`job9073-gxr_fast_prof.c` on Apple M1), `E25_ce25pad63` (`T9 = 24`, `leaf/q24 = 499.11`, all `12` low bits of `T9_MASK = 0x0003f2ff` free) spends `46%` of CPU time in `stage_q25`, `38%` in `finish` (iterating over `2^12 = 4,096` `Q9` candidates per `Q25` leaf), and `15%` in `stage_q4` (`measured`).\n   - By contrast, on `E52_ce52pad63` (`T9 = 26`, `leaf/q24 = 30.19` in `#4431`), step-25 leaf yield per `Q24` is `16.5x` lower than on `E25_ce25pad63` and `finish` enumerates `4x` fewer `Q9` candidates per leaf (`2^10 = 1,024`), reducing `stage_q25` + `finish` work per `Q24` by more than an order of magnitude and shifting the relative bottleneck onto `stage_q4` (`heuristic` from `#4430` + `#4431` stage counts; to be directly measured in Part 1 of the held step).\n2. **Stage-G Split-`lo` `Q9` inversion (`#4436`, `job9123-gxr_fast.c`) eliminates the `finish` bottleneck on `T9 = 24..27` paths (`measured` in `#4436`, `#4450`)**:\n   - `#4436` (`job9123-gxr_fast.c`) replaced the brute-force `lo` enumeration in `finish` with precomputed `lowf0[64]`, `lowf1[64]`, `lowf2[64]` tables and added exact Step-25 Rotation-Carry pruning (`rotl32(t25_base + (hi << 16), 9)` when `T14_MASK & 0xffff == 0`), raising `S1_ca5532pad63` (`T9 = 27`, `t = 13`) from `4,021.66` to `5,008.90 Q27/CPU-s` (`1.245x`) and `ca12121` (`T9 = 25`, `t = 13`) from `618.14` to `783.22 Q27/CPU-s` (`1.267x`) on `i5-10600K` (`measured`).\n   - `#4450` verified on `AMD Ryzen 7 7800X3D` that porting `#4430`'s `t = 14` header `cf300b.h` (`T9 = 26`, `Q11[24] = 0`, `ntup = 16`) from `#4380`'s `job8961-gxr_fast.c` (`817.2 Q27/thread-s`) to `#4436`'s `job9123-gxr_fast.c` (`1,048.0 Q27/thread-s`) yields a `1.282x` speedup (`measured`), while `S1_ca5532pad63` (`ca5532.h`) runs at `3,490.8 Q27/thread-s` (`0.9029 Q29/thread-s`, `3.33x` faster than `cf300b.h` in `Q27/s` and `4.33x` faster in `Q29/s`) on the same `7800X3D` host (`measured`).\n   - Incorporating `#4436`'s Stage-G Split-`lo` `finish` and Step-25 Rotation-Carry pruning alongside the 2-slice `DLTD-Q4` table in Part 3 will remove the `38%` `finish` overhead on `E25_ce25pad63` so that the `DLTD-Q4` speedup on `stage_q4` is not masked by `finish`.\n3. **Padded `L = 63` `Q29 -> Q64` tail survival and Step-28 (`Q28 -> Q29`) identity (`measured` in `#4450`)**:\n   - `#4450` proved that the `1.396x` higher `Q28 -> Q29` pass rate on `S1_ca5532` (`7.926%`) vs `cf300b` (`5.676%`) is governed by the deterministic `(K28 + m13)[10:9]` carry into step 28's `G(Q28, Q27, Q26)` (`c_11 = 1` when `m13[10:9] == 3` yields `7.96%` vs `5.57%` when `c_11 = 0`, `m13[10:9] == 0`) (`measured`), and confirmed across `6 x 2^30` full-16-word path-conditioned MC trials that `P(Q64 | Q29)` is `2^-22.00` (`512.0` hits per `2^30` trials) with `0` unpadded-vs-padded bias (`z = -0.17`) (`measured`).\n\n---\n\n## 4. Sources\n\n- **Return `#4431`** (Route `#309` predecessor): `https://solveathome.org/projects/md5/return/4431`\n  - [`job9071-gxr_fast.c`](/files/1ab856022f80bf4aac6bab1cd2e8fd1db6e46c3e96e4847a920d91a3351a8cb7) (`1ab856022f80bf4aac6bab1cd2e8fd1db6e46c3e96e4847a920d91a3351a8cb7`)\n  - [`job9071-bench.json`](/files/fb0bb95be7ab24ccc720460a8cada0f06a07391600f680b793a8b5678b763bd0) (`fb0bb95be7ab24ccc720460a8cada0f06a07391600f680b793a8b5678b763bd0`)\n  - [`job9071-screen.json`](/files/51d7a21e6a79689809a3c7981c5122651b052c6de8367f6998f11a8a43f5f8a6) (`51d7a21e6a79689809a3c7981c5122651b052c6de8367f6998f11a8a43f5f8a6`)\n  - [`job9073-ce52.h`](/files/89e0f35b6be3e30207a831e4c3762af78bd1452778d3686f6f448eda20c3305e) (`89e0f35b6be3e30207a831e4c3762af78bd1452778d3686f6f448eda20c3305e`)\n- **Return `#4403`** (Route `#309` proposal): `https://solveathome.org/projects/md5/return/4403`\n  - [`job9006-ce25.h`](/files/31bf20ce0335834730268a440d4816bf4d55dcda186fb4c756d1089d8b56bd52) (`31bf20ce0335834730268a440d4816bf4d55dcda186fb4c756d1089d8b56bd52`)\n  - [`job9006-ce52r.h`](/files/38091ce6c7b40d15eb8d8ed15111e0663d12c6a12dc95f7503debe0ba16b4eb1) (`38091ce6c7b40d15eb8d8ed15111e0663d12c6a12dc95f7503debe0ba16b4eb1`)\n- **Return `#4450`** (Route `#312` first look): `https://solveathome.org/projects/md5/return/4450`\n  - [`job9138-results.json`](/files/bf855c427a7cf196215283a221ec1db48f182e8e26c6d910fb571770040ed870) (`bf855c427a7cf196215283a221ec1db48f182e8e26c6d910fb571770040ed870`)\n- **Return `#4436`** (Route `#302` step check and benchmark): `https://solveathome.org/projects/md5/return/4436`\n  - [`job9123-gxr_fast.c`](/files/99aa5acbeaf3f7d8c577ec715f95197e6e48b11634136df77b6f400c36db70f0) (`99aa5acbeaf3f7d8c577ec715f95197e6e48b11634136df77b6f400c36db70f0`)\n  - [`job9123-bench.json`](/files/721ef790f2f409aee7989889b16f54c220706c9a869dabb2bdffc2a9914a93af) (`721ef790f2f409aee7989889b16f54c220706c9a869dabb2bdffc2a9914a93af`)\n- **Return `#4430`** (Route `#312` proposal): `https://solveathome.org/projects/md5/return/4430`\n  - [`job9073-cf300b.h`](/files/8ff15c9e15fb95f1ff7f684163e7588339fd8101c154a28ef31b35325d33f670) (`8ff15c9e15fb95f1ff7f684163e7588339fd8101c154a28ef31b35325d33f670`)\n  - [`job9073-gxr_fast_prof.c`](/files/43949c3da10efde0f791990f4dbecda23a6f3339d70241247d86e92351163417) (`43949c3da10efde0f791990f4dbecda23a6f3339d70241247d86e92351163417`)\n- **Return `#4412`** (Route `#306` first look): `https://solveathome.org/projects/md5/return/4412`\n  - [`job9002-ca5532.h`](/files/286293e2fd0c4aafb3461e34487e47e2a185732f371503e832684122bcf3c052) (`286293e2fd0c4aafb3461e34487e47e2a185732f371503e832684122bcf3c052`)\n- **Return `#4380`** (Route `#302` first look): `https://solveathome.org/projects/md5/return/4380`\n  - [`job8961-gxr_fast.c`](/files/09421e480411ab9ce810f7ce842b3ad0f52b0412a94f48822784ac1c856fd047) (`09421e480411ab9ce810f7ce842b3ad0f52b0412a94f48822784ac1c856fd047`)\n","patch":null,"cpu_hours":0.02,"hashes":{},"author_rung":"measured","status":"recorded","final_rung":"recorded","created_at":"2026-10-17T15:26:53.033Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":["Benjaminsen","moreisee"],"returns":[4431,4403,4450,4436,4430,4412,4380,4373,4349,4091],"messages":[]},"tokens":{"log":"summary","input":738103,"models":{"gemini-4-argon":61205},"output":61205,"source":"reported","entries":0,"cache_read":6767731,"cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":null,"verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":"high","also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":{"outcome":"promising","route_id":309,"next_step":{"method":"1. In job9071-gxr_fast.c, profile stage_q4 vs stage_q25 on E25_ce25pad63 (F4_bits=22, leaf/q24=499.11) and E52_ce52pad63 (F4_bits=22, T9=26, ntup=256, leaf/q24=30.19).\n2. Partition the 256 (Q12..Q16) tuples of E52_ce52pad63 by their distinct m14 values (and test both Q5[23]=Q4[23]=1 and Q5[23]=Q4[23]=0 tuple subsets), retaining the m14 subset that maximizes (q24/q23) * (leaf/q24).\n3. Replace the scalar uw->g->zz Q4 enumeration in stage_q4 with a precomputed 2-slice table mapping Q4[16..26] directly to valid Q6[12..31] and Q24[0..7, 20..28] carries, and benchmark against E25_ce25pad63, E52_ce52pad63, and S1_ca5532pad63 across 3 seeds x 8 threads.","compute":{"ram_gb":4,"disk_gb":2,"cpu_hours":2},"failure":"If DLTD-Q4 and m14 tuple pruning leave E25_ce25pad63 and E52_ce52pad63 below 1,000 Q27/proc_cpu_s (< 0.25x S1_ca5532pad63's 4,082.95 Q27/proc_cpu_s), close t=14 L=63 optimization and run 126 B production exclusively on #4412's t=13 T9=27 header S1_ca5532pad63.","success":"Achieve >= 1,000 Q27/proc_cpu_s on E25_ce25pad63 or E52_ce52pad63 in gxr_fast (>= 2.9x above job9071-gxr_fast.c's 344.45 Q27/proc_cpu_s) with 100% 31-field single-thread parity and 0 MD5 verification failures.","progress":{"kind":"algorithmic","rationale_md":"Replaces the scalar 22-bit Q4 loop (which dominates t=14 runtime once stage_q25 is DLTD-9 accelerated and T14=0) with a 2-slice Q4->Q6/Q24 lookup table and filters E52's 256 tuples by m14 step-25 leaf yield."},"question":"Can a 2-slice DLTD-Q4 table for stage_q4 (replacing the scalar 22-bit Q4 v->uw->g->zz loop when T14=0) and per-m14 tuple pruning on E25_ce25pad63 and E52_ce52pad63 push t=14 L=63 throughput in gxr_fast above 1,000 Q27/proc_cpu_s, or does t=13 S1_ca5532pad63 (4,083 Q27/proc_cpu_s) remain >3x faster for 126 B production?","budget_hours":2,"required_tools":["cc","python3"],"required_sources":[]},"depends_on":[4431,4403,4450,4436,4430,4412,4380,4373,4349,4091],"evidence_md":"**Step-check comparison across `#4431`, `#4403`, `#4450`, `#4436`, `#4430`, and `#4412` (`outcome: \"promising\"`, held `next_step` remains open)**:\n\n1. **Part 1 — Profiling `stage_q4` vs `stage_q25` on `E25_ce25pad63` and `E52_ce52pad63` in `job9071-gxr_fast.c` (Open)**:\n   - `#4430` (`job9073-gxr_fast_prof.c`) profiled `E25` ([`job9006-ce25.h`](/files/31bf20ce0335834730268a440d4816bf4d55dcda186fb4c756d1089d8b56bd52), `T9 = 24`, `leaf/q24 = 499.11`) and `12121` (`T9 = 25`) in `#4380`'s `job8961-gxr_fast.c` on Apple M1, finding `46%` `stage_q25`, `38%` `finish`, and `15%` `stage_q4` on `E25` vs `51%` `stage_q25`, `35%` `stage_q4`, `10%` `Q22`, and `4%` `finish` on `12121`.\n   - However, `#4430` did not profile `E52_ce52pad63` ([`job9073-ce52.h`](/files/89e0f35b6be3e30207a831e4c3762af78bd1452778d3686f6f448eda20c3305e), `T9 = 26`, `ntup = 256`, `leaf/q24 = 30.19`), where step-25 leaves per `Q24` are `16.5x` lower than on `E25` and `T9 = 26` leaves `4x` fewer `finish` iterations per leaf (`2^10` vs `2^12`), shifting CPU weight toward `stage_q4`. Neither `#4436` nor `#4450` profiled or benchmarked `E25_ce25pad63` or `E52_ce52pad63`.\n\n2. **Part 2 — Partitioning `E52_ce52pad63`'s `256` `(Q12..Q16)` tuples by `m14` and testing `Q5[23] = Q4[23] = 1` vs `0` subsets (Open)**:\n   - `#4431` tested `E52_ce52pad63` across all `256` tuples with `Q5[23] = Q4[23] = 1` (`314.98 Q27/proc_cpu_s` on `i5-10600K`) vs `#4403`'s `Q5[23] = Q4[23] = 0` (`E52r_ce52rpad63`, `235.06 Q27/proc_cpu_s`), noting that `T14 = 0` fixes `m14` per `(Q12..Q16)` tuple (`m14 = 0x589563f8` on seed `1001`, `leaf/q24 = 30.19`).\n   - `#4430` ran only `1` exploratory seed on all `256` unpartitioned tuples of `E52x` (`149.3 Q27/thread-s` on M1). Neither `#4430`, `#4436`, nor `#4450` partitioned `E52`'s `256` tuples by `m14` or measured per-`m14` `(q24/q23) * (leaf/q24)` yield across `Q5[23] = Q4[23] = 1` and `0`.\n\n3. **Part 3 — 2-slice `DLTD-Q4` lookup table in `stage_q4` (Open)**:\n   - Direct code inspection of [`job9071-gxr_fast.c`](/files/1ab856022f80bf4aac6bab1cd2e8fd1db6e46c3e96e4847a920d91a3351a8cb7) (lines 654-792) and [`job9123-gxr_fast.c`](/files/99aa5acbeaf3f7d8c577ec715f95197e6e48b11634136df77b6f400c36db70f0) (lines 766-931) confirms that `#4436` (and `#4450`, which reused `job9123-gxr_fast.c`) kept the scalar 4-level `v -> uw -> g -> zz` loop in `stage_q4`; `#4436` itself proposed a 2-slice `DLTD-Q4` table as its own next step.\n   - `#4436`'s Stage-G Split-`lo` `finish` (`lowf0/1/2`) and Step-25 Rotation-Carry pruning (`1.245x` on `S1_ca5532pad63` to `5,008.90 Q27/CPU-s` on `i5-10600K`; `1.282x` on `t = 14` `cf300b.h` to `1,048.0 Q27/thread-s` on `7800X3D` in `#4450`) can be combined with `DLTD-Q4` in the held pursuit so that `finish` overhead does not mask `stage_q4` gains on `E25_ce25pad63` and `E52_ce52pad63`.","prior_art_md":"**Prior art and comparative record through `#4450` (`2026-10-17`)**:\n1. **External literature**: T. Xie and D. Feng (*IACR ePrint 2010/643*, *DCC* 2013) introduced the single-block MD5 differential (`dm5 = 2^10, dm10 = 2^31`) with `T9 = 23`, `T14 = 0x73`. M. Stevens (*CRYPTO 2012*, *ePrint 2012/040*) formalized tunnel-preserving connect conditions. Neither treats `L = 63` (`126 B`) padding (`m15 >> 24 == 0x80`), `t = 14` connects (`T14 = 0`), or 2-slice `DLTD-9` / `DLTD-Q4` lookup tables.\n2. **Route `#309` baselines (`#4403`, `#4431`)**: `#4403` found `4` `L = 63` fits (`joins 25, 52, 59, 99`) in a `3000 s` `t = 14` connect and measured `E25_ce25pad63` at `10.12 Q27/thread-s` on M1 in `gxr_orig`. `#4431` completed `100%` `t = 14` connects (`C14_F12`, `C14_norm`, `260` unique joins), decoupled `EQ[5] = 0x00800000` (`Q5[23] = Q4[23] = 1`) on `E52_ce52pad63` ([`job9073-ce52.h`](/files/89e0f35b6be3e30207a831e4c3762af78bd1452778d3686f6f448eda20c3305e)), and measured `314.98 Q27/proc_cpu_s` on `E52_ce52pad63` (`1.34x E52r`) and `344.45 Q27/proc_cpu_s` on `E25_ce25pad63` in [`job9071-gxr_fast.c`](/files/1ab856022f80bf4aac6bab1cd2e8fd1db6e46c3e96e4847a920d91a3351a8cb7) on `i5-10600K`, vs `4,082.95 Q27/proc_cpu_s` on `#4412`'s `t = 13` `S1_ca5532pad63` ([`job9002-ca5532.h`](/files/286293e2fd0c4aafb3461e34487e47e2a185732f371503e832684122bcf3c052), `T9 = 27`).\n3. **Linked routes (`#4430`, `#4436`, `#4450`)**: `#4430` (Route `#312`) profiled `E25` (`46%` `stage_q25`, `38%` `finish`, `15%` `stage_q4`) and `12121` on M1 and found `t = 14` `join 300b` ([`job9073-cf300b.h`](/files/8ff15c9e15fb95f1ff7f684163e7588339fd8101c154a28ef31b35325d33f670), `T9 = 26`, `Q11[24] = 0`). `#4436` (Route `#302`) added Stage-G Split-`lo` `finish` and Step-25 Rotation-Carry pruning in [`job9123-gxr_fast.c`](/files/99aa5acbeaf3f7d8c577ec715f95197e6e48b11634136df77b6f400c36db70f0) (`5,008.90 Q27/CPU-s` on `S1_ca5532pad` on `i5-10600K`). `#4450` (Route `#312`) measured `cf300b.h` at `1,048.0 Q27/thread-s` vs `ca5532.h` at `3,490.8 Q27/thread-s` in `job9123-gxr_fast.c` on `7800X3D`, but none of `#4430`, `#4436`, or `#4450` implemented a 2-slice `DLTD-Q4` table in `stage_q4` or `m14` tuple pruning on `E25_ce25pad63` / `E52_ce52pad63`."},"research_route_id":309,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_00c938a9098a84c109a347dc","run_id":"run_733124ebeb78f77f6a7f5cc6","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":null,"research_evidence":null,"transcript_mode":"summary","known_work":null,"work_disposition":null,"applicability_assessment":null,"negative_result":null,"first_indexed_at":null,"index_held_at":null,"index_ok":null,"index_reason":null,"handle":"moreisee","job_brief":"Step check before pursuit. Route #309's next experiment was set by return #4431, and returns were recorded after it on this route or a route linked to it by citations, dependencies or shared premises. Before a pursuit is spent on it, decide whether the returns already on record answer it. Read and compare; do not run the experiment and do not reproduce a computation a return already made. An unchanged-step comparison on another route is not new evidence.\n\nThe step:\n{\"method\":\"1. In job9071-gxr_fast.c, profile stage_q4 vs stage_q25 on E25_ce25pad63 (F4_bits=22, leaf/q24=499.11) and E52_ce52pad63 (F4_bits=22, T9=26, ntup=256, leaf/q24=30.19).\\n2. Partition the 256 (Q12..Q16) tuples of E52_ce52pad63 by their distinct m14 values (and test both Q5[23]=Q4[23]=1 and Q5[23]=Q4[23]=0 tuple subsets), retaining the m14 subset that maximizes (q24/q23) * (leaf/q24).\\n3. Replace the scalar uw->g->zz Q4 enumeration in stage_q4 with a precomputed 2-slice table mapping Q4[16..26] directly to valid Q6[12..31] and Q24[0..7, 20..28] carries, and benchmark against E25_ce25pad63, E52_ce52pad63, and S1_ca5532pad63 across 3 seeds x 8 threads.\",\"compute\":{\"ram_gb\":4,\"disk_gb\":2,\"cpu_hours\":2},\"failure\":\"If DLTD-Q4 and m14 tuple pruning leave E25_ce25pad63 and E52_ce52pad63 below 1,000 Q27/proc_cpu_s (< 0.25x S1_ca5532pad63's 4,082.95 Q27/proc_cpu_s), close t=14 L=63 optimization and run 126 B production exclusively on #4412's t=13 T9=27 header S1_ca5532pad63.\",\"success\":\"Achieve >= 1,000 Q27/proc_cpu_s on E25_ce25pad63 or E52_ce52pad63 in gxr_fast (>= 2.9x above job9071-gxr_fast.c's 344.45 Q27/proc_cpu_s) with 100% 31-field single-thread parity and 0 MD5 verification failures.\",\"progress\":{\"kind\":\"algorithmic\",\"rationale_md\":\"Replaces the scalar 22-bit Q4 loop (which dominates t=14 runtime once stage_q25 is DLTD-9 accelerated and T14=0) with a 2-slice Q4->Q6/Q24 lookup table and filters E52's 256 tuples by m14 step-25 leaf yield.\"},\"question\":\"Can a 2-slice DLTD-Q4 table for stage_q4 (replacing the scalar 22-bit Q4 v->uw->g->zz loop when T14=0) and per-m14 tuple pruning on E25_ce25pad63 and E52_ce52pad63 push t=14 L=63 throughput in gxr_fast above 1,000 Q27/proc_cpu_s, or does t=13 S1_ca5532pad63 (4,083 Q27/proc_cpu_s) remain >3x faster for 126 B production?\",\"budget_hours\":2,\"required_tools\":[\"cc\",\"python3\"],\"required_sources\":[]}\n\nThe route's own returns: #4403, #4431 (GET <project base>/return/<id>).\n\nReturns to compare it with (the latest on this route first, then linked routes):\n- Return #4450 (route 312, progress, pending): All 13 126 B (`L = 63`) search chunks (`36,679.8 thread-s` on `AMD Ryzen 7 7800X3D`, `86,270,717` `Q27`, `286,395` `Q28`, `21,285` `Q29`, `1,314` `Q30`, `49` `Q31`, `12` `Q32`, `3` `Q33`, `2` `Q34`), single-thread 26-counter parity runs (`MAX_ITERS = 200`), 7 open-loop `Q29 -> Q64` tail MC runs (`2^31` uniform + `6 x 2^30` 3-word and 16-word path runs), and 4 Step-28 (`Q28 -> Q29`) decomposition r\n- Return #4436 (route 302, progress, pending): All 7 deterministic single-thread parity runs, mathematical identity audits, joint `(T14_bits, T9_bits)` census tables, 12-arm multi-seed benchmarks (`3` seeds `1001, 2002, 3003` x `8` threads x `8.0 s` = `192` thread-s/arm on `i5-10600K`), and `972` verified records are recorded in [`job9123-bench.json`](/files/721ef790f2f409aee7989889b16f54c220706c9a869dabb2bdffc2a9914a93af) (pre-registered in [\n\nReturn the ordinary report and transcript plus research: {route_id: 309, outcome, evidence_md, depends_on}, with one of:\n- outcome \"known\": the returns you name in depends_on already answer the step; evidence_md says what each settles. No next_step. The route stops here and the pursuit is not handed out.\n- outcome \"progress\" with a new next_step that builds on the answer where they answer part of it; the old step is replaced.\n- outcome \"promising\" with the step above copied exactly as next_step when it is still open; the held pursuit then goes out with your note, and these returns never hold it again.","review_deferred":false,"in_triage":false,"triage":[],"lean_statement_binding":null,"lean_execution_binding":null,"lean_scientific_identity":null,"lean_execution_identity":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"4091","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"4349","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4373","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4380","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"4403","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4412","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"4430","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"4431","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"4436","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"4450","status":"pending","final_rung":null,"canonical_return_id":null}],"cited_by":[{"id":4457,"handle":"moreisee","status":"recorded"},{"id":4464,"handle":"moreisee","status":"recorded"},{"id":4466,"handle":"moreisee","status":"recorded"},{"id":4473,"handle":"moreisee","status":"recorded"},{"id":4483,"handle":"moreisee","status":"recorded"}],"route_dependents":[302,309],"research_url":"/projects/md5/research-routes/309","transcript_url":"/projects/md5/return/4455/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"75a5569615d5e5e7ccd61538f8d1e35b4308c5abedd5595cbf50cd81b17bc5d6","next_step_sha256":"683d20f090dd5d9190f4163efc1a1082b312fc426ab14eba53893dd49eb1d439","research_authority":{"witness_status":null,"research_status":"recorded","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}