Konekäännös, jota äidinkielinen puhuja ei ole tarkistanut. Viitteenä on englanninkielinen versio.

SkenaariotMuokkaa GitHubissaLähde: docs/SCHEMA.md

Tulosskeema — Kshana-tiedoston *.result.json lukeminen

Jokainen ajo kirjoittaa skenaarion viereen versioidun, itsekuvaavan JSON-artefaktin (JavaScript Object Notation). Tämä sivu on käsin kirjoitettu lukijan opas vaihtokuoreen ja kellon ja radan tulosmuotoihin: kunkin kentän yksikkö, missä se lasketaan lähdekoodissa ja miten se luetaan. Kanoninen tyyppi on RunResult tiedostossa src/report.rs; laatumittarit ovat FoMScores tiedostossa src/fom.rs.

Se ei ole täydellinen kenttäviite. Moottori välittää paljon useampaan tyyppiin kuin nämä kaksi, ja jokainen tuottaa oman tyyppipakettinsa. Täydellinen viite — yksikkö, alkuperäluokka ja määritelmä jokaiselle sisäänrakennetun tyypin numeeriselle kentälle — on generoitu, ei käsin kirjoitettu: katso alla Yksiköt ja alkuperä kenttäkohtaisesti kaikille tyypeille.

Vaihtokuori (KIF, Kshana Interchange Format) — artefaktin tunnistaminen ja version tarkistus#

Kshana-artefaktit voidaan kääriä neutraaliin, itsekuvaavaan vaihtokuoreen, jotta kolmannen osapuolen työkalu voi tunnistaa tiedoston ja päättää, voiko se lukea sen ennen kuin se sitoutuu hyötykuormaskeemaan. Kanoninen tyyppi on Envelope tiedostossa src/interchange.rs.

Avain Tyyppi Merkitys
format merkkijono Aina "kshana-interchange" (FORMAT_TAG) — miten vieras työkalu tunnistaa Kshana-artefaktin.
schema_version merkkijono Skeemaversio MAJOR.MINOR (SCHEMA_VERSION, koko paketin (crate) ainoa totuuden lähde).
kind merkkijono Artefaktin tyyppi, esim. "scenario", "run-result", "trade-study" — antaa kuluttajan reitittää jäsentämättä runkoa.
engine_version merkkijono Hyötykuorman tuottaneen paketin (crate) versio (Cargo.toml).
payload objekti Kääritty artefakti kanonisena JSON-muotona (Scenario, RunResult, …).

Yhteensopivuussopimus. Versiot ovat muotoa MAJOR.MINOR. Uudet kentät lisätään määreellä #[serde(default)] (additiivinen kuri), joten lukija voi jäsentää minkä tahansa artefaktin, jolla on sama pääversio ja yhtä vanha tai vanhempi alaversio (Compatible). Tiukasti uudempi alaversio (ForwardIncompatible) voi sisältää kenttiä, joita tämä lukija ei voi noudattaa, ja eri pääversio (MajorIncompatible) on rakenteellinen katkos — molemmat hylkää Envelope::parse, joka tarkistaa muototunnisteen ja version rajalla sen sijaan, että jäsentäisi vierasta syötettä hiljaa väärin.

Determinismi. Kuori ei sisällä aikaleimaa — Kshana-ohjelmiston toistettavuuslupaus (scenario + seed + engine_version toistaa ajon) vaatii sen. Alkuperä on kentässä engine_version ja hyötykuorman omassa kentässä scenario_hash.

Tyypitetty takaisinluku (Envelope::payload_as::<T>()) toimii mille tahansa hyötykuormalle, joka toteuttaa Deserialize (esim. Scenario). Tulosartefaktit ovat suunnitellusti vain serialisoitavia, ja ne luetaan raakana JSON-arvona payload.

Ylätaso (kello- ja ratatyyppipaketit)#

