campaign (scenariokind)
Scenariokind van de engine v0.40.0, familie Campagnes. Adviserend: analyse-uitvoer van een onderzoeks- en engineeringhulpmiddel, geen typegoedgekeurde navigatieapparatuur en geen veiligheidskritieke dienst. Elk label hier is dat van de engine of van de verificatiematrix; een kind is MODELLED tenzij de matrix anders zegt (hoe een label wordt verdiend: de sectie Evidence van de README).
Wat het doet#
Campaign: bestaande scenariokinds samengesteld tot één run, waarbij elk getal uit een echte run van het genoemde kind wordt gelezen. Vier secties, in willekeurige combinatie. PHASES: een geketende missie op één gedeelde tijdlijn -- elke fase draait één of meer scenario's (bijvoorbeeld jamming, dan spoofing, dan een klok in holdover met een traagheidsnavigatiesysteem dat ernaast doorvaart, dan een integriteitsalarm, dan herstel), hun uitvoer wordt via een voorinstelling per kind of via expliciete resultaatpaden in benoemde kanalen gelezen (klokfout tegenover zijn bewaakgrens, draaggolf-ruisdichtheidsverhouding tegenover de volgvloer, beschermingsniveau tegenover de alarmgrens, positiefout, volgende satellieten, alarmvlaggen) en met een zero-order hold herbemonsterd op een gemeenschappelijk raster, met fasegrenzen en gebeurtenissen; de toestand wordt doorgegeven door carry (een kanaal gaat door vanaf de eindwaarde van de vorige fase), handoff (een getal van een vorige fase wordt in het scenario van deze fase geschreven) en end_at (een fase eindigt op een tijdstip dat een run berekende, zoals de detectietijd van een spoofingmonitor). SWEEP: een raster over één tot drie gepunte scenariosleutels van elk kind (een geheeltallig segment indexeert een array van tabellen, zoals in system.2.sisre_m), met metrieken gelezen via resultaatpad en, bij meer dan één run, een geseede Monte-Carlo-ensemble bij elk knooppunt. MONTE_CARLO: realisatie k draait op base_seed + k; elke metriek rapporteert gemiddelde, standaardafwijking, nearest-rank-percentielen 5/50/95 en een bootstrap-betrouwbaarheidsinterval van 95% op het gemiddelde met vaste seed. COMPOSE: meerdere scenario's onder gedeelde waarden (het vermogen en de positie van één jammer geschreven in een maritieme en een wegontvanger), met een gecombineerde beste/slechtste samenvatting. Het resultaat draagt een campagnehash, een digest over elk lidresultaat en een units-vermelding voor elk uitgegeven getal; de interoperabiliteitsexports schrijven elk lidscenario dat geometrie heeft als eigen bestandsset. Compositie-identiteiten worden getest: een campagne met één fase reproduceert de zelfstandige run bit voor bit, een ensemble met vaste seed is byte-stabiel, en bij een klok met witte frequentieruis valt het ensemblegemiddelde binnen het gerapporteerde interval met een spreiding die overeenkomt met sqrt(q_wf * tau). MODELLED: de additieve carry en de zero-order hold zijn modelleringskeuzes, en elke fase draagt het label van het kind dat haar draaide.
Eén run van scenarios/campaign-sweep-jammer-power.toml vat samen als: campaign 46aa07cb58fb | Jammer power sweep: availability and J/S against transmit power | sweep van jamming: 13 knooppunten over [jammer_power] | 13 lidruns (MODELLED)
Invoer#
Uit het schema (kshana kinds --json):
- Vereiste velden: geen
- Optionele velden:
title,seed,timeline,phases,sweep,monte_carlo,compose
Het voorbeeld scenarios/campaign-sweep-jammer-power.toml stelt onder meer in:
| Veld | Waarde | Eenheid |
|---|---|---|
kind |
campaign | tekst |
seed |
20260928 | 1 |
sweep.axes[0].key |
jammer.power_dbw | tekst |
sweep.axes[0].name |
jammer_power | tekst |
sweep.axes[0].start |
-50 | niet vermeld |
sweep.axes[0].steps |
13 | niet vermeld |
sweep.axes[0].stop |
10 | niet vermeld |
sweep.axes[0].unit |
dBW | tekst |
sweep.metrics[0].name |
beschikbaarheid | tekst |
sweep.metrics[0].path |
fom.availability_under_jamming | tekst |
sweep.metrics[1].name |
mean_js | tekst |
sweep.metrics[1].path |
fom.mean_js_db | tekst |
Uitvoeren#
kshana scenarios/campaign-sweep-jammer-power.toml
22 meegeleverde scenario's gebruiken dit kind; de overige staan in scenarios/.
Wat het oplevert#
De scalaire resultaten van die run, met de eenheden die de engine noemt:
| Resultaat | Waarde | Eenheid |
|---|---|---|
evidence.id_rule |
de stabiele id van de matrixrij (de ID | tekst |
evidence.matrix |
docs/VERIFICATION-MATRIX.md | tekst |
evidence.tier |
PARTNER | tekst |
reproducibility.campaign_hash |
46aa07cb58fbfbd3784c2e1ef8d6070508ad5f5c | tekst |
reproducibility.run_digest |
a082a9466bcd5c8788a2a46373a47e418db1393c | tekst |
reproducibility.runs_total |
13 | aantal |
seed |
20260928 | 1 |
sweep.axes.jammer_power.key |
jammer.power_dbw | tekst |
sweep.axes.jammer_power.scale |
lin | tekst |
sweep.axes.jammer_power.unit |
dBW | tekst |
Resultaatlabel (van de engine): MODELLED samenstelling van bestaande scenariokinds. Elk getal wordt gelezen uit een echte run van het genoemde kind; de ketening (additieve carry van een kanaal over een fasegrens, zero-order hold op het tijdlijnraster, een fase die op een berekend tijdstip eindigt) is een modelleringskeuze, en elke fase draagt het labe
Bewijs#
MODELLED: de rijen van de verificatiematrix die dit type noemen.
- MODELLED iq::campaign::detect en de campagnerunner: een optionele [monitors]-tabel draait de IQ-monitors op elke cel in de enkele pass van de runner. Tests: iq_campaign.rs.
- MODELLED iq::campaign::detect (windows, roc) en iq::campaign::report::rocs: elke cel van een campagne met monitors bewaart, per alarmsoort en kanaal, het maximum van de eigen toetsstatistiek van de monitor over elk vermeld gebeurtenisvenster (positief) en over t
- MODELLED iq::labfit (campaign, cn0, iqfit, iqreport) en
[input] campaignopkshana iq labfit, Pythonkshana.iq_labfiten het MCP-labfit-hulpmiddel (alleen campagnemappen binnen zijn werkmap): leest een uitvoermap vankshana iq campaignop zijn Tests: iq_labfit_followup.rs. - MODELLED De fasen van het kind
campaign: elke fase draait één of meer scenario's van bestaande kinds via run_toml, leest hun uitvoer in benoemde kanalen (klokfout en bewaakgrens, gemiddelde effectieve draaggolf-ruisdichtheidsverhouding en volgvloer, v Tests: campaign_composition_reference.rs. - en 4 meer in de matrix.
De rijen die de run zelf heeft beproefd, met de onafhankelijke referentie die de matrix aan elk geeft (de openbare bronnen worden daar genoemd):
- MODELLED J/S-linkbudget uit geometrie, anti-jam-C/N₀, verlies van lock per satelliet. Onafhankelijke referentie (InternalConsistency): De linkbudgetvergelijking voor anti-jam-C/N₀ is gecontroleerd tegen een onafhankelijke numpy-herafleiding (deelt dezelfde gesloten vorm → InternalConsistency) plus een karakterisering van de C/N₀-degradatie in de echte JammerTest-2024. 0,30 round 2, geblokkeerd (blijft MODELLED): de gemeten JammerTest 2024-C/N0-daling tegenover een linkbudgetvoorspelling (vooraf vastgelegd 6a66994b, binnen 3 dB) is niet uitgevoerd omdat de antennepositie en -richting van F8.1 at
- MODELLED Deterministisch, scenario-gehasht, SBOM + gouden poorten voor meerdere platforms. Onafhankelijke referentie (ExternalDataset): formaatcontrole van de SBOM tegen het officiële CycloneDX 1,5 JSON Schema (+ geldige SPDX-identificatoren) — een externe gepubliceerde standaard, nul validatiefouten over de volledige afhankelijkheidsgraaf; het onderdeel determinisme van de FoM en byte-reproduceerbaarheid blijft een vastgepinde zelfconsistentiecontrole, dus de rij blijft MODELLED
- PARTNER Niet geleverd — Kshana modelleert signaalprestaties, geen payload- of antennehardware. Onafhankelijke referentie (NoneKind): geen: een discipline die van de partner is, met opzet zonder module en zonder test
- MODELLED De sweep van het kind
campaign(één tot drie gepunte sleutels van elk kind, op de aswaarden van de generieke sweep, optioneel een ensemble bij elk knooppunt) en de sectie monte_carlo. Onafhankelijke referentie (InternalConsistency): De gesloten vorm van de fase-randomwalk onder witte frequentieruis, variantie q_wf tau (NIST Technical Note 1337), voor de statistiekmachinerie, en byte-gelijkheid met de zelfstandige runs voor de seeding. Het controleert de ensemblerekenkunde op het eigen klokmodel van de engine, geen externe dataset
Beperkingen#
Wat het eigen rapport van de run zegt dat niet is gemodelleerd of niet extern getoetst is:
- MODELLED samenstelling van bestaande scenariokinds. Elk getal wordt gelezen uit een echte run van het genoemde kind; de ketening (additieve carry van een kanaal over een fasegrens, zero-order hold op het tijdlijnraster, een fase die op een berekend tijdstip eindigt) is een modelleringskeuze, en elke fase draagt het label van het kind dat haar voortbracht. (resultaat
label) - MODELLED: de additieve carry en de zero-order hold zijn modelleringskeuzes, en elke fase draagt het label van het kind dat haar draaide. (kindcatalogus (
kshana kinds --json)) - MODELLED: zoals het kind
jammingdat is. (opmerking in het scenariobestand, regel 14) - Jamming-veerkracht bij GNSS-uitval is MODELLED, niet extern getoetst: gecontroleerd tegen zijn eigen gesloten-vorm- of analytische identiteit — dat vangt transcriptie- en coëfficiëntfouten, maar is geen externe referentie. (verificatiematrix (docs/MODELLED-RATIONALE.md))
- Reproduceerbaarheid en softwarewaarborging is MODELLED, niet extern getoetst: een deelclaim wordt extern gecontroleerd, maar de hele mogelijkheid is samengesteld uit gemodelleerde onderdelen, dus de mogelijkheid blijft gemodelleerd. (verificatiematrix (docs/MODELLED-RATIONALE.md))
- Parametersweeps en geseede Monte-Carlo-ensembles over elk scenariokind is MODELLED, niet extern getoetst: gecontroleerd tegen zijn eigen gesloten-vorm- of analytische identiteit — dat vangt transcriptie- en coëfficiëntfouten, maar is geen externe referentie. (verificatiematrix (docs/MODELLED-RATIONALE.md))
Zie ook#
- Familiepagina: Campagnes
- Alle kinds: KINDS.md
- Onderwerppagina: LEO-PNT.md
- Onderwerppagina: RESILIENCE-CROSSWALK.md