Stato della validazione a runtime

Documentazione della versione v0.1.0-beta.3Vedi il sorgente su GitHub

Traduzione della pagina originale in inglese di OmsiLaunch 0.1.0-beta3. La pagina inglese è normativa: in caso di differenze prevalgono la pagina inglese e il codice.

Questa pagina è l'unica tabella delle evidenze per OmsiLaunch 0.1.0-beta3. Ogni riga indica una capability (funzionalità) o una caratteristica e il relativo stato di evidenza. RUNTIME_VALIDATED può citare research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md (id della matrice RV-nnn, blocchi BI-nnn, id di sessione della sua tabella di esecuzione del 2026-09-20) oppure il report post-Fable Round A research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md (RA-nnn); tutto il resto deriva dal codice e dalle suite di test offline. Il ciclo di hardening del 2026-09-21 (research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md, rilievi da S-01 a S-34) ha modificato il comportamento di ripristino, recupero, piano di controllo e confini; tali modifiche avevano solo evidenza offline. Il ciclo finale di chiusura a runtime del 2026-09-23 (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md, id di scenario come F01, S05, T01, candidati 2 e 3) le ha eseguite in sessioni reali sull'installazione autorizzata; le righe promosse da quel ciclo citano i relativi id di scenario e id di sessione. RUNTIME_VALIDATED può quindi citare anche quel report.

Stati di evidenza:

