Stan weryfikacji w runtime

Dokumentacja wersji v0.1.0-beta.3Zobacz źródło na GitHubie

Tłumaczenie oryginalnej strony w języku angielskim dla OmsiLaunch 0.1.0-beta3. Wiążąca jest strona angielska: w razie rozbieżności obowiązują strona angielska i kod.

Ta strona jest jedyną tabelą dowodów dla OmsiLaunch 0.1.0-beta3. Każdy wiersz wskazuje możliwość (capability) lub funkcję oraz stan jej dowodów. RUNTIME_VALIDATED może powoływać się na research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md (identyfikatory macierzy RV-nnn, blokery BI-nnn, identyfikatory sesji z tabeli wykonania z 2026-09-20) albo na raport rundy post-Fable Round A research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md (RA-nnn); wszystko inne wynika z kodu i zestawów testów offline. Runda utwardzania z 2026-09-21 (research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md, ustalenia od S-01 do S-34) zmieniła zachowanie przywracania, odzyskiwania, płaszczyzny sterowania i granic; zmiany te miały wyłącznie dowody offline. Końcowa runda domknięcia runtime z 2026-09-23 (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md, identyfikatory scenariuszy takie jak F01, S05, T01, kandydaci 2 i 3) wykonała je w rzeczywistych sesjach na autoryzowanej instalacji; wiersze awansowane w tej rundzie powołują się na jej identyfikatory scenariuszy i sesji. RUNTIME_VALIDATED może zatem powoływać się również na ten raport.

Stany dowodów:

