Påstande mod virkelighed — register over overdrevne påstande
En uafhængig revision af en tidligere Kshana-version katalogiserede fjorten overdrevne påstande (OC-0…OC-13): steder, hvor en offentlig flade (README, playground, labels for kvalitetsmål (FoM), scenariepakker) beskrev en funktion stærkere, end koden leverede. Denne side er lukningsregisteret: hver række angiver den oprindelige overdrevne påstand, hvordan den blev løst, og belægget. To slags løsninger forekommer:
- Påstand trukket tilbage — formuleringen blev rettet, så den passer til koden (ærlig omformulering, ingen ændring af funktion). "Nul kode = nul påstand."
- Erstattet — den reelle funktion blev efterfølgende bygget og testet, så den stærke påstand blev korrekt.
En regressionsvagt (tests/no_overclaims.rs) gennemsøger de aktuelle offentlige flader (README.md, docs/CAPABILITY.md, docs/GLOSSARY.md, web/capabilities.json, web/index.html, web/README.md og forsiderne for crates.io, PyPI (Python Package Index) og npm README.crates.md, README.pypi.md, README.npm.md) ved hver CI-kørsel (continuous integration) og fejler, hvis en af de udgåede nøgne formuleringer af overdrevne påstande dukker op igen uden forbehold — så en række ikke i det skjulte kan falde tilbage fra GREEN.
Alle fjorten rækker er GREEN.
| OC (overdreven påstand) | Oprindelig overdreven påstand | Løsning | Status | Evidens |
|---|---|---|---|---|
| OC-0 | "fælles Kalman-fusionsestimator" antydede ét filter med krydskovarians; koden kørte to uafhængige estimatorer | Erstattet — et ægte Kalman-filter for ur+position koblet med krydskovarians blev bygget | 🟢 | src/fusion/coupled.rs (7 tests, herunder et ensemble på 100 forsøg koblet mod afkoblet, der kræver, at den koblede positions-RMS (root mean square) er under 0,6× den afkoblede, og at det koblede filter vinder i mindst 90 af de 100 forsøg); CAPABILITY "Sensor fusion" → fuld |
| OC-1 | "urstøttet RAIM til spoof-detektering (receiver autonomous integrity monitoring)" antydede en RAIM-detektor med flere satellitter | Påstand trukket tilbage → Erstattet — omformuleret som en grænse for detekterbarhed af spoofing ud fra urstabilitet; den rigtige RAIM/ARAIM (HPL/VPL (HPL: vandret beskyttelsesniveau; VPL: lodret beskyttelsesniveau)) kom derefter | 🟢 | src/raim.rs (30 tests — snapshot + solution-separation-ARAIM, HPL/VPL, FDE (fejldetektering og -udelukkelse), Stanford-diagrammer); docs/INTEGRITY.md |
| OC-2 | "jamming-demonstrator" uden nogen jamming-kode bag sig | Erstattet — en jamming-model med link-budget J/S → effektiv C/N₀ → tab af lås blev bygget | 🟢 | src/jamming.rs (10 tests); README-rækken "Resilience" |
| OC-3 | "Fuld IMU-støjmodel med Allan-varians på en IMU-triade" — modellen var énakset | Påstand trukket tilbage → Erstattet — omformuleret som et 1-DOF-fejlbudget (DOF: frihedsgrad); en treaksed strapdown-INS (inertial navigationssystem) blev derefter leveret | 🟢 | src/inertial treaksed strapdown (kvaternion-attitude, NED-mekanisering (nord-øst-ned), coning/sculling); ROADMAP "Inertial" |
| OC-4 | "Hybrid PNT-integration (positionering, navigation og tidssynkronisering)" antydede et koblet GNSS/INS-filter (GNSS: globalt satellitnavigationssystem); det var et fejlbudget for dødregning | Påstand trukket tilbage → Erstattet — omformuleret som dødregning med en konfigurerbar genopnåelse af lås; ægte tæt koblet GNSS/INS-fusion blev derefter leveret | 🟢 | src/fusion/tightly_coupled17.rs (UKF med 17 tilstande (unscented Kalman-filter) med dødregning med kvante-CAI (CAI: koldatom-interferometer)); CAPABILITY "Sensor fusion" → fuld |
| OC-5 | "valideret ~2%" antydede en stram, håndhævet grænse | Påstand trukket tilbage — VALIDATION.md angiver den håndhævede grænse (20–25%, midlet over seeds); "~2%" betegnede en typisk observation, ikke grænsen |
🟢 | docs/VALIDATION.md, overskriften "On tolerances" |
| OC-6 | "deterministisk på tværs af platforme" uden committet belæg | Påstand trukket tilbage — værktøjskæden pinnet til en eksakt udgivelse; golden-hashes pr. scenarie committet med en reproducerbarhedsgate. (Bit-identisk på tværs af OS/arkitektur (OS: operativsystem) er stadig et åbent punkt, angivet ærligt.) | 🟢 | rust-toolchain.toml (kanal 1.93.0); tests/golden.rs (numeriske værdier til 1e-6); tests/cross_platform_golden.rs (hash af hvert resultats inputfingeraftryk og form, kørt på CI-matricen for Linux, macOS og Windows); scripts/check-reproducible.sh |
| OC-7 | "hybrid kvante-klassisk PNT-simulator" antydede kvantefysik fra første principper | Påstand trukket tilbage → Erstattet — omformuleret som en simulator af PNT-robusthed, der bruger ydelsesmodeller for kvantesensorer; derefter kom Mach–Zehnder-CAI-fysik fra første principper | 🟢 | src/inertial/quantum_imu.rs (26 tests — Mach–Zehnder-fase, projektionsstøj 1/√(N·C²·T²), vibrationsoverføringsfunktion, systematiske effekter fra Coriolis + AC-Stark (AC: vekselstrøm)); docs/QUANTUM.md |
| OC-8 | Kvalitetsmålet "Integrity Performance" antydede luftfartsintegritet med HPL/VPL/RAIM | Påstand trukket tilbage + Erstattet (i lag) — kvalitetsmålet pr. kørsel for scenariet er ærligt betegnet filterets selvkonsistens (ikke luftfartsintegritet); den rigtige ARAIM HPL/VPL vises separat, så de to aldrig blandes sammen | 🟢 | src/fom.rs:80 (integrity: selvkonsistens, med forbehold); src/raim.rs + docs/INTEGRITY.md (ægte ARAIM) |
| OC-9 | Kvalitetsmålet Sikkerhed præsenteret som altid meningsfuldt, også uden angreb | Påstand trukket tilbage — kvalitetsmålet Sikkerhed (1 − P_md) er rammesat inden for spoof-detektorens kontekst og er kun meningsfuldt, når et angrebsscenarie er konfigureret |
🟢 | README-rækken "Resilience"; kvalitetsmålet Sikkerhed er defineret ved det operationelt skadelige specifikationspunkt |
| OC-10 | Kvalitetsmålet "Positioning Performance" antydede fuld nøjagtighed i positionsdomænet | Påstand trukket tilbage — betegnet som en 1-DOF-størrelse pos_rms_m for de inertiale/hybride pakker, eksplicit ikke en 2-D CEP/2DRMS (CEP: cirkulær sandsynlig fejl) eller DOP-vægtet (DOP: præcisionsfortynding) nøjagtighed |
🟢 | README-tabellen over kvalitetsmål (rækken "Positioning Performance") |
| OC-11 | tal for inertialt kvalitetsmål læst som ensemblestatistik ud fra enkelte seeds | Påstand trukket tilbage — en enkelt kørsel flages med monte_carlo: false; runs = N rapporterer middelværdi/spredning/bootstrap-konfidensinterval på 95% |
🟢 | README-tabellen over kvalitetsmål; envelope-tests for scenariedækning |
| OC-12 | scenariet "SGP4 (Simplified General Perturbations 4) GPS (Global Positioning System)-konstellation" brugte syntetiske pladsholder-TLE'er (elementsæt på to linjer) | Erstattet — scenariet indlejrer nu et ægte, datostemplet Celestrak-snapshot gps-ops med strenge kontrolsummer |
🟢 | scenarios/orbit-sgp4-gps.toml (ægte gps-ops, strict_checksum); tests/scenario_coverage.rs |
| OC-13 | README-versionsstrengen drev fra Cargo.toml |
Påstand trukket tilbage — en CI-gate hævder, at README-statusbadgen passer til Cargo.toml |
🟢 | scripts/check-version-sync.sh |
0,35: påstande holdt snævre og én rettelse#
Funktionerne i version 0,35 blev skrevet med deres grænser angivet ved siden af påstanden, og de samme vagter (tests/no_overclaims.rs og formuleringsvagten i tests/compliance_report.rs) gennemsøger siderne, der beskriver dem. Denne tabel er ikke en del af registeret med fjorten rækker ovenfor; den registrerer for de nye flader, hvad der påstås, og hvad der ikke påstås.
| Flade | Hvad der påstås | Hvad der ikke påstås |
|---|---|---|
Tillidsscore for fartøj (receiver_trust, $PKSHT, gate, Signal K, OpenCPN) |
en score på 0-100 og begrundelser ud fra en modtagers egen NMEA, MODELLED | vejledende, ikke typegodkendt navigationsudstyr; en score for én log siger intet om andre modtagere; den gør ikke en positionsbestemmelse mere nøjagtig |
| NMEA-strømme til træning af besætninger | syntetisk NMEA fra broen med scriptede hændelser og en instruktørlog | kun tekst, ingen radiofrekvent udsendelse; aldrig til et fartøjs aktive navigationssystemer; vejledende, ikke typegodkendt navigationsudstyr |
| Bevispakker | en signeret teknisk optegnelse, der kan verificeres offline | ikke en juridisk vurdering; siger ikke, hvad der forårsagede en hændelse, hvem der var ansvarlig, eller at loggen viser, hvad modtageren faktisk modtog |
| Interferenskort | aggregerede celler med forringet navigation fra rapporter med åben licens | ikke en prognose; en rutes eksponering er en andel af celler, ikke en risiko |
| Eksport til testbænk | et scenaries køretøjsbevægelse og hændelser i filer, som en laboratoriesimulator kan læse | intet signal skrives; ingen ydeevne for simulator eller modtager påstås |
| Kortlægning af compliance mod offentlige rammeværker | hvilke rækker et sæt kørsler leverer belæg for, med et hul på hver række | aldrig at et rammeværk er opfyldt, eller at et produkt er godkendt; en typeetiket alene er ikke belæg |
Rettelse registreret i version 0,35. En tidligere version af docs/RESILIENCE-CROSSWALK.md og af kommentarerne i resilience-modulet beskrev syv "teknikkategorier" i DHS Resilient PNT Conformance Framework. Version 2,0 af dette framework definerer kernefunktioner (Prevent, Respond, Recover), niveauer 0 til 4 og otte nummererede krav og ingen liste med syv kategorier. De syv delscorenavne, som scoringsmotoren udsender, er Kshanas egne, og crosswalken siger nu det.
Sådan forbliver en række GREEN#
De stærke påstande (OC-0/2/7/8 og de erstattede halvdele af OC-1/3/4/12) er GREEN, fordi funktionen er leveret og testet — ikke fordi formuleringen blev gjort blødere. De rækker, hvor påstanden er trukket tilbage, er GREEN, fordi den aktuelle formulering passer til koden. Vagttesten gør den anden kategori håndhævelig: hvis en udgået overdreven formulering vender tilbage på en offentlig flade, bliver CI rød. Se tests/no_overclaims.rs.