Avain Tyyppi / yksikkö Merkitys Lähde
schema_version merkkijono Tulosskeeman versio (riippumaton moottorin versiosta). report.rs
engine_version merkkijono Tiedoston tuottaneen paketin (crate) versio (Cargo.toml). report.rs
scenario_hash heksamerkkijono SHA-256 (SHA: Secure Hash Algorithm) kanonisesta skenaario-JSONista — ajo on toistettavissa kohdasta scenario + seed + engine_version. report.rs:hash_scenario
seed u64 Kvanttiajon satunnaislukugeneraattorin (RNG) siemenluku (klassinen käyttää arvoa seed + 0x9e3779b97f4a7c15). run.rs
threshold_ns nanosekuntia Ajoitusmääritys: virhe, joka on välillä ±threshold_ns, on ”määrityksen sisällä”. skenaario
quantum objekti (ClockRun) Kvanttianturin ajo (katso alla). report.rs
classical objekti (ClockRun) Klassisen anturin ajo vertailua varten. report.rs
units objekti Asiakirjan kenttäkohtainen yksikkö-/alkuperäkartta, avaimena kentän polku. Katso §Yksiköt ja alkuperä alla. field_schema.rs:units_block
evidence objekti (0,40) Ajon todistemerkintä: tier (VALIDATED, MODELLED tai PARTNER: rivien heikoin tila, joten se ei koskaan väitä enempää kuin heikoin rivinsä), matrix (docs/VERIFICATION-MATRIX.md), id_rule ja rows, yksi jokaista ajon käyttämää varmennusmatriisin riviä kohti (rivit, jotka sen lisäraportti luettelee, lähteestä advanced_report::KIND_CAPABILITIES): id (VM- ja rivin vaatimustekstin SHA-256:n 8 ensimmäistä heksadesimaalinumeroa), requirement ja status, kaikki luettu matriisista, mitään ei kirjoitettu käsin. Funktio api::run_toml lisää sen jokaisen tyypin tulokseen, ennen loppuosan lohkoa figure_tiers, kun sellainen on (tuo lohko pysyy viimeisenä avaimena); evidence_label::strip_json poistaa sen tavu tavulta. Saman ajon kaavion SVG ja CSV-taulukko kantavat saman merkinnän (<metadata id="kshana-evidence"> ja näkyvä rivi kaavion alla; kommenttirivit # evidence: CSV:n edessä). Toisen tyypin tulokseen upotetut kampanjajäsenet eivät kanna sellaista: ulompi asiakirja kantaa. Ei sisällä lukuja. evidence_label.rs
figure_tiers objekti Kunkin raportoidun laatumittarin varmennustaso, ja aina asiakirjan viimeinen avain. figures luettelee yhden merkinnän kutakin läsnä olevaa lukua kohti: path (esim. quantum.fom.timing_p95_ns), tier (VALIDATED = tarkistettu riippumatonta ulkoista oraakkelia vasten, MODELLED = ensiperiaatteista, sisäisesti testattu), requirement (varmennusmatriisin rivi, josta taso luetaan) ja applicable. applicable on false, ja mukana on reason, kohteelle security jokaisessa skenaariossa, jossa ei ole hyökkäystä konfiguroitu: raja pysyy kohdassa fom.security, mutta se ei vastaa mihinkään kysymykseen, jonka skenaario esittää. untiered luettelee kaikki luvut, joita mikään matriisin rivi ei omista (paikkaluvut hybrid ja fusion), sen sijaan että antaisi niille tason. Sen antavat tyypit clock (yksittäinen ajo ja Monte Carlo -joukko), orbit, hybrid ja fusion, jotka rakentavat sen ajonsa sisällä, ja (0,36, RM-04) jokainen muu tyyppi pääluvuilleen, liitettynä ajon jälkeen tyyppikohtaisesta taulukosta fom_label::kind_figures; api::without_figure_tiers poistaa sen takaisin tasottomaksi asiakirjaksi tavu tavulta. Sitä eivät anna lunar-station-coverage, jonka tulos on jäädytetty ennakkorekisteröity ennuste (docs/predictions/lunar-reference-station.md): kyseisellä tyypillä ei ole kohtaa figure_tiers, ennen kuin uusi päivätty ennuste korvaa sen. Sitä eivät myöskään anna leo-ppp, solar-system, optical-atmosphere (0,37; asemakohtaiset taulukot), sweep ja sweep-nd, joilla ei ole skalaarista pääsuuretta, eikä lunar-attack-surface, jonka asiakirja on kompakti JSON (fom_label::KINDS_EXCLUDED_FROM_FIGURE_TIERS antaa kunkin syyn), eikä kampanjan upotetut jäsenasiakirjat. Ei sisällä lukuarvoja. fom_label.rs:figure_tiers, fom_label.rs:kind_figure_tiers
geometry objekti, valinnainen Ratapaketin geometriayhteenveto: samples_total, samples_with_fix, sigma_uere_m (m, mallinnettu satelliittikohtainen etäisyysvirhebudjetti), best_pdop / median_pdop (dimensioton) ja best_position_sigma_m / median_position_sigma_m (m, PDOP (paikan tarkkuuden heikkenemiskerroin) × sigma_uere_m). Vain ratapaketti. orbit.rs
eci_track taulukko [x, y, z] (km), valinnainen Käyttäjäavaruusaluksen propagoitu Maan keskipisteen inertiaalinen rata, yksi merkintä kutakin otettua ajanhetkeä kohti. Vain ratapaketti; muuten jätetty pois. Vain tulosteena — ei sisälly tiivisteeseen. report.rs
meta objekti (StudyMeta), valinnainen Additiivinen raportin metatieto (tutkimuksen otsikko, luontileima, tekijä, vastuuvapauslauseke). Jätetään pois, kun sitä ei ole, joten metatiedoton ajo on tavu tavulta sama kuin vanha tuloste. Vain tulosteena — ei sisälly tiivisteeseen. report.rs

ClockRun (kukin kohdista quantum / classical)#

Avain Tyyppi / yksikkö Merkitys
spec.id merkkijono Anturin tunniste (esim. optical-sr-lattice).
spec.kind merkkijono Mallityyppi (esim. clock).
spec.provenance merkkijono Anturin parametrien lainaus/lähde.
spec.params objekti Käytetyt mallin raakaparametrit.
series taulukko {t, error_ns, gnss} Askelkohtainen aikasarja: t sekunteja, error_ns ajoitusvirhe nanosekunteina, gnss yksi arvoista nominal/degraded/denied.
fom objekti (FoMScores) Pisteytetyt laatumittarit (alla).
adev_curve taulukko {tau_s, adev, n_samples, noise, edf, ci_lo, ci_hi} Päällekkäinen Allanin poikkeama: tau_s keskiarvoistusaika (s), adev dimensioton suhteellisen taajuuden vakaus σ_y(τ), n_samples kyseisen pisteen takana oleva päällekkäisyyksien lukumäärä, noise MDEV:n (modifioitu Allanin poikkeama) kaltevuudesta tunnistettu potenssilakityyppi (esim. WhiteFm), edf kohinatyyppikohtaiset tehokkaat vapausasteet ja ci_lo/ci_hi χ²-pohjainen luottamuskaista (95%) suureelle adev kyseisellä τ:lla. Laskettu tiedostossa allan.rs:overlapping_adev_curve.
filter_health objekti, valinnainen Kalman-suodattimen johdonmukaisuusarvio (NIS/NEES (NIS: normalisoitu innovaationeliö; NEES: normalisoitu estimointivirheen neliö) χ²-kaistojaan vasten), laskettu tiedostossa filter_health.rs; jätetään pois ajoilta, jotka eivät arvioi sitä.

FoMScores (objekti fom)#

Kenttä Yksikkö Merkitys Lähde Varauma
timing_rms_ns ns Kellovaiheen (ajoituksen) virheen RMS (neliökeskiarvo) katkon aikana. fom.rs:score ajoitusmittari, ei paikka
timing_p95_ns ns Ajoitusvirheen 95. persentiili katkon aikana. fom.rs:score
holdover_s s Huonoin (lyhin) määrityksen sisällä pysyvä ylläpito katkojaksojen yli. fom.rs:worst_case_holdover ruudukon rajaama — alaraja aika-askeleen tarkkuudella
resilience_slope_ns_per_s ns/s |virheen| pienimmän neliösumman kasvunopeus katkon aikana. fom.rs:score
availability osuus [0 1] Koko ajon osuus, jolla on määrityksen sisäinen ratkaisu. fom.rs:score
integrity osuus [0 1] tai null Suodattimen itseyhdenmukaisuus: niiden katkonäytteiden osuus, joiden todellinen virhe pysyy Kalmanin k-σ-rajan sisällä. run.rs EI HPL/VPL/RAIM (HPL: horisontaalinen suojaustaso; VPL: vertikaalinen suojaustaso; RAIM: vastaanottimen autonominen eheysvalvonta) -eheyttä — katso INTEGRITY.md
security osuus [0 1] tai null Analyyttinen harhautuksen havaittavuusraja kellon vakaudesta. run.rs + security.rs merkityksellinen vain konfiguroidulla hyökkäyksellä, joten kello- ja ratapaketit (jotka eivät konfiguroi mitään) merkitsevät sen arvolla applicable: false kohdassa figure_tiers ja tulostavat sen yhteenvedossa muodossa n/a (no attack); ei monisatelliittinen RAIM-ilmaisin

Miltä ”hyvä” näyttää#

  • Hiljaisempi kello (pienempi adev_curve) antaa pidemmän arvon holdover_s ja korkeamman havaittavuusrajan security — se on kvantti vs. klassinen -vastakohta.
  • Arvo availability lähellä lukua 1,0 tarkoittaa, että järjestelmä pysyi määrityksen sisällä lähes koko ajon; pitkän katkon aikana se laskee kohinaisemmalle kellolle.
  • Arvo integrity lähellä lukua 1,0 tarkoittaa, että suodattimen oma epävarmuusraja oli rehellinen virheestään — itseyhdenmukaisuutta koskeva väite, ei ihmishengen turvaamiseen liittyvä takuu.

Muut skenaariotyypit#

Jokainen muu tyyppi tuottaa oman tulosmuotonsa. Muutama yleinen:

  • inertial: paikka-alueen laatumittarit metreinä (pos_rms_m, pos_p95_m) — yksiakselinen (1-DOF (DOF: vapausaste)), yhden siemenluvun (katso CAPABILITY.md).
  • hybrid / fusion: timing_spec_ns ja position_spec_m ylätasolla, ja puolta kohti yhden anturikokonaisuuden ajoitus- ja paikkaluvut (position_p95_m, position_holdover_s ja pnt_holdover_s, aika kunnes jompikumpi määritys rikkoutuu), lohkon figure_tiers kanssa kuten kellopaketissa, jossa paikkaluvut on lueteltu merkinnällä untiered.
  • spoof: askelkohtainen harhautuspoikkeama vs. kellon havaitsemisraja sekä se, saavuttiko harhautus määrityksen ennen havaitsemista (src/spoof.rs).
  • horisonttiprofiili (orbit ja integrity tyypeillä user_site, gnss-sim, jamming, leo-pvt, leo-pass; mukana vain, kun skenaariossa on osio [skyline], joten skenaario ilman sitä on ennallaan): ylätason objekti skyline, jossa source (merkkijono: preset:<name>, preset:<name>+overrides tai custom), open_fraction (osuus [0 1] ylemmän puolipallon avaruuskulmasta kohdan max(mask_deg, skyline) yläpuolella) ja provenance (merkkijono); näytettä kohti masked_by_skyline (maskin yläpuolella mutta horisonttiprofiilin takana olevien satelliittien lukumäärä: epochs[] tyypeissä integrity ja jamming, gnss_measurements[] tyypissä gnss-sim, joint.epochs[] tyypissä leo-pvt); ja tyypille leo-pass kenttä satellites[].pass.epochs_masked_by_skyline (epookkien lukumäärä). Niiden yksiköt ja alkuperäluokat ovat lohkossa units (src/skyline.rs UNITS; SKYLINE.md).

Minkä tahansa tyypin tarkan kenttäjoukon löydät sen merkinnästä tiedostossa field-units-schema.json (alla), tyypin osiosta tiedostossa SCENARIOS.md tai vastaavasta rakenteesta *Result hakemistossa src/.

Muut tiedostot, jotka ajo kirjoittaa#

Tiedoston <scenario>.result.json viereen komentorivi (CLI) kirjoittaa tiedoston <scenario>.chart.svg, tulostettavan <scenario>.report.html ja saman raportin tiedostona <scenario>.report.json, jonka lohko reproducibility kirjaa moottorin version, skenaariotiedoston SHA-256-tiivisteen, siemenluvun, alustan ja tarkan komennon (katso REPORTS.md ja REPRODUCIBILITY.md). Tyypit, jotka julkaisevat toistettavuustaulukon, kirjoittavat myös <scenario>.table.csv (CSV: pilkuin erotetut arvot). --export kirjoittaa vaihtotiedostot (katso INTEROP.md) ja --animate animaation (katso ANIMATION.md).

Yksiköt ja alkuperä kenttäkohtaisesti kaikille tyypeille#

Tämä sivu on käsin kirjoitettu ja kattaa kello- ja ratapaketit. Koneluettava vastine kattaa jokaisen sisäänrakennetun tyypin:

  • Itse tuloksessa. Jokaisen skenaarion tulosasiakirja sisältää ylätason objektin units, joka kuvaa annetun kentän polun arvoon {"unit", "provenance", "note"}. Polkukielioppi (taulukko tuottaa yhden segmentin, jonka pääte on [] ja joka on yhteinen sen riveille; * on yhden segmentin jokerimerkki datalla avainnetuille objekteille) ja suljettu alkuperäsanasto on määritelty tiedostossa src/field_schema.rs.
  • Yhtenä tiedostona. Tiedosto field-units-schema.json on kerätty yhdiste: jokaiselle tyypille jokainen numeerinen kenttä, jonka se antaa ilmoitetussa lähteessä, yksikön, alkuperäluokan, todistetason ja määritelmän kanssa — ja nimettynä eikä pois jätettynä jokainen kenttä, jolla ei vielä ole niitä. Sen lohko coverage sisältää lukumäärät.

Molemmat pannaan täytäntöön testillä tests/field_units_global.rs, joka ajaa jokaisen rekisteröidyn tyypin ja epäonnistuu, jos annetulta numeeriselta kentältä puuttuu yksikkö ja alkuperäluokka. Vielä kattamattomat tyypit on nimetty yksitellen kyseisen tiedoston kohdassa UNCOVERED_KINDS kunkin avoimen syyn kanssa, ja lukumäärä on lukittu, jotta luettelo voi vain lyhentyä.

Generoi JSON uudelleen minkä tahansa raportin muodon tai lohkon units muutoksen jälkeen:

cargo test --test field_units_global zzz_emit_field_units_schema -- --ignored