Experiments / E16
Python and ns-3 agreement
Are the Python and ns-3 implementations interchangeable within the registered scope?
Pre-registered hypothesis
Deterministic replay agrees per packet exactly. Stochastic run-level PDR, FPR and latency pass the registered equivalence tests. Failure to establish equivalence is not evidence of equivalence.
Frozen preregistration, identified and verified against this result’s manifest.
Verdict
Hypothesis supported within the replayed scope: every endpoint is equivalent, but by a common-random-numbers design that makes the test degenerate (all paired differences exactly 0), and no run lost a packet, so loss paths are not tested.
- All 16 endpoint rows pass the registered TOST over 4 cells (144 paired runs).
- Common-random-numbers design: both engines replay the same pre-generated send list and nothing else is random, so per-packet identity is expected. All 144 paired differences are exactly 0 (ratios exactly 1): every interval has zero width, and the p-values come from the zero-variance branch, not from a t distribution. The equivalence test is therefore degenerate; the preregistration declared this design.
- No packet was lost in any run on either engine, so PDR and false-positive equivalence sit at the boundary and do not test loss paths. The agreement covers delivery, queueing and deadline flags.
Every number in this verdict is computed at build time from the verified summary.csv.
C5 orbital inputs are REAL public data; C2 orbits and positions are MODELLED. Topology, probes, faults and network behaviour are MODELLED. Starlink’s operational routing is UNKNOWN; Starlink does not use T-CRH.
Charts and data
Download CSV · Download manifest
Source: results/E16/20261011T194240Z-confirmatory/summary.csv. SHA-256: d53a3c190a04e192242da86bdf267f82e8f48fcb03883e1b2faa5791e33a7ad2.
This first view shows the 4 rows of the initial selection, out of 16. With scripting, the page loads the same summary.csv offered for download and checks its SHA-256 against the manifest before other selections are enabled.
Dashed lines are the registered equivalence margins. The table also contains the TOST equivalence intervals and both one-sided p-values; the verdict uses the recorded TOST decision. A stored p-value of 0 is shown as below numerical resolution: here it comes from the zero-variance branch, because every paired difference is exactly 0.
Data table
Showing 1–4 of 4 matching rows. The download contains every original row and column.
| const | condition | endpoint | n | complete | estimate | lo90 | hi90 | lo95 | hi95 | p_lower | p_upper | lower_bound | upper_bound | equivalent | reason | undefined_runs | infinite_runs | scale |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C5 | none | pdr | 36 | True | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | < numerical resolution (zero-variance branch) | < numerical resolution (zero-variance branch) | -0.01 | 0.01 | True | undefined | 0 | 0 | ns3 minus python |
| C5 | fault | pdr | 36 | True | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | < numerical resolution (zero-variance branch) | < numerical resolution (zero-variance branch) | -0.01 | 0.01 | True | undefined | 0 | 0 | ns3 minus python |
| C2 | none | pdr | 36 | True | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | < numerical resolution (zero-variance branch) | < numerical resolution (zero-variance branch) | -0.01 | 0.01 | True | undefined | 0 | 0 | ns3 minus python |
| C2 | fault | pdr | 36 | True | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | < numerical resolution (zero-variance branch) | < numerical resolution (zero-variance branch) | -0.01 | 0.01 | True | undefined | 0 | 0 | ns3 minus python |
Where ChronoRoute loses
Every listed point disadvantage is retained, including privileged-oracle advantages. Where a registered paired comparison exists for the same cell, its paired Student-t 95% interval and Holm-adjusted p-value are quoted; otherwise marginal intervals alone do not establish a significant loss. Ties in the predicted stuck-loss reduction are listed as unsupported advantages.
No failed equivalence endpoint is recorded in this summary; this is a scoped agreement result, not a routing-performance win.
Limitations
- Zero processing delay, no background or jitter, stable planning, source insertion and continue policy; agreement is scoped to this model.
- Common-random-numbers design (declared in the preregistration): both engines replay the same pre-generated send list and nothing else is random, so per-packet identity is expected. The equivalence test is therefore degenerate: every paired difference is exactly 0, the intervals have zero width, and the p-values come from the zero-variance branch, not from a t distribution.
- No packet was lost in any run on either engine, so PDR and false-positive equivalence sit at the boundary and say nothing about loss paths. The agreement covers delivery, queueing and deadline flags.
- TOST uses the recorded equivalence intervals; ordinary confidence intervals are also shown.
- The allowed summary covers stochastic equivalence. Per-packet deterministic records are in the repository but are not a separate chart input here.
These pages use only summary.csv and manifest.json; each file is checked against the manifest SHA-256. They do not infer missing comparisons from figures, reports, raw traces or other result files.
How this was made
- Recorded producer
- E16 confirmatory agreement (1.0.0.dev0)
- Manifest commit
- 22fc9f11c89e2ef94e1a9c3f28f976c473a09f46; dirty: false
- Run
- e7c7f36769f7dc01
- Time
- 2026-10-11T19:42:40.684498Z to 2026-10-11T19:50:22.295575Z; 461.611063 seconds of recorded host wall time (REAL)
- Snapshot
- 20261010T1358Z-celestrak; SHA-256: c37e70812155c2d1d9eeb3e96681303c00c9fca91287939b21bf5313ce83aecd
- Seeds
- 0, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035
- Command
venv/bin/python -B experiments/E16/run.py --out results/E16/20261011T194240Z-confirmatory --workers 8
- Config SHA-256
0e615482412fc603e23401095b0e28edd557ef051ab4042d77264698b5a4b41a- Labels
- link_rate_and_queues: MODELLED
- orbital_elements: REAL
- routes_and_budgets: DERIVED
- traffic_probes: MODELLED
C2 override: C2 elements and positions MODELLED
- Manifest
chronoroute.manifest/1; 12 recorded output files (8086265 bytes); 1 recorded input hashes. Download the full manifest (4800 bytes, SHA-256
7dd07d901d8c138c29f561eceada560dc30b11ddd45f2c2e981ae8efa0e2b26c) for the configuration, versions, host and every input and output hash.summary.csv: 1882 bytes, SHA-256d53a3c190a04e192242da86bdf267f82e8f48fcb03883e1b2faa5791e33a7ad2- Versions: chronoroute 1.0.0.dev0; matplotlib 3.11.1; networkx 3.6.1; numpy 2.5.3; python 3.14.4; sgp4 2.27
- Host (REAL): cpu_model: 13th Gen Intel(R) Core(TM) i9-13900H; logical_cores: 20; machine: x86_64; platform: Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43; ram_bytes: 8131358720
For collected results, the manifest commit identifies the collector. Input hashes preserve the producer chain in the downloaded manifest; this page does not load those additional files.