Påståenden mot verklighet — register över överdrifter
En oberoende granskning av en tidigare Kshana-version förtecknade fjorton överdrifter (OC-0…OC-13): ställen där en publik yta (README, lekplatsen, etiketter för kvalitetsmått (FoM, figure of merit), scenariopaket) beskrev en förmåga starkare än koden levererade. Den här sidan är avslutsregistret: varje rad anger den ursprungliga överdriften, hur den löstes och beläggen. Två slags lösningar förekommer:
- Påståendet nedtonat — formuleringen rättades så att den stämmer med koden (ärlig omformulering, ingen förändring av förmågan). "Ingen kod = inget påstående."
- Ersatt — den verkliga förmågan byggdes och testades därefter, så att det starka påståendet blev korrekt.
En regressionsspärr (tests/no_overclaims.rs) söker igenom de levande publika ytorna (README.md, docs/CAPABILITY.md, docs/GLOSSARY.md, web/capabilities.json, web/index.html, web/README.md samt förstasidorna för crates.io, PyPI (Python Package Index) och npm README.crates.md, README.pypi.md, README.npm.md) vid varje CI-körning (kontinuerlig integration) och misslyckas om någon av de utgångna rena överdrivna formuleringarna dyker upp igen utan förbehåll — så att en rad inte tyst kan falla tillbaka från GREEN.
Alla fjorton rader är GREEN.
| OC (överdrift) | Ursprunglig överdrift | Lösning | Status | Evidens |
|---|---|---|---|---|
| OC-0 | "gemensam Kalman-fusionsskattare" antydde ett enda filter med korskovarians; koden körde två oberoende skattare | Ersatt — ett verkligt kopplat Kalman-filter för klocka + position med korskovarians byggdes | 🟢 | src/fusion/coupled.rs (7 tester, bl.a. en ensemble om 100 försök med kopplat mot frikopplat som kräver att det kopplade positions-RMS (root mean square) ligger under 0,6× av det frikopplade och att det kopplade filtret vinner i minst 90 av de 100 försöken); CAPABILITY "Sensor fusion" → full |
| OC-1 | "klockstödd RAIM (receiver autonomous integrity monitoring) för spoofingdetektering" antydde en RAIM-detektor med flera satelliter | Påståendet nedtonat → Ersatt — omformulerat som en gräns för detekterbarhet av spoofing utifrån klockstabilitet; den verkliga RAIM/ARAIM (HPL/VPL (HPL: horisontell skyddsnivå; VPL: vertikal skyddsnivå)) kom därefter | 🟢 | src/raim.rs (30 tester — snapshot + ARAIM med lösningsseparation, HPL/VPL, FDE (felupptäckt och felexkludering), Stanford-diagram); docs/INTEGRITY.md |
| OC-2 | "jammingdemonstrator" utan någon jammingkod bakom sig | Ersatt — en länkbudgetmodell för jamming J/S → effektiv C/N₀ → förlorad låsning byggdes | 🟢 | src/jamming.rs (10 tester); README-raden "Resilience" |
| OC-3 | "Fullständig Allan-variansbrusmodell för IMU (tröghetsmätenhet) på en IMU-triad" — modellen hade en enda axel | Påståendet nedtonat → Ersatt — omformulerat som en felbudget med 1 DOF (DOF: frihetsgrad); en treaxlig strapdown-INS (tröghetsnavigeringssystem) levererades därefter | 🟢 | src/inertial treaxlig strapdown (kvaternionattityd, NED-mekanisering (nord-öst-ned), coning/sculling); ROADMAP "Inertial" |
| OC-4 | "Hybrid PNT-integration (positionering, navigering och tidssynkronisering)" antydde ett kopplat GNSS/INS-filter (GNSS: globalt navigationssatellitsystem); det var en felbudget för dödräkning | Påståendet nedtonat → Ersatt — omformulerat som dödräkning med en konfigurerbar återlåsning; verklig tätt kopplad GNSS/INS-fusion levererades därefter | 🟢 | src/fusion/tightly_coupled17.rs (UKF med 17 tillstånd (unscented Kalman-filter) med kvant-CAI-dödräkning (CAI: kallatomsinterferometer)); CAPABILITY "Sensor fusion" → full |
| OC-5 | "validerad ~2%" antydde en snäv upprätthållen spärr | Påståendet nedtonat — VALIDATION.md anger den upprätthållna spärren (20–25% medelvärde över frön); "~2%" betecknade en typisk observation, inte spärren |
🟢 | docs/VALIDATION.md rubriken "On tolerances" |
| OC-6 | "deterministisk över plattformar" utan incheckade belägg | Påståendet nedtonat — verktygskedjan låst till en exakt utgåva; golden-hashar per scenario incheckade med en reproducerbarhetsspärr. (Bitidentiskt mellan OS/arkitekturer (OS: operativsystem) återstår som en öppen punkt, uttalad ärligt.) | 🟢 | rust-toolchain.toml (kanal 1.93.0); tests/golden.rs (numeriska värden till 1e-6); tests/cross_platform_golden.rs (hash av varje resultats indatafingeravtryck och form, körd på CI-matrisen för Linux, macOS och Windows); scripts/check-reproducible.sh |
| OC-7 | "hybrid kvant-klassisk PNT-simulator" antydde kvantfysik från första principer | Påståendet nedtonat → Ersatt — omformulerat som en simulator för PNT-resiliens som använder prestandamodeller för kvantsensorer; CAI-fysik av Mach–Zehnder-typ från första principer kom därefter | 🟢 | src/inertial/quantum_imu.rs (26 tester — Mach–Zehnder-fas, projektionsbrus 1/√(N·C²·T²), vibrationsöverföringsfunktion, Coriolis + AC-Stark (AC: växelström) systematik); docs/QUANTUM.md |
| OC-8 | Kvalitetsmåttet "Integrity Performance" antydde integritet för luftfart med HPL/VPL/RAIM | Påståendet nedtonat + Ersatt (i lager) — kvalitetsmåttet per körning i scenariot betecknas ärligt som filtrets självkonsistens (inte integritet för luftfart); den verkliga ARAIM HPL/VPL redovisas separat så att de två aldrig förväxlas | 🟢 | src/fom.rs:80 (integrity: självkonsistens, med förbehåll); src/raim.rs + docs/INTEGRITY.md (verklig ARAIM) |
| OC-9 | Kvalitetsmåttet Säkerhet presenterades som alltid meningsfullt, även utan någon attack | Påståendet nedtonat — kvalitetsmåttet Säkerhet (1 − P_md) sätts in i sammanhanget för spoofingdetektorn och är meningsfullt bara när ett attackscenario har konfigurerats |
🟢 | README-raden "Resilience"; kvalitetsmåttet Säkerhet definieras vid den operativt skadliga specifikationspunkten |
| OC-10 | Kvalitetsmåttet "Positioning Performance" antydde full noggrannhet i positionsdomänen | Påståendet nedtonat — betecknat som ett pos_rms_m med 1-DOF för tröghets-/hybridpaketen, uttryckligen inte en 2-D CEP/2DRMS (CEP: circular error probable) eller DOP-viktad (DOP: försämring av precisionen) noggrannhet |
🟢 | README:s tabell över kvalitetsmått (raden "Positioning Performance") |
| OC-11 | tal för kvalitetsmått i tröghetspaketet lästes som ensemblestatistik från enskilda frön | Påståendet nedtonat — en enskild körning flaggas monte_carlo: false; runs = N redovisar medelvärde/spridning/bootstrap-KI på 95% |
🟢 | README:s tabell över kvalitetsmått; tester av scenariotäckning över driftområdet |
| OC-12 | scenariot "SGP4 (Simplified General Perturbations 4) GPS-konstellation (Global Positioning System)" använde syntetiska platshållar-TLE:er (tvåradselementuppsättningar) | Ersatt — scenariot bäddar nu in en äkta datumstämplad ögonblicksbild gps-ops från Celestrak med strikta kontrollsummor |
🟢 | scenarios/orbit-sgp4-gps.toml (verklig gps-ops, strict_checksum); tests/scenario_coverage.rs |
| OC-13 | README:s versionssträng avvek från Cargo.toml |
Påståendet nedtonat — en CI-spärr kontrollerar att statusmärket i README stämmer med Cargo.toml |
🟢 | scripts/check-version-sync.sh |
0,35: påståenden hållna snäva och en rättelse#
Funktionerna i 0,35 skrevs med sina begränsningar angivna intill påståendet, och samma spärrar (tests/no_overclaims.rs och formuleringsspärren i tests/compliance_report.rs) söker igenom de sidor som beskriver dem. Den här tabellen är inte en del av registret med fjorton rader ovan; den anger för de nya ytorna vad som påstås och vad som inte påstås.
| Yta | Vad som påstås | Vad som inte påstås |
|---|---|---|
Förtroendepoäng för fartyg (receiver_trust, $PKSHT, gate, Signal K, OpenCPN) |
en poäng på 0-100 och skäl utifrån en mottagares egen NMEA, MODELLED | rådgivande, inte typgodkänd navigationsutrustning; en poäng för en logg är inget uttalande om andra mottagare; den gör inte en positionsbestämning mer exakt |
| NMEA-strömmar för besättningsutbildning | syntetisk brygg-NMEA med skriptade händelser och en instruktörslogg | enbart text, ingen radiofrekvent utsignal; aldrig för ett fartygs levande navigationssystem; rådgivande, inte typgodkänd navigationsutrustning |
| Bevispaket | en signerad teknisk post som kan verifieras offline | inte ett juridiskt utlåtande; säger inte vad som orsakade en händelse, vem som var ansvarig eller att loggen visar vad mottagaren faktiskt tog emot |
| Störningskarta | aggregerade celler med försämrad navigering ur öppet licensierade rapporter | inte en prognos; en rutts exponering är en andel celler, inte en risk |
| Export för testbänk | ett scenarios fordonsrörelse och händelser i filer som en laboratoriesimulator kan läsa | ingen signal skrivs; ingen prestanda hos någon simulator eller mottagare påstås |
| Compliance-koppling till publika ramverk | vilka rader en uppsättning körningar ger belägg för, med en lucka på varje rad | aldrig att ett ramverk är uppfyllt eller att en produkt är godkänd; en slagetikett ensam är inte belägg |
Rättelse införd i 0,35. En tidigare version av docs/RESILIENCE-CROSSWALK.md och av kommentarerna i resiliensmodulen beskrev sju "teknikkategorier" i DHS Resilient PNT Conformance Framework. Version 2,0 av det ramverket definierar kärnfunktioner (Prevent, Respond, Recover), nivåer från 0 till 4 och åtta numrerade krav, och ingen lista över sju kategorier. De sju delpoängsnamn som poängmotorn ger ut är Kshanas egna, och korsreferensen säger nu detta.
Hur en rad förblir GREEN#
De starka påståendena (OC-0/2/7/8 och de ersatta halvorna av OC-1/3/4/12) är GREEN eftersom förmågan är levererad och testad — inte för att formuleringen mjukats upp. De nedtonade raderna är GREEN eftersom den levande formuleringen stämmer med koden. Spärrtestet gör den andra kategorin möjlig att upprätthålla: om en utgången överdriven formulering återkommer på en publik yta blir CI rött. Se tests/no_overclaims.rs.