StatoSignificato
RUNTIME_VALIDATEDOsservato in una sessione canonica registrata nella matrice (id e sessione citati).
STATICALLY_VALIDATEDImplementato e coperto da test offline (tools/OmsiLaunch.TestHost, tests/*), non osservato in una sessione reale dall'ultima modifica.
PARTIALImplementato, ma l'evidenza è incompleta o contraddetta, oppure il comportamento è notoriamente limitato.
RUNTIME_VALIDATION_REQUIREDComportamento modificato o mai osservato; deve essere validato in una sessione reale prima di poter essere promosso.
UNAVAILABLENon implementato o deliberatamente rifiutato.

Ciclo di vita della sessione e transazione#

FunzionalitàStatoEvidenza
Avvio headless NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start)RUNTIME_VALIDATEDMatrice, sezione "Existing Runtime Evidence"; sessioni e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf)
Avvio SAVED_SITUATION (world.saved-situation)RUNTIME_VALIDATEDNota di GetCapabilitiesAsync e matrice (Berlin-Spandau, modulo Start e Button1Click)
Terminazione forzata tramite session.stop e ripristino esattoRUNTIME_VALIDATEDSessione 50a1f1ec: l'arresto normale non ha lasciato alcun processo OMSI né alcun journal
Idempotenza dell'avvio (PluginStart ripetuto)RUNTIME_VALIDATEDSessione 50a1f1ec
Overlay semantico di options.cfg e ripristino esatto a livello di byte (RV-005)RUNTIME_VALIDATEDSessione 1e8e0548: AIMaxCountRandom 150/200 più coda preservata; hash ripristinato A12982C3...
Splash screen gestita più transazione di overlay (RV-006)RUNTIME_VALIDATEDMatrice RV-006 PASS (batch di presentazione: gestita predefinita, gestita personalizzata, Unset); sessioni di Release Presentation 001 388cf5d2-7310-4301-9313-e62c4c08a346, 794cae34-a2ac-4fcf-8981-f142ac14c308, 12a74b24-6c78-4863-8ffe-947651212eeb
Recupero dopo uscita anticipata (RV-008, terminazione forzata di OMSI)RUNTIME_VALIDATEDSessioni post-Fable Round A 9e7cad79-9c35-4f93-bfc8-71f455513f82 (dopo il gameplay) e dcac497e-ff35-4c97-b5e4-98b660f88032 (dopo world.starting, prima del gameplay): owner completato, journal/lease rimossi, options.cfg e stato della splash screen originariamente assente corrispondenti agli snapshot. L'errore di avvio nativo e l'iniezione di un ripristino fallito restano separati.
Confini di errore di avvio e di ripristino deliberatamente fallito (parte restante di RV-008)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): il timeout di avvio SF01 sessione 0b21c664-b0b2-46b2-9b6b-def536765fff e l'errore del mondo segnalato dal plugin SF02 sessione 53358c75-469b-41d5-9ddb-cdb1d1ff828d si sono conclusi in Failed con codici tipizzati e un ripristino esatto; il ripristino fallito F01 sessione d4194a69-d858-42fe-97c7-ce93ccbdc3f6 (un file di proprietà della sessione bloccato da un processo di solo test durante l'arresto) ha restituito OL_E_RESTORE_FAILED, ha conservato journal e backup, e /recover ha ripristinato esattamente lo stato precedente alla sessione. I produttori di errori sono esclusivamente infrastruttura di test.
Ripristino degli artefatti di sessione per i target .itx e Texture\standard.ipr (S-01)RUNTIME_VALIDATEDIl Round A ha ripristinato percorsi esistenti in 47efd323-4ce1-400a-ac83-74893cf82f26; ha creato e rimosso un target registrato, originariamente assente, all'arresto normale in 8d9bdedf-d7de-4c64-a8b1-627ae4deff7b; e ha ripetuto tale pulizia attraverso l'interruzione dell'owner più /recover in aa9a45d4-302e-4cf5-8490-f5a1c9e44b79.
closecheck come eliminazione di sessione e rimozione del marcatore obsoleto (S-13)RUNTIME_VALIDATEDLe sessioni del Round A, tra cui 47efd323-4ce1-400a-ac83-74893cf82f26, hanno registrato closecheck.stale-removed seguito da restore.session-artifact-removed; non è rimasto alcun journal.
Recupero anticipato prima della costruzione dell'overlay, recupero differito pre-fingerprint (S-05)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) S05: owner della sessione f755ed51-b85c-4df2-b062-5bf65c768b32 terminato con un journal in sospeso (maxFPS=77 attivo); l'avvio successivo, sessione 291ea22b-f9b3-42a4-be07-7f0c055c7113, ha registrato PENDING_JOURNAL_RECOVERED prima di TRANSACTION_STARTED, è stato eseguito con il proprio overlay (88) e si è concluso identico a livello di byte allo stato precedente la prima sessione. Il ramo differito pre-fingerprint resta offline (transaction.legacy-journal-ownership-migration).
Ripristino dei metadati (timestamp, attributi, sola lettura), flush write-through, pulizia dei backup (S-12)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S12a sessione 40de172b-e144-4f0a-9207-09c80b5d7df7 (timestamp noto di options.cfg) e S12b sessione d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7 (timestamp più ReadOnly): l'overlay era attivo durante la sessione (ReadOnly rimosso per OMSI), e byte, ora dell'ultima scrittura, ora di creazione e attributi sono stati ripristinati esattamente; non è rimasta alcuna directory di backup.
/recover sotto il lease dell'installazione; rifiuto nella finestra pre-PID (S-04)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S04 sessione 1fb2aad5-2985-4fa4-9c5a-6186f51d37b8: con un owner attivo /recovery-status e /recover hanno restituito OL_E_INSTALLATION_BUSY e un secondo avvio è stato rifiutato; con l'owner terminato e OMSI lasciato in esecuzione, /recover e un nuovo avvio sono stati rifiutati finché OMSI non è uscito, dopodiché /recover ha ripristinato esattamente. S04b sessione 5e57ca51-ab5e-4e94-a0d0-531735ee4057: un journal pre-PID (iniezione di guasti dell'harness) è stato rifiutato mentre era in esecuzione un qualsiasi Omsi.exe dalla radice ed è stato recuperato dopo l'uscita; un closecheck scritto da quell'OMSI viene conservato con OL_W_RESTORE_FOREIGN_FILE_RETAINED (documentato, conservativo).
Ripianificazione in StartSessionAsync, OL_E_PLAN_NOT_RUNNABLE su un piano obsoleto (S-15)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R02: con un plugin elencato nel manifest spostato altrove dopo la pianificazione, StartSessionAsync ha sollevato OL_E_PLAN_NOT_RUNNABLE: OL_E_PERMANENT_PLUGIN_MISSING prima che esistesse qualsiasi sessione (piano 4797c9ce-6eb3-47b1-b09d-03562dd3bd44, candidato 2, dopo la correzione BUG-01)
Ciclo di vita dell'owner: arresto tramite pipe, Ctrl+C, arresto dall'area di notifica, uscita di OMSI, owner terminato, /observe-secondsRUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): arresto tramite pipe durante /observe-seconds L06 sessione 300a563e-7b0e-4f01-afbd-9e15df32c7e6; Ctrl+C L03 sessione 5e2aca54-bae2-4fc6-a106-93699e755bfc (owner terminato 577 ms dopo il segnale); OMSI terminato L05a sessione d69658f9-16f6-43e9-8e36-682114b97e14; finestra principale di OMSI chiusa L05b sessione 76b11ba4-8ddb-4611-9a1c-8be317cd0337 (OMSI ignora WM_CLOSE; concluso con terminazione forzata); arresto dall'area di notifica T01/T03 sessioni 6d827c13-caf8-4221-832a-c91d26f130e0, 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; owner terminato S05. Ogni percorso si è concluso con un ripristino esatto. Se l'owner viene terminato di colpo, Omsi.exe continua a essere eseguito (per scelta progettuale); il recupero viene rifiutato finché non esce (S04).
Budget ProcessExit di 4 s alla chiusura della console o al logoffRUNTIME_VALIDATED (chiusura della console)Ciclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) L04 sessione 559d0f1d-7d5b-4b6b-b70c-0acb272d53db: finestra della console chiusa; il ripristino si è completato entro il budget, la sessione ha raggiunto Completed senza journal; Windows ha terminato l'owner circa 5 s dopo la chiusura (uscita 0xC000013A). Il logoff non è stato verificato.
Arresto cooperativo tramite WM_CLOSEUNAVAILABLENon implementato (decisione di prodotto, S-11). Chiusura a runtime L05b: OMSI non si è chiuso entro 30 s dall'invio di WM_CLOSE alla sua finestra principale. ShutdownTimeoutSeconds non viene utilizzato.
Semantica del lease dell'installazione (semaforo Local\)STATICALLY_VALIDATEDlease.cross-thread-release; limiti documentati come rischio accettato (S-18)
Conservazione di CP1252 durante la modifica dei file OMSI (S-07)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) C01 sessione 84a71235-d618-4917-9af4-c2a6025742f4: options.cfg con un valore CP1252 accentato (inclusi 0x80 e 0x96) modificato tramite /set; il file attivo ha mantenuto i byte CP1252 senza EF BF BD, e il file era identico a livello di byte dopo la sessione
Individuazione dei contenuti che salta i reparse point (S-23)STATICALLY_VALIDATEDTest discovery.*
Conservazione della diagnostica (le 50 sessioni più recenti) (S-26)STATICALLY_VALIDATEDHostTrace.Prune
I blocchi transitori dei file (antivirus, indicizzatore) su scritture ed eliminazioni della transazione vengono ritentati per circa 1.5 s; i blocchi persistenti continuano a fallire (ciclo di correzione CP-10)STATICALLY_VALIDATEDtransaction.transient-lock-retried, transaction.restore-failure-recovery (il blocco persistente continua a fallire); due errori offline intermittenti osservati prima della correzione, nessuno in 16 esecuzioni successive

Plugin permanente e piattaforma#

FunzionalitàStatoEvidenza
Profilo Omsi23004_692EBFBF (692EBFBF...6243, 8,503,440 byte)RUNTIME_VALIDATEDOgni sessione della matrice
Eseguibile Steam LAA (7DAB063D...D759)PARTIALChiusura a runtime LAA01 sessione 9ec975ca-7820-47be-b806-5f5a94aad4ab: una copia controllata (derivata dall'originale non modificato dell'installazione con IMAGE_FILE_LARGE_ADDRESS_AWARE e un checksum PE ricalcolato; 8,503,440 byte, characteristics 0x81AE) corrispondeva all'hash, il fingerprint è stato accettato e il piano era eseguibile. L'immagine è l'eseguibile Steam originale protetto da DRM: al di fuori di un'installazione Steam autentica passa il controllo al client Steam ed esce, quindi la sessione è fallita con OL_E_PROCESS_EXITED_EARLY e un ripristino esatto. Gameplay, letture, comandi e arresto richiedono un'installazione Steam autentica (ENVIRONMENT).
Identità dell'installazione: lease e nome della pipe di controllo derivano da un'unica definizione, InstallationPaths.IdentityKey (C:\OMSI = C:\OMSI\ = C:\OMSI\. = C:\foo\..\OMSI = varianti di maiuscole/minuscole; C:\OMSI-A differisce da C:\OMSI-B) (ciclo di correzione CP-02, addendum A/B)STATICALLY_VALIDATED; osservato a runtimelease.root-normalization, paths.installation-identity-and-containment. Chiusura a runtime ID01: mentre era in esecuzione la sessione 01bfc780-10ef-4390-b700-c08bf809a42f, i secondi avvii e /recovery-status con la radice scritta con \., con un segmento .., in minuscolo e in maiuscolo sono stati rifiutati (OL_E_SESSION_ALREADY_ACTIVE, OL_E_INSTALLATION_BUSY); lo stesso per la grafia con separatore finale (ID01b, sessione ba3ea7c9-9826-453d-b447-81c48763e18f).
Coerenza del pacchetto di rilascio: staging pulito, ricevuta di build di Native.x86 (contenuto, non timestamp), manifest senza BOM, integrità della chiusura in staging e dell'archivio riestratto, l'installer copia il manifest (ciclo di correzione CP-01, Round A RA-007, addendum F/G/H)STATICALLY_VALIDATED; osservato nell'installazioneTest-PackagingPipeline.ps1 (candidato coerente più 16 casi negativi), runtime.release-manifest-bom, runtime.release-manifest-strict-parser. Chiusura a runtime: i pacchetti installati nell'installazione autorizzata erano coerenti con i propri manifest, e ogni sessione è stata pianificata con plugin.integrity.reference = manifest (registro dei candidati research/reports/runtime-closure/CANDIDATES.md).
Integrità della chiusura del plugin rispetto a release-manifest.json (S-09)RUNTIME_VALIDATEDSessione del Round A 47efd323-4ce1-400a-ac83-74893cf82f26; le sessioni di chiusura a runtime sui pacchetti di rilascio installati (per esempio R01 sessione 878b5e3c-2f9d-46bf-a918-11bb2e227e55, candidato 3) sono state pianificate con plugin.integrity.reference = manifest; R02 ha mostrato che un plugin elencato mancante blocca l'avvio.
Validazione del build in-process (plugin.build.invalid -> OL_E_BUILD_VALIDATION_FAILED)RUNTIME_VALIDATEDSessioni della matrice; due sessioni precedenti con plugin.build.invalid su un plugin obsoleto
Handoff v4 con SHA-256RUNTIME_VALIDATEDTest di integrazione handoff.*; ogni sessione
Plugin inerte senza OmsiLaunch (nessun handoff)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) P01 (avvio semplice di OMSI, nessuna sessione OmsiLaunch; pid di OMSI 35564): la chiusura del plugin e l'host .NET sono stati caricati, OmsiLaunch.Native.x86.dll non è stato caricato, i tre punti di patch nativi contenevano i byte non modificati di Omsi.exe, e non sono comparsi né pipe di controllo, né journal, né diagnostica
Criterio di ricerca delle DLL (AssemblyDirectory | System32) (S-24)STATICALLY_VALIDATEDAttributi dell'assembly
Rilevamento di Windows 10+ x64 e rifiuto delle altre piattaformeSTATICALLY_VALIDATEDCurrentWindowsX64Platform.Detect

Canale di controllo runtime e piano di controllo#

FunzionalitàStatoEvidenza
Integrità del formato di trasmissione della mailbox, associazione alla sessioneRUNTIME_VALIDATEDTutte le sessioni runtime; runtime-command.wire-guard, runtime-command.session-binding
Scarto delle risposte tardive e nessun blocco del canale dopo un timeout (S-08)RUNTIME_VALIDATEDSessione del Round A 173414a5-ee53-4b10-aeb7-046f40b851e9: un client esterno ha abbandonato road-vehicles.spawn dopo 250 ms; un map.read successivo è riuscito e l'arresto canonico ha ripulito la sessione. Il rifiuto delle risposte sovradimensionate resta solo offline.
Piano di controllo locale: nome della pipe per installazione, associazione a session_id, errori tipizzati degli handler, limite di 64 KiB (S-06)RUNTIME_VALIDATEDSessione del Round A a00c6ff8-9cc9-4bce-ae44-c4314daad7bf: protocollo non valido, arresto non associato, richiesta runtime per la sessione errata e frame sovradimensionato sono stati rifiutati; una successiva richiesta di stato valida e un arresto associato sono riusciti. Il rifiuto delle risposte sovradimensionate resta solo offline.
Slot di telemetria con sequenza, salto dei campioni incoerenti, eventi consecutivi identici (S-25)STATICALLY_VALIDATEDtelemetry.sequence-samples
Il confine dell'API rifiuta internal.* e rimuove le chiavi interne dai risultati (S-02)STATICALLY_VALIDATEDOmsiLaunchService.ExecuteRuntimeAsync; validazione del registro
Una risposta della mailbox non valida o sovradimensionata libera lo slot; la richiesta successiva riesce (ciclo di correzione CP-03)STATICALLY_VALIDATEDruntime-command.oversized-response-rejected; lato plugin plugin-runtime.oversized-and-abandoned-responses. Non producibile a runtime: nessuna operazione pubblica restituisce più di uno slot (la più grande circa 37.8 KB, chiusura a runtime R03).
Ogni percorso terminale di una richiesta runtime lascia la mailbox riutilizzabile: rifiuto tipizzato, timeout, annullamento da parte del chiamante, id di richiesta riutilizzato, operazione interna, sessione errata, argomento mancante (runtime); risposte malformate, sovradimensionate, corrotte, obsolete e orfane (offline)RUNTIME_VALIDATED (percorsi raggiungibili)Ciclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R03 sessione 1134fdc3-a469-4ff5-a511-9964ed65e7cd: ogni errore era tipizzato e la richiesta valida successiva è riuscita. I percorsi di corruzione delle risposte non possono essere prodotti dall'esterno e restano offline (runtime-command.terminal-paths-leave-channel-usable).
Risposta sovradimensionata del piano di controllo restituita come OL_E_CONTROL_RESPONSE_TOO_LARGE; stato/eventi ridotti a un frame a partire dai più vecchi (ciclo di correzione CP-04)STATICALLY_VALIDATEDcontrol-plane.binding-and-typed-errors. Non producibile a runtime: la risposta pubblica più grande osservata nel ciclo di chiusura a runtime era di circa 37.8 KB (R03), e la cronologia degli eventi di una sessione resta molto al di sotto di un frame.
Il piano di controllo non resta mai silente una volta connesso: frame malformati, sovradimensionati, con lunghezza negativa, vuoti, JSON null, senza comando, con argomento non stringa, con protocollo non valido, con comando sconosciuto, non associati e per la sessione errata; frame client troncati; client bloccati; client che si disconnettono prima della rispostaRUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R04 sessione faaaf8a8-126d-4a23-a8f3-381e47c58de6 (candidato 2, dopo la correzione BUG-02): ogni frame ha ricevuto il proprio errore tipizzato, ciascuno seguito da un session.status riuscito; un client bloccato non ha bloccato gli altri; un arresto associato in concorrenza con un road-vehicles.spawn in corso ha terminato la sessione e il chiamante dello spawn ha ricevuto una fine di stream pulita. OL_E_TIMEOUT e i metadati di troncamento restano offline (control-plane.errors-never-silent).
Harness batch runtime (/runtime-batch, /runtime-write-batch, /d3d-batch)INTERNAL (STATICALLY_VALIDATED)Solo harness di validazione (S-27)

Operazioni runtime#

Operazione/iStatoEvidenza
time.read, time.setRUNTIME_VALIDATEDSessione e5454061 (scrittura, SetTime, rilettura, ripristino)
weather.read, weather.actual.readRUNTIME_VALIDATEDSessione e5454061
weather.setUNAVAILABLERifiutato con OL_E_RUNTIME_SETTING_NOT_PERSISTENT; persistenza FAIL nelle sessioni e5454061 e 5f641c8d; rifiuto PASS in 50a1f1ec
map.readRUNTIME_VALIDATEDRivalidato dopo la correzione dello slot globale Map nella sessione 9dd62626-94c6-4cd7-bb6f-0288327696f4: loaded=true, 19 tile, identità Grundorf, nome file, descrizione e intervallo di anni coerenti.
camera.read, camera.setRUNTIME_VALIDATEDSessione e5454061 (scrittura del FOV, rilettura, ripristino)
camera.lock, camera.unlockRUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) CAM01 sessione 5dfd9b96-fa94-4060-85af-0c9d19823a73: la situazione salvata Linie 5 ha fornito un PlayerVehicle (rv-000001); i blocchi sulle famiglie 0, 2 e 1 sono stati confermati dalla rilettura della telecamera; lo sblocco ha rilasciato il criterio
road-vehicles.read, road-vehicles.list, road-vehicle.readRUNTIME_VALIDATEDSessioni e5454061, 5f641c8d
Durata degli handle RoadVehicle e rilevamento degli handle obsoleti (RV-002)PARTIALNessun produttore sicuro di rimozioni: in tre finestre di chiusura a runtime (H01, H01b, H01c, fino a 180 s, con un salto dell'orologio) le popolazioni RoadVehicle e Human di Grundorf sono solo cresciute; nessuna operazione pubblica rimuove un oggetto. Il rilevamento degli handle obsoleti resta offline (S-19). La regola generazione/ABA è validata a runtime per le texture D3D (H02).
road-vehicles.spawn (RV-003)RUNTIME_VALIDATEDSessione 5f641c8d: 2 -> 3, rv-000003 risolto
road-vehicles.place-randomRUNTIME_VALIDATEDMatrice: collezione 2 -> 4
player-vehicle.readRUNTIME_VALIDATEDRound A RA-002 sessione 9dd62626-94c6-4cd7-bb6f-0288327696f4 (present=false); chiusura a runtime CAM01 sessione 5dfd9b96-fa94-4060-85af-0c9d19823a73 ha letto un PlayerVehicle presente da una situazione salvata
humans.read, humans.list, human.readRUNTIME_VALIDATEDSessione e5454061
timetable.read, timetable.*.list, timetable.logs.readRUNTIME_VALIDATEDSessione e5454061; voci di tracciato (track entry) 91 record
Troncamento degli elenchi limitati invece di OL_E_RUNTIME_RESPONSE_TOO_LARGE (audit della documentazione BUG-05)RUNTIME_VALIDATEDNuovo test dell'audit della documentazione sul pacchetto 9F8CC87B..., situazione salvata situations\Linie 5.osn (Berlin-Spandau): timetable.track-entries.list ha restituito 137 di 825 voci e timetable.tour-entries.list 224 di 4747 con truncated=true (sessioni 08df97b8-06cc-4faa-be8b-f49ca1538dce e il nuovo test di acquisizione della documentazione); prima della correzione entrambe fallivano con OL_E_RUNTIME_RESPONSE_TOO_LARGE (sessione f51dcb59-a723-4570-b6c5-b61e628a7993). Evidenza: research/reports/documentation-audit/runtime/.
drivers.read, tickets.readRUNTIME_VALIDATEDSessione e5454061
vehicle.variables.list, vehicle.variable.get, vehicle.variable.setRUNTIME_VALIDATEDRefresh_Strings 0 -> 1 -> 0 nella sessione runtime registrata come Runtime-Proven in research/reports/OmsiHook-Parity-Wave-A-Closure-001.md (1,025 nomi enumerati, secondo OMSILAUNCH-AUTONOMOUS-BUILD-001.md); il report non registra l'id di sessione
vehicle.string-variables.list, vehicle.string-variable.getRUNTIME_VALIDATED (solo lettura)Sessione e5454061; scritture BI-004 UNAVAILABLE
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.readRUNTIME_VALIDATEDSessione e5454061
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, rifiuto degli handle rilasciatiRUNTIME_VALIDATEDMatrice, "basic D3D texture lifecycle"; note delle capability runtime.d3d.* (sessione 4378899d per lo slot del dispositivo)
Eventi di perdita / reset / ripristino del dispositivo D3D, invalidazione della generazione (RV-007)RUNTIME_VALIDATED (resetting/restored)Ciclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) D01 sessione fc07946e-58dd-4ddc-af7e-10c7e61a899a: una modifica temporanea della modalità di visualizzazione (produttore di test, mai pubblico, nessuna chiamata di reset sintetica) ha indotto OMSI a eseguire due volte il reset del dispositivo. Sono stati emessi d3d.resetting/d3d.restored, la generazione è avanzata a ogni ciclo, una richiesta durante il reset ha ricevuto OL_E_D3D_RESET_IN_PROGRESS, la texture precedente alla perdita è stata rifiutata con OL_E_D3D_STALE_RESOURCE_HANDLE e le nuove texture hanno funzionato. OMSI è passato direttamente a DEVICENOTRESET, quindi una transizione lost distinta non è stata prodotta. Un tentativo ha causato il crash di OMSI in DSound.dll (cambio dell'endpoint audio del display; l'owner ha ripristinato esattamente).
events.read / events watchRUNTIME_VALIDATEDOgni sessione (ciclo di vita guidato dalla telemetria)
internal.road-vehicles.make-basicINTERNALIrraggiungibile attraverso le superfici pubbliche

Funzionalità di avvio#

FunzionalitàStatoEvidenza
/set e settings del profilo (configuration.options.semantic)RUNTIME_VALIDATEDRV-005
Profili di sessione (compilatore rigoroso, conflitti, confinamento dei percorsi inclusi i reparse point S-17)RUNTIME_VALIDATED (ambito dell'avvio da profilo)Round A RA-009, Test-Beta3SessionProfile.ps1, 2026-09-22: splash screen gestita, Internet Textures (texture da Internet) disattivate e preset graphics.maxFPS=30; options.cfg ripristinato, fixture intatta, nessun journal/lease/processo.
Caricamento di /spec (limite di 1 MiB, proprietà sconosciute rifiutate, timeout rispettati) (S-20)STATICALLY_VALIDATEDTest cli.*
Splash screen gestita PTB/ENG/DEU/FRARUNTIME_VALIDATEDRV-006
Internet Textures Disabled (soppressione del downloader in-process)STATICALLY_VALIDATEDPercorso di telemetria internet-textures.suppressed; non citato nella matrice
Protezione dei target .itx delle Internet Textures (Round A RA-011/RA-012, ciclo di correzione CP-05, addendum E): radice canonica, target canonico, percorso relativo, regole sui segmenti; è ammesso solo un segmento di directory denominato texture sotto la radice (mytexture, texture_backup, texture2 e texture nella radice assoluta non lo sono); target con attraversamento, assoluti, relativi alla radice e junction vengono rifiutati; le diverse grafie convergono in un unico percorso canonico della transazioneSTATICALLY_VALIDATEDpresentation.itx-target-root-normalization, presentation.itx-target-guard-rejections
Internet Textures OverrideRUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): I01 sessione 6eac2dac-c7e9-49a1-acbf-2a5d59c1c0d3: il downloader di OMSI ha inviato HEAD e GET a un server di loopback per un target esistente e per uno originariamente assente, li ha scritti entrambi, e dopo l'arresto canonico il target assente è stato rimosso e quello esistente ripristinato in modo esatto a livello di byte; I02 sessione a8f2b720-e41a-4e34-86bf-125bf519a5bd: lo stesso dopo la terminazione di owner e OMSI, tramite /recover.
/date, /time, /year, flag del meteo, flag del veicolo del giocatore (STATICALLY_PARTIAL)UNAVAILABLEIl pianificatore contrassegna il piano come non eseguibile (OL_E_CAPABILITY_UNAVAILABLE); il plugin rifiuta le modalità di data/ora diverse da Unset
/entrypoint:<identity> (BI-001)PARTIALPiano non eseguibile (RUNTIME_PARTIAL)
/last (LastMapState, BI-006)UNAVAILABLEUNSUPPORTED_FOR_CURRENT_PROFILE
Overlay di tastiera/controller InputSpec (BI-005)UNAVAILABLEI parser esistono; non applicati
Assegnazione headless del PlayerVehicle (BI-007), SetActualDateTime (BI-002), controllo del meteo ICAO (BI-003), scritture delle variabili stringa (BI-004), riposizionamento tra tile (BI-008)UNAVAILABLEBloccati fino al completamento dell'implementazione
Individuazione tramite /list (content.*)STATICALLY_VALIDATED; osservato a runtimediscovery.fixture; la chiusura a runtime ha usato /list:situations sull'installazione autorizzata (identità inclusa quella non ASCII situations\Nur für Fortgeschrittene.osn)
/quiet, /serveUNAVAILABLEACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Flag di diagnostica (/log, /logall, /omsi-logall, /verbose, /trace*)PARTIALTrasportati in DiagnosticsSpec; effetto limitato alla traccia dell'host

Host Windows e area di notifica#

FunzionalitàStatoEvidenza
Indicatore nell'area di notifica (OmsiLaunchW.exe): icona nell'area di notifica, stato, «End session» con conferma e Cancel, riavvio di Esplora risorse, finestre di dialogo aperte mentre arriva un arresto, arresto durante /observe-seconds, finestre di dialogo di errore (S-16)RUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) sul candidato 3 (dopo la correzione BUG-04): T01 sessione 6d827c13-caf8-4221-832a-c91d26f130e0 (icona trovata in Shell_TrayWnd, finestra di stato pt-BR, il riavvio di Esplora risorse ha riaggiunto l'icona, Cancel ha mantenuto la sessione, End session l'ha terminata in 607 ms e ha rimosso l'icona); T02 sessione 0939a151-bf03-4ca9-8294-8b0088df7d30 (finestre di stato e di conferma aperte durante un arresto tramite pipe); T03 sessione 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; T04 sessione 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (finestre di dialogo di errore negli argomenti, di nessuna sessione attiva e di errore della sessione, con codici). I codici di uscita dello shim 100-106 non sono stati prodotti.
Riavvio con /silent che restituisce 0 quando l'host si è avviatoRUNTIME_VALIDATEDCiclo di chiusura a runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) T04 sessione 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (candidato 3, dopo la correzione BUG-03): il launcher ha restituito 0 e un chiamante che ne catturava l'output ha ricevuto la fine dello stream dopo 0.4 s mentre la sessione OmsiLaunchW era in esecuzione senza finestra della console; la sessione si è arrestata con un ripristino esatto
Codici di uscita dello shim di bootstrap 100-106, buffer dinamico del percorso (S-21)STATICALLY_VALIDATEDTest-ReleaseIdentity.ps1

Nuovo test dell'audit della documentazione (chiusura della documentazione 0.1.0-beta3)#

Pacchetto 9F8CC87B238A677F7238C262E8FE0496832263B6C0A58083409EB485C03C6F17 sull'installazione autorizzata, con BUG-05, BUG-06, BUG-07 e lo smoke test ripetuti sul pacchetto finale B8462ED6C596843E778C33DF4E93EBA3ACC875B7E43B011D60E5A21A16032E35 (R01 sessione 56cdee4b-9160-49fc-b0fd-5134ff9fe2d0, sessione di acquisizione della documentazione 40046805-5337-48fc-90dd-e7d3500ed3b4); evidenza in research/reports/documentation-audit/runtime/ e research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md.

ElementoStatoEvidenza
OmsiLaunchW.exe segnala un avvio non eseguibile (BUG-06)RUNTIME_VALIDATED/new ... /date:2026-09-20 con OmsiLaunchW.exe: finestra di dialogo Requested capability unavailable: world.explicit-date / Code: OL_E_CAPABILITY_UNAVAILABLE, uscita 1, nessun processo OMSI (doc-bug06-dialog.json; pacchetto installato 9f8cc87b..., per scelta progettuale non viene creata alcuna sessione)
Le route CLI pubblicizzate sono sintassi reale (BUG-07)RUNTIME_VALIDATEDOgni alternativa di route client stampata da help --json e capabilities --json installati (32 descrittori) è stata accettata dal parser installato; nessuna ha stampato il messaggio di utilizzo (doc-bug07-routes.json; pacchetto installato 9f8cc87b...)
Ogni riga di comando della pagina degli esempi CLIRUNTIME_VALIDATED43 righe client eseguite sulla sessione owner 08df97b8-06cc-4faa-be8b-f49ca1538dce (situazione salvata; events watch saltato perché resta in esecuzione fino a Ctrl+C), concluse con il session stop della pagina stessa (uscita dell'owner 0). Tutte corrispondevano alla pagina tranne vehicle.constant.get con name=max_speed, una costante che quell'autobus non ha; la pagina ora usa antrieb_getr_version. L'esempio di profilo grundorf-quick non veniva pianificato (backslash raddoppiati in scalari YAML semplici) ed è stato corretto; ogni riga senza sessione è stata eseguita dalla radice dell'installazione, le righe di avvio con /plan (doc-client-examples.json, doc-examples-no-session.json, doc-profile-example.json)
Smoke test NEW_MAP con /observe-seconds sul pacchetto finaleRUNTIME_VALIDATEDR01 sessione 08570134-cfd8-4726-a472-5f6dd2f04c8f, stato finale pulito (research/reports/runtime-closure/doc-R01-*)

Elenco consolidato RUNTIME_VALIDATION_REQUIRED#

Il ciclo di chiusura a runtime del 2026-09-23 ha chiuso la coda precedente. Resta vuota, eccetto gli elementi che non possono essere prodotti in modo sicuro su questa installazione:

  1. Gameplay, letture, comandi e arresto con Steam LAA: richiedono un'installazione Steam autentica (ambiente; la riga sopra è PARTIAL).
  2. Rimozione di RoadVehicle e Human per RV-002: nessun produttore sicuro di rimozioni (la riga sopra è PARTIAL).

Gli elementi che restano offline perché non possono essere prodotti dall'esterno del prodotto sono indicati nelle rispettive righe e non fanno parte della coda: corruzione delle risposte della mailbox, risposte sovradimensionate, troncamento della cronologia degli eventi, la transizione D3D lost, il logoff, i codici di uscita dello shim 100-106 e il ramo differito di recupero pre-fingerprint.

Correlati: capability, limitazioni note, transazioni e recupero, compatibilità.