StanZnaczenie
RUNTIME_VALIDATEDZaobserwowano w kanonicznej sesji zapisanej w macierzy (podano identyfikator i sesję).
STATICALLY_VALIDATEDZaimplementowano i pokryto testami offline (tools/OmsiLaunch.TestHost, tests/*); od ostatniej zmiany nie zaobserwowano w działającej sesji.
PARTIALZaimplementowano, ale dowody są niekompletne lub sprzeczne albo wiadomo, że zachowanie jest ograniczone.
RUNTIME_VALIDATION_REQUIREDZachowanie zmieniło się lub nigdy nie zostało zaobserwowane; przed awansem musi zostać zweryfikowane w rzeczywistej sesji.
UNAVAILABLENiezaimplementowane lub celowo odrzucane.

Cykl życia sesji i transakcja#

FunkcjaStanDowody
Uruchomienie bez interakcji (headless) NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start)RUNTIME_VALIDATEDSekcja macierzy „Existing Runtime Evidence”; sesje e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf)
Uruchomienie SAVED_SITUATION (world.saved-situation)RUNTIME_VALIDATEDUwaga w GetCapabilitiesAsync i macierz (Berlin-Spandau, formularz Start i Button1Click)
Wymuszone zakończenie session.stop i dokładne przywrócenieRUNTIME_VALIDATEDSesja 50a1f1ec: normalne zatrzymanie nie pozostawiło procesu OMSI ani dziennika
Idempotentność uruchamiania (powtórzone PluginStart)RUNTIME_VALIDATEDSesja 50a1f1ec
Semantyczna nakładka (overlay) na options.cfg i przywrócenie bajt w bajt (RV-005)RUNTIME_VALIDATEDSesja 1e8e0548: AIMaxCountRandom 150/200 plus zachowana końcówka pliku; skrót po przywróceniu A12982C3...
Zarządzany ekran startowy wraz z transakcją nakładki (RV-006)RUNTIME_VALIDATEDMacierz RV-006 PASS (partia prezentacji: zarządzany domyślny, zarządzany własny, Unset); sesje Release Presentation 001 388cf5d2-7310-4301-9313-e62c4c08a346, 794cae34-a2ac-4fcf-8981-f142ac14c308, 12a74b24-6c78-4863-8ffe-947651212eeb
Odzyskiwanie po wczesnym zakończeniu (RV-008, wymuszone zakończenie OMSI)RUNTIME_VALIDATEDSesje post-Fable Round A 9e7cad79-9c35-4f93-bfc8-71f455513f82 (po rozgrywce) i dcac497e-ff35-4c97-b5e4-98b660f88032 (po world.starting, przed rozgrywką): właściciel zakończył pracę, dziennik i dzierżawa zostały usunięte, options.cfg i pierwotnie nieobecny stan ekranu startowego odpowiadały migawkom. Natywne błędy uruchamiania i wstrzykiwanie nieudanego przywracania pozostają osobnymi pozycjami.
Granice błędu uruchamiania i celowo nieudanego przywracania (pozostała część RV-008)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): przekroczenie limitu czasu uruchamiania SF01 sesja 0b21c664-b0b2-46b2-9b6b-def536765fff oraz zgłoszony przez wtyczkę błąd świata SF02 sesja 53358c75-469b-41d5-9ddb-cdb1d1ff828d zakończyły się stanem Failed z typowanymi kodami i dokładnym przywróceniem; nieudane przywracanie F01 sesja d4194a69-d858-42fe-97c7-ce93ccbdc3f6 (plik należący do sesji zablokowany podczas zatrzymania przez proces wyłącznie testowy) dało OL_E_RESTORE_FAILED, zachowało dziennik i kopię zapasową, a /recover dokładnie przywrócił stan sprzed sesji. Źródła tych błędów są wyłącznie infrastrukturą testową.
Przywracanie artefaktów sesji dla celów .itx i Texture\standard.ipr (S-01)RUNTIME_VALIDATEDRound A przywróciła istniejące ścieżki w 47efd323-4ce1-400a-ac83-74893cf82f26; utworzyła i usunęła zarejestrowany, pierwotnie nieobecny cel przy normalnym zatrzymaniu w 8d9bdedf-d7de-4c64-a8b1-627ae4deff7b; a także powtórzyła to sprzątanie po przerwaniu pracy właściciela i /recover w aa9a45d4-302e-4cf5-8490-f5a1c9e44b79.
closecheck jako usunięcie przez sesję i usunięcie nieaktualnego znacznika (S-13)RUNTIME_VALIDATEDSesje Round A, w tym 47efd323-4ce1-400a-ac83-74893cf82f26, zapisały closecheck.stale-removed, a następnie restore.session-artifact-removed; nie pozostał żaden dziennik.
Wczesne odzyskiwanie przed budową nakładki, odroczone odzyskiwanie sprzed odcisków (pre-fingerprint) (S-05)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) S05: właściciel sesji f755ed51-b85c-4df2-b062-5bf65c768b32 został zabity przy oczekującym dzienniku (maxFPS=77 aktywne); następne uruchomienie, sesja 291ea22b-f9b3-42a4-be07-7f0c055c7113, zapisało PENDING_JOURNAL_RECOVERED przed TRANSACTION_STARTED, działało z własną nakładką (88) i zakończyło się stanem identycznym bajt w bajt ze stanem sprzed pierwszej sesji. Odroczona gałąź sprzed odcisków pozostaje tylko offline (transaction.legacy-journal-ownership-migration).
Przywracanie metadanych (znaczniki czasu, atrybuty, tylko do odczytu), zapis z opróżnieniem (write-through), sprzątanie kopii zapasowych (S-12)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S12a sesja 40de172b-e144-4f0a-9207-09c80b5d7df7 (znany znacznik czasu options.cfg) i S12b sesja d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7 (znacznik czasu plus ReadOnly): nakładka była aktywna podczas sesji (ReadOnly wyczyszczony dla OMSI), a bajty, czas ostatniego zapisu, czas utworzenia i atrybuty zostały dokładnie przywrócone; nie pozostał żaden katalog kopii zapasowej.
/recover pod dzierżawą instalacji; odmowa w oknie sprzed PID (S-04)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S04 sesja 1fb2aad5-2985-4fa4-9c5a-6186f51d37b8: przy działającym właścicielu /recovery-status i /recover zwróciły OL_E_INSTALLATION_BUSY, a drugie uruchomienie zostało odrzucone; po zabiciu właściciela i pozostawieniu działającego OMSI /recover i nowe uruchomienie były odrzucane do czasu zakończenia OMSI, po czym /recover dokonał dokładnego przywrócenia. S04b sesja 5e57ca51-ab5e-4e94-a0d0-531735ee4057: dziennik sprzed PID (wstrzyknięcie błędu przez harness) był odrzucany, dopóki działał jakikolwiek Omsi.exe z tego katalogu głównego, i został odzyskany po jego zakończeniu; closecheck zapisany przez ten OMSI jest zachowywany z OL_W_RESTORE_FOREIGN_FILE_RETAINED (udokumentowane, zachowawcze).
Ponowne planowanie w StartSessionAsync, OL_E_PLAN_NOT_RUNNABLE przy nieaktualnym planie (S-15)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R02: gdy wtyczkę wymienioną w manifeście odsunięto po planowaniu, StartSessionAsync zgłosił OL_E_PLAN_NOT_RUNNABLE: OL_E_PERMANENT_PLUGIN_MISSING, zanim powstała jakakolwiek sesja (plan 4797c9ce-6eb3-47b1-b09d-03562dd3bd44, kandydat 2, po poprawce BUG-01)
Cykl życia właściciela: zatrzymanie przez potok, Ctrl+C, zatrzymanie z obszaru powiadomień, zakończenie OMSI, zabicie właściciela, /observe-secondsRUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): zatrzymanie przez potok w trakcie /observe-seconds L06 sesja 300a563e-7b0e-4f01-afbd-9e15df32c7e6; Ctrl+C L03 sesja 5e2aca54-bae2-4fc6-a106-93699e755bfc (właściciel zakończył pracę 577 ms po sygnale); zabicie OMSI L05a sesja d69658f9-16f6-43e9-8e36-682114b97e14; zamknięcie głównego okna OMSI L05b sesja 76b11ba4-8ddb-4611-9a1c-8be317cd0337 (OMSI ignoruje WM_CLOSE; zakończono przez zabicie); zatrzymanie z obszaru powiadomień T01/T03 sesje 6d827c13-caf8-4221-832a-c91d26f130e0, 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; zabicie właściciela S05. Każda ścieżka zakończyła się dokładnym przywróceniem. Gdy właściciel zostanie po prostu zabity, Omsi.exe działa dalej (zgodnie z projektem); odzyskiwanie jest odrzucane do czasu jego zakończenia (S04).
Budżet 4 s dla ProcessExit przy zamknięciu konsoli lub wylogowaniuRUNTIME_VALIDATED (zamknięcie konsoli)Runda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) L04 sesja 559d0f1d-7d5b-4b6b-b70c-0acb272d53db: okno konsoli zamknięto; przywracanie zakończyło się w ramach budżetu, sesja osiągnęła Completed bez dziennika; Windows zakończył właściciela około 5 s po zamknięciu (kod wyjścia 0xC000013A). Wylogowania nie sprawdzano.
Kooperacyjne zamykanie przez WM_CLOSEUNAVAILABLENiezaimplementowane (decyzja produktowa, S-11). Domknięcie runtime L05b: OMSI nie zamknął się w ciągu 30 s od wysłania WM_CLOSE do jego głównego okna. ShutdownTimeoutSeconds nie jest wykorzystywany.
Semantyka dzierżawy instalacji (semafor Local\)STATICALLY_VALIDATEDlease.cross-thread-release; ograniczenia udokumentowane jako zaakceptowane ryzyko (S-18)
Zachowanie kodowania CP1252 przy modyfikowaniu plików OMSI (S-07)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) C01 sesja 84a71235-d618-4917-9af4-c2a6025742f4: options.cfg z wartością CP1252 zawierającą znaki diakrytyczne (w tym 0x80 i 0x96) zmodyfikowany przez /set; aktywny plik zachował bajty CP1252 bez EF BF BD, a po sesji plik był identyczny bajt w bajt
Pomijanie punktów ponownej analizy (reparse points) przy wykrywaniu zawartości (S-23)STATICALLY_VALIDATEDTesty discovery.*
Retencja diagnostyki (50 najnowszych sesji) (S-26)STATICALLY_VALIDATEDHostTrace.Prune
Przejściowe blokady plików (antywirus, indeksator) przy zapisach i usunięciach w transakcji są ponawiane przez około 1.5 s; trwałe blokady nadal kończą się błędem (przebieg korekcyjny CP-10)STATICALLY_VALIDATEDtransaction.transient-lock-retried, transaction.restore-failure-recovery (trwała blokada nadal kończy się błędem); przed poprawką zaobserwowano dwa sporadyczne błędy offline, po niej żadnego w 16 przebiegach

Stała wtyczka i platforma#

FunkcjaStanDowody
Profil Omsi23004_692EBFBF (692EBFBF...6243, 8,503,440 bajtów)RUNTIME_VALIDATEDKażda sesja macierzy
Plik wykonywalny Steam LAA (7DAB063D...D759)PARTIALDomknięcie runtime LAA01 sesja 9ec975ca-7820-47be-b806-5f5a94aad4ab: kontrolowana kopia (utworzona z niezmodyfikowanego oryginału z instalacji z flagą IMAGE_FILE_LARGE_ADDRESS_AWARE i przeliczoną sumą kontrolną PE; 8,503,440 bajtów, charakterystyka 0x81AE) miała zgodny skrót, odcisk został zaakceptowany, a plan był możliwy do uruchomienia. Obraz jest oryginalnym plikiem wykonywalnym Steam chronionym DRM: poza autentyczną instalacją Steam przekazuje sterowanie klientowi Steam i kończy działanie, więc sesja zakończyła się błędem OL_E_PROCESS_EXITED_EARLY i dokładnym przywróceniem. Rozgrywka, odczyty, polecenia i zatrzymanie wymagają autentycznej instalacji Steam (ENVIRONMENT).
Tożsamość instalacji: nazwa dzierżawy i nazwa potoku sterowania wynikają z jednej definicji, InstallationPaths.IdentityKey (C:\OMSI = C:\OMSI\ = C:\OMSI\. = C:\foo\..\OMSI = warianty wielkości liter; C:\OMSI-A różni się od C:\OMSI-B) (przebieg korekcyjny CP-02, addendum A/B)STATICALLY_VALIDATED; zaobserwowano w runtimelease.root-normalization, paths.installation-identity-and-containment. Domknięcie runtime ID01: podczas działania sesji 01bfc780-10ef-4390-b700-c08bf809a42f drugie uruchomienia i /recovery-status z katalogiem głównym zapisanym z \., segmentem .., małymi i wielkimi literami były odrzucane (OL_E_SESSION_ALREADY_ACTIVE, OL_E_INSTALLATION_BUSY); podobnie zapis z końcowym separatorem (ID01b, sesja ba3ea7c9-9826-453d-b447-81c48763e18f).
Spójność pakietu wydania: czysty katalog przejściowy, potwierdzenie budowania Native.x86 (zawartość, nie znacznik czasu), manifest bez BOM, integralność przygotowanego zestawu plików i ponownie rozpakowanego archiwum, instalator kopiuje manifest (przebieg korekcyjny CP-01, Round A RA-007, addendum F/G/H)STATICALLY_VALIDATED; zaobserwowano w instalacjiTest-PackagingPipeline.ps1 (spójny kandydat plus 16 przypadków negatywnych), runtime.release-manifest-bom, runtime.release-manifest-strict-parser. Domknięcie runtime: pakiety zainstalowane w autoryzowanej instalacji były spójne ze swoimi manifestami, a każda sesja była planowana z plugin.integrity.reference = manifest (rejestr kandydatów research/reports/runtime-closure/CANDIDATES.md).
Integralność zestawu plików wtyczki względem release-manifest.json (S-09)RUNTIME_VALIDATEDSesja Round A 47efd323-4ce1-400a-ac83-74893cf82f26; sesje domknięcia runtime na zainstalowanych pakietach wydania (na przykład R01 sesja 878b5e3c-2f9d-46bf-a918-11bb2e227e55, kandydat 3) były planowane z plugin.integrity.reference = manifest; R02 pokazało, że brak wymienionej wtyczki blokuje uruchomienie.
Walidacja kompilacji w procesie (plugin.build.invalid -> OL_E_BUILD_VALIDATION_FAILED)RUNTIME_VALIDATEDSesje macierzy; dwie wcześniejsze sesje plugin.build.invalid z nieaktualną wtyczką
Handoff v4 z SHA-256RUNTIME_VALIDATEDTesty integracyjne handoff.*; każda sesja
Wtyczka nieaktywna bez OmsiLaunch (brak handoffu)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) P01 (zwykłe uruchomienie OMSI, bez sesji OmsiLaunch; PID OMSI 35564): zestaw plików wtyczki i host .NET zostały załadowane, OmsiLaunch.Native.x86.dll nie został załadowany, trzy natywne miejsca modyfikacji zawierały niezmodyfikowane bajty Omsi.exe, a nie pojawił się żaden potok sterowania, dziennik ani diagnostyka
Polityka wyszukiwania DLL (AssemblyDirectory | System32) (S-24)STATICALLY_VALIDATEDAtrybuty zestawu
Wykrywanie Windows 10+ x64 i odrzucanie innych platformSTATICALLY_VALIDATEDCurrentWindowsX64Platform.Detect

Kanał sterowania runtime i płaszczyzna sterowania#

FunkcjaStanDowody
Integralność transmisji przez skrzynkę runtime (mailbox), powiązanie z sesjąRUNTIME_VALIDATEDWszystkie sesje runtime; runtime-command.wire-guard, runtime-command.session-binding
Odrzucanie spóźnionych odpowiedzi i brak zablokowania kanału po przekroczeniu limitu czasu (S-08)RUNTIME_VALIDATEDSesja Round A 173414a5-ee53-4b10-aeb7-046f40b851e9: zewnętrzny klient porzucił road-vehicles.spawn po 250 ms; późniejsze map.read zakończyło się powodzeniem, a kanoniczne zatrzymanie wyczyściło sesję. Odrzucanie zbyt dużych odpowiedzi pozostaje tylko offline.
Lokalna płaszczyzna sterowania: nazwa potoku per instalacja, powiązanie session_id, typowane błędy procedur obsługi, limit 64 KiB (S-06)RUNTIME_VALIDATEDSesja Round A a00c6ff8-9cc9-4bce-ae44-c4314daad7bf: nieprawidłowy protokół, niepowiązane zatrzymanie, żądanie runtime dla niewłaściwej sesji i zbyt duża ramka zostały odrzucone; następne prawidłowe żądanie stanu i powiązane zatrzymanie zakończyły się powodzeniem. Odrzucanie zbyt dużych odpowiedzi pozostaje tylko offline.
Slot sekwencji telemetrii, pomijanie rozerwanych próbek, identyczne kolejne zdarzenia (S-25)STATICALLY_VALIDATEDtelemetry.sequence-samples
Granica API odrzuca internal.* i usuwa wewnętrzne klucze wyniku (S-02)STATICALLY_VALIDATEDOmsiLaunchService.ExecuteRuntimeAsync; walidacja rejestru
Nieprawidłowa lub zbyt duża odpowiedź w skrzynce zwalnia slot; następne żądanie kończy się powodzeniem (przebieg korekcyjny CP-03)STATICALLY_VALIDATEDruntime-command.oversized-response-rejected; po stronie wtyczki plugin-runtime.oversized-and-abandoned-responses. Niemożliwe do wywołania w runtime: żadna publiczna operacja nie zwraca więcej niż jeden slot (największa około 37.8 KB, domknięcie runtime R03).
Każda końcowa ścieżka żądania runtime pozostawia skrzynkę gotową do ponownego użycia: typowane odrzucenie, przekroczenie limitu czasu, anulowanie przez wywołującego, ponownie użyty identyfikator żądania, operacja wewnętrzna, niewłaściwa sesja, brakujący argument (runtime); błędnie sformatowane, zbyt duże, uszkodzone, nieaktualne i osierocone odpowiedzi (offline)RUNTIME_VALIDATED (ścieżki osiągalne)Runda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R03 sesja 1134fdc3-a469-4ff5-a511-9964ed65e7cd: każdy błąd był typowany, a następne prawidłowe żądanie kończyło się powodzeniem. Ścieżek uszkodzenia odpowiedzi nie da się wywołać z zewnątrz i pozostają one offline (runtime-command.terminal-paths-leave-channel-usable).
Zbyt duża odpowiedź płaszczyzny sterowania zwracana jako OL_E_CONTROL_RESPONSE_TOO_LARGE; stan i zdarzenia przycinane od najstarszych do jednej ramki (przebieg korekcyjny CP-04)STATICALLY_VALIDATEDcontrol-plane.binding-and-typed-errors. Niemożliwe do wywołania w runtime: największa publiczna odpowiedź zaobserwowana w rundzie domknięcia runtime miała około 37.8 KB (R03), a historia zdarzeń sesji pozostaje znacznie poniżej jednej ramki.
Płaszczyzna sterowania nigdy nie milczy po nawiązaniu połączenia: ramki błędnie sformatowane, zbyt duże, o ujemnej długości, puste, JSON null, bez polecenia, z argumentem niebędącym ciągiem, z nieprawidłowym protokołem, z nieznanym poleceniem, niepowiązane i dla niewłaściwej sesji; obcięte ramki klienta; zawieszeni klienci; klienci odchodzący przed odpowiedziąRUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R04 sesja faaaf8a8-126d-4a23-a8f3-381e47c58de6 (kandydat 2, po poprawce BUG-02): każda ramka otrzymała swój typowany błąd, po każdej następowało udane session.status; zawieszony klient nie blokował innych; powiązane zatrzymanie konkurujące z trwającym road-vehicles.spawn zakończyło sesję, a wywołujący spawn otrzymał czysty koniec strumienia. OL_E_TIMEOUT i metadane obcięcia pozostają offline (control-plane.errors-never-silent).
Harnessy partii runtime (/runtime-batch, /runtime-write-batch, /d3d-batch)INTERNAL (STATICALLY_VALIDATED)Wyłącznie harness walidacyjny (S-27)

Operacje runtime#

OperacjeStanDowody
time.read, time.setRUNTIME_VALIDATEDSesja e5454061 (zapis, SetTime, odczyt kontrolny, przywrócenie)
weather.read, weather.actual.readRUNTIME_VALIDATEDSesja e5454061
weather.setUNAVAILABLEOdrzucane z OL_E_RUNTIME_SETTING_NOT_PERSISTENT; trwałość FAIL w sesjach e5454061 i 5f641c8d; odrzucenie PASS w 50a1f1ec
map.readRUNTIME_VALIDATEDPonownie zweryfikowane po korekcie globalnego slotu Map w sesji 9dd62626-94c6-4cd7-bb6f-0288327696f4: loaded=true, 19 kafelków, tożsamość Grundorf, nazwa pliku, opis i zakres lat spójne.
camera.read, camera.setRUNTIME_VALIDATEDSesja e5454061 (zapis FOV, odczyt kontrolny, przywrócenie)
camera.lock, camera.unlockRUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) CAM01 sesja 5dfd9b96-fa94-4060-85af-0c9d19823a73: zapisana sytuacja Linie 5 dostarczyła PlayerVehicle (rv-000001); blokady w rodzinach 0, 2 i 1 zostały potwierdzone odczytem kamery; odblokowanie zwolniło politykę
road-vehicles.read, road-vehicles.list, road-vehicle.readRUNTIME_VALIDATEDSesje e5454061, 5f641c8d
Czas życia uchwytów RoadVehicle i wykrywanie nieaktualnych uchwytów (RV-002)PARTIALBrak bezpiecznego źródła usuwania: w trzech oknach domknięcia runtime (H01, H01b, H01c, do 180 s, ze skokiem zegara) populacje RoadVehicle i Human w Grundorf jedynie rosły; żadna publiczna operacja nie usuwa obiektu. Wykrywanie nieaktualnych uchwytów pozostaje offline (S-19). Reguła generacji/ABA jest zweryfikowana w runtime dla tekstur D3D (H02).
road-vehicles.spawn (RV-003)RUNTIME_VALIDATEDSesja 5f641c8d: 2 -> 3, rv-000003 rozwiązany
road-vehicles.place-randomRUNTIME_VALIDATEDMacierz: kolekcja 2 -> 4
player-vehicle.readRUNTIME_VALIDATEDRound A RA-002 sesja 9dd62626-94c6-4cd7-bb6f-0288327696f4 (present=false); domknięcie runtime CAM01 sesja 5dfd9b96-fa94-4060-85af-0c9d19823a73 odczytało obecny PlayerVehicle z zapisanej sytuacji
humans.read, humans.list, human.readRUNTIME_VALIDATEDSesja e5454061
timetable.read, timetable.*.list, timetable.logs.readRUNTIME_VALIDATEDSesja e5454061; wpisy tras: 91 rekordów
Obcinanie list ograniczonych zamiast OL_E_RUNTIME_RESPONSE_TOO_LARGE (audyt dokumentacji BUG-05)RUNTIME_VALIDATEDPonowny test audytu dokumentacji na pakiecie 9F8CC87B..., zapisana sytuacja situations\Linie 5.osn (Berlin-Spandau): timetable.track-entries.list zwróciło 137 z 825 wpisów, a timetable.tour-entries.list 224 z 4747, z truncated=true (sesje 08df97b8-06cc-4faa-be8b-f49ca1538dce i ponowny test doc-capture); przed poprawką obie operacje kończyły się błędem OL_E_RUNTIME_RESPONSE_TOO_LARGE (sesja f51dcb59-a723-4570-b6c5-b61e628a7993). Dowody: research/reports/documentation-audit/runtime/.
drivers.read, tickets.readRUNTIME_VALIDATEDSesja e5454061
vehicle.variables.list, vehicle.variable.get, vehicle.variable.setRUNTIME_VALIDATEDRefresh_Strings 0 -> 1 -> 0 w sesji runtime zapisanej jako Runtime-Proven w research/reports/OmsiHook-Parity-Wave-A-Closure-001.md (wyliczono 1,025 nazw, zgodnie z OMSILAUNCH-AUTONOMOUS-BUILD-001.md); raport nie zapisuje identyfikatora sesji
vehicle.string-variables.list, vehicle.string-variable.getRUNTIME_VALIDATED (tylko odczyt)Sesja e5454061; zapisy BI-004 UNAVAILABLE
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.readRUNTIME_VALIDATEDSesja e5454061
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, odrzucanie zwolnionych uchwytówRUNTIME_VALIDATEDMacierz „basic D3D texture lifecycle”; uwagi do możliwości runtime.d3d.* (sesja 4378899d dla slotu urządzenia)
Zdarzenia utraty / resetu / przywrócenia urządzenia D3D, unieważnianie generacji (RV-007)RUNTIME_VALIDATED (resetting/restored)Runda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) D01 sesja fc07946e-58dd-4ddc-af7e-10c7e61a899a: tymczasowa zmiana trybu wyświetlania (źródło testowe, nigdy publiczne, bez syntetycznego wywołania resetu) spowodowała dwukrotny reset urządzenia przez OMSI. Emitowane były d3d.resetting/d3d.restored, generacja zwiększała się w każdym cyklu, żądanie w trakcie resetu otrzymało OL_E_D3D_RESET_IN_PROGRESS, tekstura sprzed utraty została odrzucona z OL_E_D3D_STALE_RESOURCE_HANDLE, a nowe tekstury działały. OMSI przeszedł bezpośrednio do DEVICENOTRESET, więc odrębne przejście lost nie wystąpiło. Jedna próba spowodowała awarię OMSI w DSound.dll (zmiana punktu końcowego audio wyświetlacza; właściciel dokonał dokładnego przywrócenia).
events.read / events watchRUNTIME_VALIDATEDKażda sesja (cykl życia sterowany telemetrią)
internal.road-vehicles.make-basicINTERNALNieosiągalne przez interfejsy publiczne

Funkcje uruchamiania#

FunkcjaStanDowody
/set i settings profilu (configuration.options.semantic)RUNTIME_VALIDATEDRV-005
Profile sesji (ścisły kompilator, konflikty, ograniczenie ścieżek, w tym punkty ponownej analizy S-17)RUNTIME_VALIDATED (zakres uruchomienia z profilu)Round A RA-009, Test-Beta3SessionProfile.ps1, 2026-09-22: zarządzany ekran startowy, wyłączone tekstury internetowe i ustawienie wstępne graphics.maxFPS=30; options.cfg przywrócony, fixture nienaruszony, brak dziennika, dzierżawy i procesu.
Wczytywanie /spec (limit 1 MiB, odrzucanie nieznanych właściwości, przestrzeganie limitów czasu) (S-20)STATICALLY_VALIDATEDTesty cli.*
Zarządzany ekran startowy PTB/ENG/DEU/FRARUNTIME_VALIDATEDRV-006
Tekstury internetowe Disabled (wyłączenie pobierania w procesie)STATICALLY_VALIDATEDŚcieżka telemetrii internet-textures.suppressed; nie powołano się na nią w macierzy
Ochrona celu .itx tekstur internetowych (Round A RA-011/RA-012, przebieg korekcyjny CP-05, addendum E): kanoniczny katalog główny, kanoniczny cel, ścieżka względna, reguły segmentów; kwalifikuje się tylko segment katalogu o nazwie texture poniżej katalogu głównego (mytexture, texture_backup, texture2 ani texture w bezwzględnej ścieżce katalogu głównego nie); cele z przechodzeniem po katalogach, bezwzględne, względne wobec katalogu głównego i będące połączeniami (junction) są odrzucane; różne zapisy sprowadzają się do jednej kanonicznej ścieżki transakcjiSTATICALLY_VALIDATEDpresentation.itx-target-root-normalization, presentation.itx-target-guard-rejections
Tekstury internetowe OverrideRUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): I01 sesja 6eac2dac-c7e9-49a1-acbf-2a5d59c1c0d3: moduł pobierania OMSI wysłał HEAD i GET do serwera loopback dla istniejącego i pierwotnie nieobecnego celu, zapisał oba, a po kanonicznym zatrzymaniu nieobecny cel został usunięty, a istniejący przywrócony bajt w bajt; I02 sesja a8f2b720-e41a-4e34-86bf-125bf519a5bd: to samo po zabiciu właściciela i OMSI, przez /recover.
/date, /time, /year, flagi pogody, flagi pojazdu gracza (STATICALLY_PARTIAL)UNAVAILABLEPlanista oznacza plan jako niemożliwy do uruchomienia (OL_E_CAPABILITY_UNAVAILABLE); wtyczka odrzuca tryby daty/czasu inne niż Unset
/entrypoint:<identity> (BI-001)PARTIALPlan niemożliwy do uruchomienia (RUNTIME_PARTIAL)
/last (LastMapState, BI-006)UNAVAILABLEUNSUPPORTED_FOR_CURRENT_PROFILE
Nakładki klawiatury/kontrolera InputSpec (BI-005)UNAVAILABLEParsery istnieją; nie są stosowane
Przypisanie PlayerVehicle bez interakcji (BI-007), SetActualDateTime (BI-002), sterowanie pogodą ICAO (BI-003), zapisy zmiennych tekstowych (BI-004), przenoszenie między kafelkami (BI-008)UNAVAILABLEZablokowane do czasu zamknięcia implementacji
Wykrywanie /list (content.*)STATICALLY_VALIDATED; zaobserwowano w runtimediscovery.fixture; domknięcie runtime użyło /list:situations na autoryzowanej instalacji (tożsamości, w tym nie-ASCII situations\Nur für Fortgeschrittene.osn)
/quiet, /serveUNAVAILABLEACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Flagi diagnostyki (/log, /logall, /omsi-logall, /verbose, /trace*)PARTIALPrzenoszone w DiagnosticsSpec; efekt ograniczony do śladu hosta

Host Windows i obszar powiadomień#

FunkcjaStanDowody
Wskaźnik w obszarze powiadomień (OmsiLaunchW.exe): ikona w obszarze powiadomień, stan, „End session” z potwierdzeniem i Cancel, ponowne uruchomienie Eksploratora (Explorer), okna dialogowe otwarte w chwili nadejścia zatrzymania, zatrzymanie w trakcie /observe-seconds, okna dialogowe błędu (S-16)RUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) na kandydacie 3 (po poprawce BUG-04): T01 sesja 6d827c13-caf8-4221-832a-c91d26f130e0 (ikona znaleziona w Shell_TrayWnd, okno stanu pt-BR, ponowne uruchomienie Eksploratora ponownie dodało ikonę, Cancel zachował sesję, End session zakończył ją w 607 ms i usunął ikonę); T02 sesja 0939a151-bf03-4ca9-8294-8b0088df7d30 (okno stanu i potwierdzenia otwarte podczas zatrzymania przez potok); T03 sesja 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; T04 sesja 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (okna dialogowe błędu argumentów, braku aktywnej sesji i błędu sesji z kodami). Kody wyjścia shimu 100-106 nie wystąpiły.
Ponowne uruchomienie /silent zwracające 0 po starcie hostaRUNTIME_VALIDATEDRunda domknięcia runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) T04 sesja 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (kandydat 3, po poprawce BUG-03): program uruchamiający zwrócił 0, a wywołujący przechwytujący jego wyjście otrzymał koniec strumienia po 0.4 s, podczas gdy sesja OmsiLaunchW działała bez okna konsoli; sesja zatrzymała się z dokładnym przywróceniem
Kody wyjścia shimu programu rozruchowego (bootstrapper) 100-106, dynamiczny bufor ścieżki (S-21)STATICALLY_VALIDATEDTest-ReleaseIdentity.ps1

Ponowny test audytu dokumentacji (domknięcie dokumentacji 0.1.0-beta3)#

Pakiet 9F8CC87B238A677F7238C262E8FE0496832263B6C0A58083409EB485C03C6F17 na autoryzowanej instalacji, przy czym BUG-05, BUG-06, BUG-07 i test dymny powtórzono na pakiecie końcowym B8462ED6C596843E778C33DF4E93EBA3ACC875B7E43B011D60E5A21A16032E35 (R01 sesja 56cdee4b-9160-49fc-b0fd-5134ff9fe2d0, sesja doc capture 40046805-5337-48fc-90dd-e7d3500ed3b4); dowody w research/reports/documentation-audit/runtime/ i research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md.

PozycjaStanDowody
OmsiLaunchW.exe zgłasza uruchomienie niemożliwe do uruchomienia (BUG-06)RUNTIME_VALIDATED/new ... /date:2026-09-20 w OmsiLaunchW.exe: okno dialogowe Requested capability unavailable: world.explicit-date / Code: OL_E_CAPABILITY_UNAVAILABLE, kod wyjścia 1, brak procesu OMSI (doc-bug06-dialog.json; zainstalowany pakiet 9f8cc87b..., zgodnie z projektem nie jest tworzona żadna sesja)
Ogłaszane ścieżki poleceń CLI są rzeczywistą składnią (BUG-07)RUNTIME_VALIDATEDKażda alternatywa ścieżki poleceń klienta wypisywana przez zainstalowane help --json i capabilities --json (32 deskryptory) została zaakceptowana przez zainstalowany parser; żadna nie spowodowała wypisania tekstu pomocy (doc-bug07-routes.json; zainstalowany pakiet 9f8cc87b...)
Każdy wiersz poleceń ze strony przykładów CLIRUNTIME_VALIDATED43 wiersze klienta wykonane względem sesji właściciela 08df97b8-06cc-4faa-be8b-f49ca1538dce (zapisana sytuacja; events watch pominięto, ponieważ działa do Ctrl+C), zakończone własnym session stop strony (kod wyjścia właściciela 0). Wszystkie były zgodne ze stroną z wyjątkiem vehicle.constant.get z name=max_speed, stałej, której ten autobus nie ma; strona używa teraz antrieb_getr_version. Przykład profilu grundorf-quick nie dał się zaplanować (podwojone ukośniki odwrotne w zwykłych skalarach YAML) i został poprawiony; każdy wiersz bez sesji uruchomiono z katalogu głównego instalacji, wiersze uruchomienia z /plan (doc-client-examples.json, doc-examples-no-session.json, doc-profile-example.json)
Test dymny NEW_MAP z /observe-seconds na pakiecie końcowymRUNTIME_VALIDATEDR01 sesja 08570134-cfd8-4726-a472-5f6dd2f04c8f, czysty stan końcowy (research/reports/runtime-closure/doc-R01-*)

Skonsolidowana lista RUNTIME_VALIDATION_REQUIRED#

Runda domknięcia runtime z 2026-09-23 zamknęła poprzednią kolejkę. Pozostaje ona pusta z wyjątkiem pozycji, których nie da się bezpiecznie wywołać na tej instalacji:

  1. Rozgrywka, odczyty, polecenia i zatrzymanie dla Steam LAA: wymagają autentycznej instalacji Steam (środowisko; powyższy wiersz ma stan PARTIAL).
  2. Usuwanie RoadVehicle i Human (RV-002): brak bezpiecznego źródła usuwania (powyższy wiersz ma stan PARTIAL).

Pozycje, które pozostają offline, ponieważ nie da się ich wywołać spoza produktu, są oznaczone w swoich wierszach i nie należą do kolejki: uszkodzenie odpowiedzi w skrzynce, zbyt duże odpowiedzi, obcinanie historii zdarzeń, przejście D3D lost, wylogowanie, kody wyjścia shimu 100-106 oraz odroczona gałąź odzyskiwania sprzed odcisków.

Powiązane: możliwości, znane ograniczenia, transakcje i odzyskiwanie, zgodność.