UYSAXS — Hotpath verification

Historical measurements (pre-MROOY7). Function names below (SolveCoordinator::on_drain) are from the seam generation retired in MROOY7 (ADR-041); the numbers are the pre-stage-machine baselines they were measured against and are kept for comparison only.

Verified with two profiled runs. Final comparator run reached 50,311 registered paths in 902s (the prior >12s solve regime was ~48k paths), so the after-build is measured at or above the baseline path inventory.

Before / after (functions_timing, hotpath report)

Function

hp1 (600s, ~48k)

hp2 (300s)

final2 (902s, 50.3k)

Outcome

mixed.solve_path_inner

49.92%

25.95%

5.01%

no longer dominant

cl_solve.exact_solve_mixed_path_n

49.80%

25.93%

4.93%

cratered

cl_solve.build_crossing_table

not isolated

22.82%

2.00% (1980 calls)

projection-time only

cl_solve.active_set

4.67%

2.63%

4.97%

now the work, close to solve cost

arb_solve.rayon_solve p95

6.47s

3.40s

7.72s

< 12s

SolveCoordinator::on_drain p95

6.77s

3.90s

8.42s

< 12s

cl_solve.build_crossing_table calls dropped from 5,519 (hp2, per solve) to 1,980 for 50.3k paths — it only runs at projection/cache-fill time (once per cache miss, plus the word-profile builder’s own projection build), not once per solve.

Jaeger

Latest degenbot.arb.solve spans (lookback 45m, n=100):

  • p50 2.91s, p95 8.21s, max 12.37s (1 span > 12s out of 100)

p95 is back under the 12s block-time threshold in the comparable high-load window.

Build gates

  • cargo test -p degenbot-solvers -p degenbot-bot –manifest-path rust/Cargo.toml green.

  • cargo clippy -p degenbot-solvers -p degenbot-bot –all-targets green.

  • prepare pre-commit fmt/lint gates green on every commit.

Artifacts

  • Final report: logs/hp_cl_solve_final2.json

  • Predecessor report (600s): logs/hp_cl_solve_final.json

  • Baselines: logs/hp_cl_solve.json, logs/hp_cl_solve2.json

KGXFT7 — winner promotion A/B (fused-epoch memo, default-on cutover gate)

The cache-lab sweep (Z5NOPD, docs/cache-lab-report.md) named S1_fused_epoch the winner; KGXFT7 wired the promotion in behind the default-on cutover gate DEGENBOT_CL_PROJECTION_CACHE (0/off/false disables; resolved once at engine construction). The parity gates memo_off_all_cl_solve_is_byte_exact_v3_v4 and memo_off_mixed_v2_cl_solve_is_byte_exact prove byte-exact solver intake for V3+V4 all-CL and V2+CL mixed paths with the memo on (cache hits) or off (fresh builds).

Three profiled runs on mainnet (node host.containers.internal, block ~25.85M). GATE-ON and GATE-OFF used matched ~613s windows and HOTPATH_SHUTDOWN_MS=600000; final2 is the prior 902s baseline (50,311 paths, pre-trim inventory). Note this environment trims the live DB to 107 V2 / 208 V3 / 771 V4 pools → 16,396 registered paths, so absolute drain p95s do not reproduce final2’s; the A/B pair is the controlled comparison.

hotpath functions_timing:

Function

GATE-ON (613s)

GATE-OFF (634s)

final2 (902s)

cl_solve.build_crossing_table

0 calls (absent)

31,482 calls / 36.34%

1,980 calls / 2.00%

cl_solve.build_word_profiles

0 calls

0 calls*

0 calls*

mixed.solve_path_inner p95

23.82 ms

26.49 ms

11.52 ms

cl_solve.active_set p95

24.64 ms

27.92 ms

12.08 ms

SolveCoordinator::on_drain p95

14.77 s

17.10 s

8.42 s

arb_solve.rayon_solve p95

14.50 s

9.66 s

7.72 s

paths solved (mixed solve calls)

14,186 (13,266 CL)

7,530 (7,090 CL)

18,138 (16,628)

  • word-profile builds ride the crossing-table build counter; zero in both because build_cl_word_profiles shares the wrap row.

Jaeger degenbot.arb.solve span latencies (partitioned per run, n≈32):

window

p50

p95

max

GATE-ON

3.73 s

11.87 s (< 12s gate)

13.42 s

GATE-OFF

8.26 s

15.94 s

17.71 s

Conclusion. With the memo on, crossing-table rebuilds disappear from the solve phase entirely (0 vs 31,482 calls in the matched window — gate-off spent 36% of pump time rebuilding tables) and the bot solved ~1.9× more paths in the same window with byte-identical results. Solve-span p95 with the gate on sits under the 12s block-time threshold in this environment (11.87s vs 15.94s off); drain p95s are inventory-conditioned post-trim and higher in both A/B legs than the pre-trim 902s baseline. The flag is the cutover: DEGENBOT_CL_PROJECTION_CACHE=0 reinstates the rebuild cost.

Artifacts

  • GATE-ON: logs/hp_cl_solve_final_s1.json (611.25s)

  • GATE-OFF: logs/hp_cl_solve_gateoff2.json (613.08s; run 1 aborted ~84s at a sim-failure dispatch exit, logs/hp_cl_solve_gateoff.json)

  • Comparator: logs/hp_cl_solve_final2.json (902.30s)