ClickJitter
Phase 5b: detector timing jitter, window loss and bin error apart
8/8 passed in 1684ms
| Test | What it does | Result |
|---|---|---|
test_bin_error_law | Contiguous bins lose nothing, so bin leak is an error: QBER is half the leak and contrast falls to 1 - leak. | ✅ pass |
test_gaussian_has_no_tail | A Gaussian core alone gives window loss and no bin error, the leak at a 79 ps core in a 100 ps window being exactly 0.0 by the 9-sigma cut, the true 29-sigma tail 7.2e-175. | ✅ pass |
test_grain_invariance | The convolution reads neighbours across chunk boundaries by absolute index, so the record is chunk-invariant. | ✅ pass |
test_jitter_off | Window and tail time set with zero jitter and tail weight reproduce a jitter-free run bit for bit, at zero loss and leak. | ✅ pass |
test_rejects_nonsense | Refused by name: a window wider than the symbol period, a tail weight with no time constant or above 1, a negative jitter, and a tail spanning too many slots. | ✅ pass |
test_split_closed_form | The engine's Gauss-Legendre panels agree to 1e-12 with weights from math.erf and the exponential's antiderivative, out to slots of order | ✅ pass |
test_tail_raises_qber | At a realistic core width only the diffusion tail reaches the next slot, and growing it raises QBER and window loss separately. | ✅ pass |
test_window_is_a_loss | A gated Gaussian core only loses counts: the rate falls by the reported window loss to an eta-scaled run's, QBER unmoved. | ✅ pass |