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)