# Joint sensor-fusion PNT: a single Kalman filter is the navigator, fusing the
# clock and inertial states and aided by optical ISL time transfer, rather than
# composing independent predictors. GNSS denied 1.8 h.
#
# The filter learns the clock frequency offset and the platform velocity while
# GNSS is available, then coasts through the outage propagating those estimates;
# its joint covariance gives the joint integrity. To keep the filter's process
# noise consistent with truth, the accelerometers here are noise-driven (bias set
# to zero) — augmented-state estimation of constant biases is future work.
# Vendor-neutral; clock and noise parameters are public/cited or illustrative.
kind = "fusion"
seed = 42
timing_spec_ns = 20.0
position_spec_m = 100.0

[time]
step_s = 10.0
duration_s = 7200.0

[gnss]
windows = [
  { t0 = 0.0,   t1 = 600.0,  state = "nominal" },
  { t0 = 600.0, t1 = 7200.0, state = "denied" },
]

[resync]
enabled = true
interval_s = 1800.0
sigma_j_s = 1.0e-12

[clock_quantum]
id = "optical-sr-lattice"
provenance = "Strontium optical lattice clock, space-oriented goal sigma_y(1s)=1e-15 (arXiv:1503.08457)"
y0 = 5.0e-17
q_wf = 1.0e-30
q_rw = 0.0
drift = 0.0

[clock_classical]
id = "csac-sa45s"
provenance = "Microchip SA65 / SA.45s CSAC datasheet sigma_y(1s)=3e-10"
y0 = 5.0e-10
q_wf = 9.0e-20
q_rw = 0.0
drift = 0.0

[accel_quantum]
id = "cold-atom-quat"
provenance = "Cold-atom accelerometer, low long-tau velocity-random-walk; illustrative noise-driven value (bias zeroed for filter consistency)"
bias = 0.0
q_va = 1.0e-9

[accel_classical]
id = "nav-grade-quartz"
provenance = "Navigation-grade quartz accelerometer; illustrative noise-driven value (bias zeroed for filter consistency)"
bias = 0.0
q_va = 1.0e-7
