Preregistration — Stage 1c
- Written: 26 August 2026, after the event-level probe below and before Stage 1c was run.
- Fresh seed:
20260828. Stages 1 and 1b used 20260826 / 20260827.
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 information | frames | median error | p95 error |
|---|---|---|---|
| 0 (interpolating normally) | 82,571 | 0.001 m | 0.002 m |
| 10–25 ms | 2,369 | 0.009 m | 0.019 m |
| 25–50 ms | 750 | 0.022 m | 0.066 m |
| 50–100 ms | 379 | 0.097 m | 0.267 m |
| 100–200 ms | 438 | 0.356 m | 0.987 m |
| >200 ms | 591 | 1.961 m | 11.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
| id | predictor |
|---|---|
| M1 | late_excess_mean |
| M2 | late_excess_p95 |
| M3 | late_excess_p99 |
| M4 | late_excess_max |
| B1 | burst_max_ms — longest run of consecutive non-arrivals, in ms |
| B2 | burst_longest_pkts |
| B3 | holes_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.