Käivituse aruanded
Iga käsurealiidese (CLI) käivitus kirjutab oma tulemuse kõrvale aruande: prinditava HyperText Markup Language (HTML) lehe <scenario>.report.html ja masinloetava JavaScript Object Notation (JSON) dokumendi <scenario>.report.json, mille sisu on sama. Aruanne töötab iga stsenaariumi liigi ja kampaaniate puhul.
kshana scenarios/clock-holdover.toml
# wrote scenarios/clock-holdover.result.json, scenarios/clock-holdover.chart.svg,
# scenarios/clock-holdover.report.html, and scenarios/clock-holdover.report.json
Tulemusdokument vastab küsimusele mida mootor arvutas. Aruanne lisab selle, mida lugeja vajab enne tegutsemist: mis sisse läks, millel arvud põhinevad, mis jäeti välja ja kuidas samu baite uuesti saada. See ei leiuta midagi sellest. Iga jaotis loetakse allikast, mida mootor juba hoiab, ja nimetab allika tsiteeritu kõrval.
Ehitaja on kshana::advanced_report (src/advanced_report.rs). See on puhas funktsioon jooksu väljundist, stsenaariumifaili baitidest ja käsurealt: see ei loe kella, faili ega võrku ning see ehitab WebAssembly jaoks.
Jaotised#
| # | Jaotis | Mida see sisaldab | Loetakse |
|---|---|---|---|
| 1 | Juhtkonnale mõeldud kokkuvõte | mida liik teeb, jooksu üherealine kokkuvõte, põhiarvud, jooksu tasandi ausameelsuse silt, kasutatud VALIDATED / MODELLED / PARTNER võimekuste arv | liikide kataloog (kshana kinds --json), tulemuse label, selle figure_tiers plokk või headusarvu plokk, Monte Carlo kampaania protsentiilid |
| 2 | Sisendid | iga väli, mille stsenaariumifail seab, lamendatud oma teeni, koos selle ühiku ja ühiku päritoluga | stsenaariumifail; ühikud tulemuse units plokist (väljaühikute skeem, docs/field-units-schema.json), muidu välja nime järelliide (_s, _ns, _m, _deg, _dbw, …); ühik, mida kumbki ei esita, prinditakse kui esitamata |
| 3 | Tulemused | jooksu diagramm, tulemusdokumendi iga skalaar koos ühikuga ja iga numbrilise veeru arvu / miinimumi / maksimumi / esimese / viimase kokkuvõte | tulemusdokument ja selle units plokk |
| 3a | Koondamine (kampaaniad ja pühkimised) | pühkimise sõlmetabel; Monte Carlo jooksu keskmine, standardhälve, 5., 50. ja 95. protsentiil ning keskmise 95% usaldusvahemik, iga mõõdiku kohta histogrammiga; ahela faasitabel; kompositsiooni ühised tingimused, liikmed ja koondkokkuvõte | kampaania tulemuse jaotis sweep, monte_carlo, timeline või compose; tulemuse sweep või sweep-nd ruudustik |
| 3b | Animatsioon ja eksportimised | jooksu animeeritud joonis (väljund --animate svg) manustatud inertse pildina või põhjus, miks seda ei ole; lingid animatsiooni- ja koostalitlusfailidele, mille sama käsk kirjutas aruande kõrvale; iga eksportimisvorming koos teabega, kas see kehtib stsenaariumi kohta, miks mitte, ja selle spetsifikatsiooniga |
animatsiooni eksportija (src/animation.rs), interop::plan ja käsurea kirjutatud failid (--animate, --export) |
| 4 | Sündmuste ajajoon | ajastatud aknad ja punktsündmused, joonistatud ja tabelisse kantud jooksu ajateljel | stsenaariumitabelid väljadega t0/t1, on_s/off_s, start_s/end_s või algusaeg; jooksu ulatus time.duration_s; mis tahes massiiv events tulemuses; kampaania faasid ja üleandmised |
| 5 | Kontrollimarkeerid | iga kontrollimaatriksi rida, mida jooksu liigid rakendavad, koos selle sildi, sõltumatu etaloni ja testitõendiga ning tulemuse esitatud arvukohaste tasemetega | kontrollimaatriks (src/verification.rs, docs/VERIFICATION-MATRIX.md), liigi-ridade ristviite advanced_report::KIND_CAPABILITIES kaudu |
| 6 | Modelleerimata ja eeldused | iga piirang, tsiteeritult | tulemuse plokid not_modelled, not_implemented ja honesty; liikide kataloogi MODELLED klauslid; stsenaariumi kommentaarid ja sisendtekst, mis ütlevad „not modelled“; maatriksi põhjus, miks iga MODELLED rida jääb modelleerituks (docs/MODELLED-RATIONALE.md) |
| 7 | Reprodutseeritavuse kirje | mootori versioon, lähtekoodi commit, stsenaariumifaili ja tulemusdokumendi Secure Hash Algorithm 256-bit (SHA-256) räsid, algväärtus, platvorm, täpne käsk, töökausta reegel, iga täiendava sisendfaili räsi | ehitus, failid, käsurida |
Jaotis, millel pole midagi loetleda, ütleb miks ühe lausega (näiteks „No timed event: the scenario scripts no window or onset time and the result reports no event“). Ükski jaotis ei ole kunagi tühi ja vaikiv.
Mida aruande silt tähendab#
Kontrollimärge hindab maatriksireas nimetatud võimekust, nagu maatriks seda salvestab. See ei hinda stsenaariumi seadistust ja VALIDATED rida ei tee jooksu sisendeid mõõdetuks. PARTNER rida on distsipliin, millele jooks toetub ja mida Kshana ei paku (antennirealiis raadiosagedusliikide jaoks, kvantkasulik koorem kvantliikide jaoks, kosmoseaparaadi siin asendibüdžeti jaoks); aruanne näitab seda kui toetutud, mitte pakutud.
Liikide ja ridade ristviide on maatriksi requirement stringide tabel. Silt, sõltumatu etalon ja tõend loetakse aruande ehitamisel maatriksist tagasi, nii et rea liigutamine VALIDATED ja MODELLED vahel liigutab kaasa iga aruande. Kampaania kannab oma režiimi rida (ahel, pühkimine või Monte Carlo, koostamine) pluss iga liikme liigi iga rida, mida see käitas; sweep-nd kannab pühitud liigi ridu. Iga jooks kannab ka rida „Reproducibility & software assurance“, millel reprodutseeritavuse kirje põhineb.
Rida, mis hindab ainult ühe liigi ühte sisenditeed, loetletakse ainult siis, kui jooks valis selle tee (advanced_report::PATH_GATED_CAPABILITIES): orbit ja ephemeris kannavad rida „Orbit propagation & determination“ ainult väljaga tle (Simplified General Perturbations 4 (SGP4) tee; analüütiline orbiit on kahe keha propageerimine) ja slot-timing kannab mõõdetud kirje rida ainult väljaga oscillator.record. Sama tabel väravdab mitmeribalist rida spectrum sellel, et jooks joonistab [[panels]], ning madala Maa orbiidi (LEO) liikide ridu sellel, millise tee iga jooks valis: leo-pass või leo-pnt-chain vihma-, hoonesisenemise-, madala energia või spuufija rida ainult siis, kui stsenaarium seab selle liikme, tsintillatsiooni rida kui stsenaarium seda välja ei lülita, leo-navmsg, leo-pvt või ahela täpse punktpositsioneerimise rida ainult tulemuse kantud analüüsi või režiimi jaoks ja LEO süsteemi eelseadistuse rida ainult siis, kui kasutatakse nimetatud eelseadet. Shuttle Radar Topography Mission (SRTM) lugeja rida ei kanna ükski liik: terrain-nav ja terrain-slam töötavad sünteetilisel digitaalsel kõrgusmudelil (DEM) ja ükski stsenaariumi väli ei loe SRTM-i lehte. VALIDATED rida, mida jooks kunagi ei puudutanud, väidaks muidu tõendeid, mida jooksul ei ole.
Jooksu reprodutseerimine selle aruandest#
report.json → reproducibility sisaldab kõike vajalikku:
"command": "kshana clock-holdover.toml",
"argv": ["kshana", "clock-holdover.toml"],
"scenario_sha256": "430c364d…",
"result_sha256": "ee5ebb0a…",
"seed": 42,
- Kontrollige stsenaariumifaili vastu
scenario_sha256ja mis tahes faili kohasinput_files(--eopMaa orientatsiooni fail) selle räsi vastu. - Käivitage
commandkataloogist, kus algne jooks käivitati. Stsenaariumi tee ja mis tahes suhteline andmetee stsenaariumi sees lahendatakse selle suhtes. - Uuel
result.jsonon SHA-256 väljalresult_sha256ning uusreport.jsonjareport.htmlon vanadega bait-baidilt identsed.
tests/advanced_report_cli.rs teeb täpselt seda kellastsenaariumi, aheldatud kampaania, pühkimiskampaania ja orbiidijooksu puhul failiga --eop: see loeb käsu aruandest välja, käitab selle värskes kataloogis, mis sisaldab ainult salvestatud sisendeid, ja võrdleb baite.
scenario_sha256 on faili täpsete baitide räsi. Tulemuse enda scenario_hash on midagi muud, liigi stsenaariumi sõrmejälg (sageli kanoonilisest vormist), ja aruanne prindib mõlemad, sildistatult.
Algväärtus. Algväärtus on stsenaariumi seed, muidu see, mille tulemus esitab. Liigi puhul, mis algväärtust ei võta, ütleb aruanne seda ja et tulemuse fikseerivad ainult stsenaariumifail ja mootori ehitus.
Lähtekoodi commit. Mootor salvestab commiti ainult siis, kui see ehitati keskkonnamuutujaga KSHANA_GIT_COMMIT seatud, loetuna kompileerimisajal:
KSHANA_GIT_COMMIT=$(git rev-parse HEAD) cargo build --release
Ehitus ilma selleta teatab commiti kui salvestamata ja mootori versioon identifitseerib väljalaske. Midagi ei oletata.
Platvorm. Ehituse operatsioonisüsteem, arhitektuur ja perekond. Tulemused on ühel platvormil bait-baidilt identsed; platvormide vahel võivad ujukomatulemused viimastes numbrites erineda (vt REPRODUCIBILITY.md).
Determinism ja ainus ajatempel#
Samad stsenaariumi baidid, algväärtus ja mootori ehitus annavad bait-baidilt identse report.json ja report.html. Aruanne ei kanna ajatemplit. Ainus kellanäit kogu kastis on see, mille teeb --study-name ja mis kannab meta.generated_utc tulemusdokumenti; aruanne näitab siis seda templit ja ütleb, et see on ainus väli, mida reproduktsioon ei kopeeri. Selle vältimiseks käitage ilma --study-name. tests/advanced_report.rs ehitab iga stsenaariumifaili aruande kaustas scenarios/ (komplekti manifest välja arvatud) kaks korda ja käitab kuus stsenaariumi uuesti (nende hulgas üks kampaania igast ahela, pühkimise ja koostamise režiimist), et seda otsast lõpuni kontrollida.
Printimine PDF-i#
Mootor ei kirjuta Portable Document Format (PDF) faile. PDF-i kirjutaja, mis diagramme renderdaks, tähendaks uut rasket sõltuvust, seega valikut --report pdf ei ole. Selle asemel kannab report.html printimise stiililehte: avage see brauseris, printige ja valige „Save as PDF“.
Stiillehe on kirjutatud nii A4 kui US Letter jaoks. See ei sea paberi suurust (kehtib printimisdialoogi valik), hoiab 15 mm / 14 mm veeriseid, mis sobivad kummalegi lehele, lülitub mustale valgel, kordab tabeli päiseid igal lehel, hoiab tabeli ridu, jooniseid ja kaarte lehtede vahel lõhenemast, hoiab pealkirjad neile järgneva tekstiga ning alustab sisendite, tulemuste, kontrollimarkerite ja reprodutseeritavuse jaotisi uuelt lehelt. Navigatsiooniriba on printimisel peidetud.
JSON-dokument#
report.json sisaldab report_schema = "kshana-report" ja report_schema_version = "1.0", seejärel kind ja title ning ühe võtme jaotise kohta: executive_summary, inputs, results, aggregation (ainult kampaaniad ja pühkimised), events, capabilities, not_modelled, companions (jaotis 3b: animation, exports ja export_command) ja reproducibility. Loendijaotisel on items, omitted (read, mille lehe ülempiir välja jättis; tulemusdokument kannab iga väärtust) ja, kui items on tühi, statement, mis ütleb miks. Väärtus säilitab oma toor-JSON-kuju väljal value ja lehel näidatud teksti väljal display; puuduv väärtus on null väljal value ja „no value“ väljal display.
Piirangud, öeldud otse#
- Ühikud. Kui ei väljaühikute skeem ega välja nimi anna ühikut, ütleb aruanne „not stated“, mitte ei oleta. Kampaania liikmestsenaariumite sees olevad sisendid lahendatakse ainult kampaania enda ühikuplokki ja välja nime järelliite vastu, seega loetakse neist rohkem „not stated“ kui eraldiseisval jooksul.
- Ristviite otsus. Millised maatriksi read liik rakendab, on kureeritud tabel, mida test kontrollib nimetama igal kirjel täpselt ühte olemasolevat rida ja katma iga sisseehitatud liiki. See, kas iga vastavus on õige, on inimese otsus, nagu maatriksi enda sõltumatu etaloni valik.
- Ülempiirid. Leht loetleb kuni 400 sisendit, 150 skalaartulemust, 60 numbrilist veergu ja 200 sündmust;
omittedloendab ülejäänud. Üle 24 rea tabel stsenaariumi sees (sissetoodud jada) kokku võetakse veeru kaupa. - Suites.
kshana --study <suite.toml>hoiab oma<suite>.study.jsonja<suite>.study.html; see ei kirjuta seda aruannet. - Sidumised. Pythoni ja WebAssembly sidumised hoiavad
RunOutput::html_report(), üheleheküljelist tulemuskaarti; mänguväljaku allalaaditav aruanne on selle enda leht (web/studio/lib/report.mjs). Selle aruande kirjutab CLI ja Rusti kutsujad saavad selle ehitada funktsioonigakshana::advanced_report::build. Model Context Protocol (MCP) server tagastab selle oma tööriistastreport_scenario, JSON-ina või HTML-lehena; stsenaariumifaili nimi selle reprodutseerimiskäsus on see, mille kutsuja annab (vaikeväärtusscenario.toml), ja see ei loetle kaasfaile, sest server ei kirjuta ühtegi.