Scenario kind pagesEdit on GitHubSource: docs/kinds/by-kind/conflict-resilience.md

conflict-resilience (scenario kind)

Scenario kind of the engine v0.38.0, family GPS-denied alternative PNT. Advisory: analysis output from a research and engineering tool, not type-approved navigation equipment and not a safety-of-life service. Every label here is the engine's or the verification matrix's; a kind is MODELLED unless the matrix says otherwise (how a label is earned: the README's Evidence section).

What it does#

MODELLED layered-PNT conflict resilience (P7): a contested-environment user fields several PNT layers (open-service GNSS, wideband GNSS, an authenticated constellation, an augmentation relay), each with a base availability, a 1σ accuracy and a per-vector denial vulnerability to the shared jamming/spoofing threat. An intensity-swept SEEDED Monte-Carlo denies each layer with probability clamp(vulnerability·intensity·vector_weight,0,1), fuses the survivors by the closed-form inverse-variance rule σ_fused=(Σ 1/σ_i²)^(−1/2), and reports the total-loss probability (all layers denied), the median fused error and per-layer usable/denial statistics vs intensity. The headline resilience ratio (single-layer vs layered total-loss probability) lands at ~7x under the INDEPENDENCE assumption; a one-factor Gaussian-copula correlated-denial sweep then shows that ~7x collapse toward 1 as denial correlation rises (correlation defeats layering). A prior-sensitivity block ranges the headline over the SOURCED vulnerability priors via the mcda tornado + a Dirichlet threat-effort re-allocation + percentile CIs. VALIDATED core: the Monte-Carlo total-loss converges to the closed-form independent product Π_i p_deny_i (within MC standard error at a fixed seed and large N); the inverse-variance fuse is a closed-form identity; at ρ=0 the copula reduces to the independent model and every ρ preserves each layer's marginal denial rate. MODELLED: the per-layer vulnerability/availability/accuracy magnitudes are sourced-but-Modelled inputs (JammerTest 2024, TEXBAT, EASA SIB, RTCA DO-229, LunaNet/IOAG — see conflict_threat_params), and the specific ~7x magnitude and the ratio-vs-correlation curve shape follow from that parameterisation. A §4.2 per-vector survival breakdown then resolves the shared RF threat into the four named vectors (jamming/spoofing/kinetic/cyber) and reports each vector's usable-PNT graceful-degradation curve S_v(x)=1-Prod_i(1-a_i(1-clamp(susceptibility_i,v·x,0,1))) — VALIDATED: the seeded per-layer Monte-Carlo converges to that closed form; jamming is the sharpest vector for the correlated-RF baseline and the RF-immune inertial layer is the decisive survivor. Not a certified navigation-availability product.

One run of scenarios/conflict-resilience.toml summarises as: conflict-resilience | 4 layers (0 baseline) | reference intensity 1.00 | resilience ratio closed-form 6.73x MC 6.19x (layered vs single-layer) | correlation defeats layering: ratio 7.50x @ rho 0.00 -> 1.21x @ rho 0.95 | prior CI [5.51-8.48]x | per-vector survival @ ref jam 26% spoof 80% kinetic 100% cyber 99% (sharpest jamming) | ~7x headline MODELLED, VALIDATED MC->closed-form / fuse-identity / copula-marginals / per-vector-survival

Inputs#

From the schema (kshana kinds --json):

  • Required fields: none
  • Optional fields: layers, intensity, correlation, trials, seed, primary_layer

The example scenarios/conflict-resilience.toml sets, among others:

Field Value Unit
correlation.values [0, 0.2, 0.4, 0.6, 0.8, 0.95] not stated
intensity.max 1 not stated
intensity.min 0 not stated
intensity.steps 11 not stated
kind conflict-resilience text
layers[0].availability 0.99 1
layers[0].name GNSS L1 C/A (open service) text
layers[0].sigma_m 4 m
layers[0].vector_profile.cyber 0.18 1
layers[0].vector_profile.jamming 0.98 1
layers[0].vector_profile.kinetic 0.12 1
layers[0].vector_profile.spoofing 0.85 1

Run it#

kshana scenarios/conflict-resilience.toml

What it gives#

The scalar results of that run, with the units the engine states:

Result Value Unit
correlation_sweep.min_ratio_over_grid 1.210978 1
correlation_sweep.reference_intensity 1 1
per_vector_survival.reference_intensity 1 1
per_vector_survival.sharpest_vector jamming text
primary_layer 0 count
prior_sensitivity.nominal_ratio 6.731912 1
prior_sensitivity.reference_intensity 1 1
prior_sensitivity.samples 2000 count
reference_intensity 1 1
resilience_ratio.closed_form_independent 6.731912 1

Result label (the engine's): MODELLED layered-PNT conflict resilience (P7). VALIDATED core: the Monte-Carlo total-loss probability converges to the closed-form independent product Pi_i p_deny_i (asserted within Monte-Carlo standard error at a fixed seed and large N); the inverse-variance position fuse sigma_fused = (sum_i 1/sig

The chart the engine writes for scenarios/conflict-resilience.toml, kind conflict-resilience

Evidence#

No matrix row names this kind by name; the label on its result is the engine's own, above.

The rows the run itself exercised, with the oracle the matrix gives each (the public sources are named there):

  • MODELLED Deterministic, scenario-hashed, SBOM + cross-platform golden gates. Oracle (ExternalDataset): SBOM conformance to the official CycloneDX 1.5 JSON Schema (+ valid SPDX identifiers) — an external published standard, zero validation errors over the full dependency graph; the FoM-determinism / byte-reproducibility part remains a pinned self-consistency check, so the row stays MODELLED
  • MODELLED Per-dimension sub-scores over Kshana's own seven resilience categories (not DHS terms), RethinkPNT RDRR functions and Yang criteria, each tagged Modelled with i. Oracle (InternalConsistency): Hand-derived per-metric formulas: inverse-Simpson diversity, weighted-mean composite, bounded/unbounded timeline durations, weakest-link Level ladder

Limitations#

What the run's own report says is not modelled or not validated:

  • MODELLED layered-PNT conflict resilience (P7). VALIDATED core: the Monte-Carlo total-loss probability converges to the closed-form independent product Pi_i p_deny_i (asserted within Monte-Carlo standard error at a fixed seed and large N); the inverse-variance position fuse sigma_fused = (sum_i 1/sigma_i^2)^(-1/2) is a closed-form identity; at correlation rho=0 the Gaussian copula reduces exactly to the independent mo (result label)
  • MODELLED layered-PNT conflict resilience (P7): a contested-environment user fields several PNT layers (open-service GNSS, wideband GNSS, an authenticated constellation, an augmentation relay), each with a base availability, a 1σ accuracy and a per-vector denial vulnerability to the shared jamming/spoofing threat. (kind catalogue (kshana kinds --json))
  • The headline resilience ratio (single-layer vs layered total-loss probability) lands at ~7x under the INDEPENDENCE assumption; a one-factor Gaussian-copula correlated-denial sweep then shows that ~7x collapse toward 1 as denial correlation rises (correlation defeats layering). (kind catalogue (kshana kinds --json))
  • MODELLED: the per-layer vulnerability/availability/accuracy magnitudes are sourced-but-Modelled inputs (JammerTest 2024, TEXBAT, EASA SIB, RTCA DO-229, LunaNet/IOAG — see conflict_threat_params), and the specific ~7x magnitude and the ratio-vs-correlation curve shape follow from that parameterisation. (kind catalogue (kshana kinds --json))
  • A contested-environment user fields four RF PNT layers that all ride the same band and therefore share the jamming/spoofing denial vector — the fragile, correlated case. The scenario reports: * total-loss probability vs threat intensity (Monte-Carlo vs the closed-form independent product it converges to), * the ~7x layered-vs-single-layer resilience ratio under the independence assumption, * how that ~7x collapses to (scenario file comment, lines 3 to 15)
  • Every per-layer magnitude is a MODELLED input with provenance; see src/conflict_threat_params.rs for the sourced [min, nominal, max] priors and the per-vector susceptibility profiles (JammerTest 2024, TEXBAT, EASA SIB 2022-02, RTCA DO-229, LunaNet/IOAG). Leaving layers out runs the same sourced four-layer baseline; it is written out here — including each layer's vector_profile — for transparency. (scenario file comment, lines 17 to 22)
  • Reproducibility & software assurance is MODELLED, not validated: a sub-claim is externally checked, but the whole capability composes modelled pieces, so the capability stays Modelled. (verification matrix (docs/MODELLED-RATIONALE.md))
  • PNT-resilience framework-aligned scoring is MODELLED, not validated: checked against its own closed-form / analytic identity — catches transcription and coefficient errors, but is not an external oracle. (verification matrix (docs/MODELLED-RATIONALE.md))

See also#