Research · published whether it suits us or not

Preregistration — Stage 1c

What prompted it

Stage 1b concluded that a deadline-miss rate does not out-predict conventional loss. A challenge to that conclusion was raised on mechanistic grounds: late packets must damage netcode in proportion to how late they are, so a metric that thresholds lateness into a binary count is discarding the quantity that does the harm.

An event-level probe (95,733 render frames, 40 sessions, adaptive client) supports the challenge and not the earlier operationalisation:

staleness of the client's informationframesmedian errorp95 error
0 (interpolating normally)82,5710.001 m0.002 m
10–25 ms2,3690.009 m0.019 m
25–50 ms7500.022 m0.066 m
50–100 ms3790.097 m0.267 m
100–200 ms4380.356 m0.987 m
>200 ms5911.961 m11.220 m

Spearman(staleness, error) among stale frames = +0.950. The mechanism is not merely real, it is nearly deterministic, and it is graded in magnitude over roughly three orders of magnitude. 86% of frames take no damage at all.

That is a defect in the predictor, not in the hypothesis. A miss rate counts the tail; the damage is dominated by how far into the tail.

Hypothesis, stated before the run

H2. A magnitude-weighted lateness statistic — how late, not how often — predicts damage better than conventional packet loss rate and mean one-way delay, conditionally on mean delay.

Prediction recorded in advance: a high percentile of excess-over-deadline will be the strongest predictor, because the event-level table shows damage concentrated in the extreme tail. If instead the mean excess wins, the harm is more evenly spread than the probe suggests, and that would itself be informative.

New predictors

Excess over deadline D for packet i, in ms, with non-arrivals charged at the observation timeout T_obs = 3000 ms, consistently with the product's own model:

excess_i = 0                       if pdv_i <= D
         = pdv_i - D               if the packet arrived late
         = T_obs - D               if it never arrived
idpredictor
M1late_excess_mean
M2late_excess_p95
M3late_excess_p99
M4late_excess_max
B1burst_max_ms — longest run of consecutive non-arrivals, in ms
B2burst_longest_pkts
B3holes_per_min

B1–B3 are added because the PRD makes burst structure first-class and the Stage 1/1b metric bank omitted it. That was an oversight in the earlier stages and is recorded as such.

Design change

The Stage 1/1b grid under-sampled the regime the product is actually about: low mean delay with rare, severe lateness. A third jitter_kind is added, spike — a low baseline with infrequent large excursions — so that lateness magnitude and mean delay can dissociate. Cells become 4 loss × 4 delay × 2 burst × 3 jitter = 96, at 14 replicates = 1,344 sessions.

Analysis

Unchanged from Stage 1b: Spearman primary, partial Spearman controlling for owd_mean as the decisive test, 10,000 paired bootstraps, Holm across alternatives.

Falsification

H2 is not supported if the 95% CI for |partial rho(best magnitude metric)| − |partial rho(loss_pct)| includes zero or lies below it.

Deviation, recorded before the run

An instrument check on the spike regime (no outcome inspected) showed that charging non-arrivals at T_obs = 3000 ms makes late_excess_p95 and late_excess_p99 saturate to that charge whenever loss exceeds 1%, at which point they measure loss rather than lateness magnitude. Arrivals-only variants (late_excess_arr_mean, _p95, _p99) are therefore added as additional pre-specified predictors. Both families are reported. The falsification criterion is unchanged and now reads "best magnitude metric" across both families.

Harness, seeds and raw JSON live beside these documents in the repository. Every figure here comes from simulated impairment; no human subjects were involved and no perception claim is made. Back to Bullettime.