Part of #33. Foundation — non-negotiable; everything else is decoration on top of a broken measurement until this lands.
Problem
Latency is measured closed-loop and clocked from dequeue, not intended send (sender/worker.go:241). A closed-loop generator slows its own issue rate when the chain stalls, so it only measures survivors — numbers get better exactly when the SUT is failing. The rate limiter (worker.go:231 Allow() busy-spin) doesn't enforce a schedule. Percentiles come from a truncated 10k sample (stats/collector.go), so p99/max are unstable.
Approach
- Open-loop scheduler: issue at
t_i = t0 + i/λ independent of completion; workers become the send mechanism, not the rate governor.
- Latency from intended send time:
inclusion_ts − intended_send_ts.
- HdrHistogram for full-fidelity p99.9/max, mergeable across workers/shards.
schedule_lag_p99 verdict gate: void the run if lag > 10% of 1/λ (provisional; tune from calibration).
Acceptance criteria
- Constant-rate open-loop arrival; achieved-vs-offered both recorded.
- Latency uses intended-time; HdrHistogram replaces the sample slice.
- Runs that were generator-bound are flagged void, not reported as SUT results.
Design: https://github.com/sei-protocol/platform/blob/main/docs/designs/sei-load-workload-modeler.md
Part of #33. Foundation — non-negotiable; everything else is decoration on top of a broken measurement until this lands.
Problem
Latency is measured closed-loop and clocked from dequeue, not intended send (
sender/worker.go:241). A closed-loop generator slows its own issue rate when the chain stalls, so it only measures survivors — numbers get better exactly when the SUT is failing. The rate limiter (worker.go:231Allow()busy-spin) doesn't enforce a schedule. Percentiles come from a truncated 10k sample (stats/collector.go), so p99/max are unstable.Approach
t_i = t0 + i/λindependent of completion; workers become the send mechanism, not the rate governor.inclusion_ts − intended_send_ts.schedule_lag_p99verdict gate: void the run if lag > 10% of1/λ(provisional; tune from calibration).Acceptance criteria
Design: https://github.com/sei-protocol/platform/blob/main/docs/designs/sei-load-workload-modeler.md