ntpstats 2.17.0
Research bench v2, part 2: completes #29.
Added
-
Reference algorithms:
hull: Huygens-style. The max-margin line through the offset bounds θm ± δ/2 of a sliding
window, causal.kalman-combine: multi-server, ntpd-rs-style. Per-source Kalman filters, interval
intersection, inverse-variance mean.
With symmetric floors
hullis the most accurate single-server estimator on the presets.
kalman-combinerejects falsetickers and stepping servers. -
A reproducible benchmark on a replayed trace:
examples/scenarios/replay-chrony.tomlscores
every estimator on the delays of a real log under a simulated clock
(docs/examples/trace-benchmark.html). CI runs it. -
Stable API: delay traces, PTP chains and the simulator formats join
ntpstats.api
(load_trace,TracePath,ChainScenario,simulate_chain,read_omnetpp_vec,
inet_oscillatorand the rest). -
Web UI overhaul, still plain JavaScript with uPlot, no build step, offline.
- Five workspaces: Analyze, Compare (side by side, against a reference, N-cornered hat),
Comply (time error with TE/TEL and MTIE/TDEV charts; UTC audit with a verdict and an evidence
report), Lab (simulator, estimator bench, PTP boundary-clock chains) and Live. - A command palette (Ctrl K), keyboard shortcuts, a link for every page (
#/comply/audit), and
dataset sparklines, filter and rename. - Expandable charts, one-way delays on the Network page, and stale answers are never drawn.
- New API endpoints:
audit,trace,compare,hat,estimators,bench,chain, and the
audit.htmlexport. - A Playwright test drives every page in CI.
- Five workspaces: Analyze, Compare (side by side, against a reference, N-cornered hat),
-
Simulator interop (#29): OMNeT++
.vecresult files are read like logs (INET clock
timeChangedvectors become time error against simulation time; other vectors on request) and
written (convert --to omnetpp-vec). ns-3time valuetext is written withconvert --to ns3.
ntpstats noise --inetwrites INETRandomDriftOscillatorsettings that reproduce the fitted
random-walk FM, and lists what INET's oscillator cannot represent.