Jammertest-poengsetting: den publiserte planen som planlagt referanse
kshana jammertest import leser testkatalogen og sendeplanen fra Jammertest og gjør ett testområdes tidsluker om til [[events]] for mottakertillit. kshana jammertest score kjører en mottakerlogg gjennom tillitsmonitorene og poengsetter den mot den tidsplanen, test for test. Hvert resultat er MODELLED: tidsplanen sier når en test var planlagt, ikke når en sender var på.
Veiledende programvare, ikke typegodkjent navigasjonsutstyr (IEC 61108, IEC 61162): operatøren er fortsatt ansvarlig for fartøyets navigasjon. Ingenting her er støttet av Statens vegvesen (Norwegian Public Roads Administration), Nkom eller arrangørene av hendelsen; ingen avtale med dem hevdes.
Planen og katalogen#
Kilde: repositoriet NPRA/jammertest-plan fra Statens vegvesen (Norwegian Public Roads Administration) (https://github.com/NPRA/jammertest-plan), MIT-lisens (opphavsrett 2024 Norwegian Public Roads Administration; lisensteksten er kontrollert i xval/jammertest-plan/MANIFEST.tsv). Filene hentes, medleveres aldri:
xval/jammertest-plan/fetch.sh <dest-dir-outside-the-repo>
Den laster ned katalogene og planfilene for 2025 ved den festede commit-en 75c0b2ceea10e470c3799d14a8ef18842d8375a7 og avviser enhver fil der SHA-256 avviker fra xval/jammertest-plan/MANIFEST.tsv.
En katalogtest har en id med punktum, type.group.test (for eksempel 1.2.5: type 1 jamming, gruppe 2, test 5). Planen lister, per testområde og tidsluke, hvilken id som er planlagt. Typene 1 (jamming), 2 (spoofing) og 3 (meaconing) sender; type 0 (orienteringer, karensperiode, booking og ad hoc-tidsluker) sender ikke og hoppes over. Plantidene er lokal veggklokketid; --local-offset-h (standard 2, CEST) sier hvor langt de er fra UTC. Planfilene har et felt for testkontakt med en persons navn: det leses aldri, og ingenting avledet av det skrives.
Import#
kshana jammertest import --catalog testcatalog2025.json \
--plan plan-tuesday-2025-09-16.json --plan plan-wednesday-2025-09-17.json \
--location 1 --log receiver.ubx --format ubx --out events.toml
--log-start <UTC time> erstatter --log/--format når loggen ikke oppgir starten sin. Utdataene er TOML-[[events]] som skal føyes til et scenario for mottakertillit; hver etikett begynner med scheduled truth: og har utgaveåret, katalog-id-en og området, og hodet registrerer SHA-256 for hver kildefil. --attack-log <scenario.json> leser i stedet hendelsesreferansen for én mappe i datasettet JammerTest 2024 (dets attack_log, tidsstempler forskjøvet med --time-shift-h, standard -2: de sier Z men er lokal tid).
Poengsetting#
kshana jammertest score session.toml --catalog testcatalog2025.json --plan plan-....json \
--location 1 [--json] [--key signer.key --out pack/]
session.toml er et scenario for mottakertillit ([log] format/path, valgfri [monitors], [compare]). Dets egne [[events]] erstattes av den importerte tidsplanen. Per planlagt test:
| felt | betydning |
|---|---|
outcome |
detected (en alarm innenfor compare.detect_tol_s, standard 10 s, fra planlagt start), late (senere, innenfor tidsluken), missed (ingen), not-evaluable |
latency_s |
første alarm minus planlagt start |
time_to_recover_s |
fra slutten av tidsluken til starten av den første strekningen på minst --recover-hold-s (10 s) uten alarm, før neste test |
En test kan bare poengsettes hvis den starter minst calibration_s + guard_s etter at loggen begynte; en logg med en tidligere test flagges baseline_contaminated (grunnlinjen kan være dannet under interferens). Falske alarmer er alarmerende epoker etter kalibreringen utenfor hver tidsluke utvidet med --guard-s (60 s) før og etter (eller etter gjenopprettingspunktet), talt som epoker og som kjøringer, med kjøringer per time ren tid. Med --key og --out skrives kjøringen som en signert bevispakke (docs/EVIDENCE-PACKS.md): resultatkortet og den importerte tidsplanen ligger inne i config.json, altså innenfor hashkjeden og signaturen. En pakke er en teknisk oppføring, ikke en juridisk vurdering.
Hva et resultat ikke sier#
- En planlagt tidsluke er ikke en registrering av sendingen. En sender kan ha startet sent, stoppet tidlig eller aldri vært på; en «missed» test kan være en test som ikke sendte, og en ventetid regnes fra planlagt start.
- En «ren» epoke er «utenfor de planlagte tidslukene», ikke «bevist fri for interferens».
- Deteksjon med monitorer i måledomenet sier ingenting om å oppdage en koherent spoofer med lav effekt.
- Ingen ekstern uavhengig referanse oppgir de sanne sendetidene, så ingenting her er VALIDATED.
Kjøringen på datasettet for 2024 (forhåndsregistrert)#
xval/jammertest-score/PREREGISTRATION.md fastsatte populasjonen, definisjonene og tersklene før den første poengsatte kjøringen; xval/jammertest-score/RESULTS.md registrerer den kjøringen. Resultat: den registrerte regelen om minstedata sviktet (4 poengsettbare jamming-vinduer fra 4 av de 12 .ubx-mappene: 5 mapper ble droppet av grunnlinjeregelen og 3 UBX-logger oppgir starten bare som GPS-ukestid), så ingen terskel kan vurderes. Ingenting ble løsnet på eller kjørt på nytt. v2 (PREREGISTRATION-v2.md, innsjekket alene før sin kjøring; bare databehandling, de samme tersklene og regelen om minstedata) plasserte loggene med bare GPS-tid fra mappedatoen, poengsatte de 12 mappene med bare CSV og brukte en økt for bevegelig plattform for de bevegelige roverne. Resultat (RESULTS-v2.md): 14 av 24 mapper beholdt, men bare 7 poengsettbare jamming-vinduer, så regelen om minstedata sviktet igjen og ingen terskel kan vurderes. Resultatet fra v1 er uendret. Bare beskrivende: 3 av 7 jamming-vinduer ga alarm innenfor 10 s, 4 senere, ingen bommet; median ventetid 18 s; alarmrate i ren tid 0,089. Den bindende begrensningen er nå grunnlinjeregelen, som fjerner 10 mapper; en ny registrering ville trenge en annen regel for tidlige vinduer. Datasettet (JammerTest 2024, Zenodo 15911589, GPL-3.0-or-later) hentes av xval/oracles/setup.sh og medleveres aldri; testen tests/jammertest_score_2024.rs fester den registrerte kjøringen når KSHANA_JAMMERTEST_DIR peker på det utpakkede datasettet.
NMEA-datasettet fra SimulaMet for 2025#
NMEA-avledet datasett for SimulaMet Jammertest 2025 (IEEE DataPort, DOI 10.21227/a7v4-xw11) er ikke tilpasset i 0,38. Siden oppgir ingen lisens og sier «This dataset requires an IEEE DataPort Subscription to access»: vilkårene tillater ikke tydelig videredistribusjon eller automatisk henting, så ingen adapter eller hentescript er skrevet. Bruk krever eierens beslutning og helst forfatternes skriftlige samtykke.
Flater#
CLI, Rust (kshana::jammertest), Python (jammertest_import, jammertest_score), WebAssembly (de samme navnene), MCP-verktøy med de samme navnene, og kommandoen /kshana-jammertest og ferdigheten jammertest. Den signerte pakken finnes bare på kommandolinjen (den trenger en signeringsnøkkel). Se docs/SURFACES.md.