Update 1.0.2 — Know Your Car
This update fixes the single most damaging class of bug NRE had: it could work on the wrong car. Not visibly, not with an error — quietly. Your setups, your archive, the car limits, even the brain's accumulated history could all end up filed under a car you were not driving.
The root cause was that NRE had no single source of truth for which car you are actually in. It re-derived it in five different ways — entry name, livery, folder guesses, class, file headers — and the comparisons between those forms were loose enough to accept a different car entirely. A Porsche 963 file passed as a 911 GT3 R because they share the brand. A McLaren file passed as a "BMW M4 LMGT3 #46" because they share the class.
NRE now identifies your car from what the game itself declares, and refuses to guess when it cannot be sure.
🏎️ Car identity: three independent sources, zero guessing
- FIXED: modern WEC/ELMS entries are named after the TEAM, not the car — "Vista AF Corse 2026 #21:WEC", "Proton Competition 2026 #77:WEC", "DKR Engineering #4:ELMS25". There is no model name in there to recognise. NRE now reads the model the game writes in its own log for YOUR car, so team-only entries are identified exactly like any other.
- NEW: a second, independent source. Every setup file declares your entry NUMBER in its vehicle line (21_25_..., 77_26_..., 4_25_...). Matched against the number in your entry name, it tells two cars of the SAME class apart even when the game log is unavailable.
- NEW: a third source, built from the setup files already on your disk — entry number to car model. It works with no game log and no detected installation.
- None of these contains a list of cars. They read data the game writes, so they cover every car in Le Mans Ultimate — including ones added in future updates and modded content. Verified on 34 models: the 31 currently in the game plus 3 invented ones, to prove there is no closed list anywhere.
- When the number is ambiguous or unknown, NRE says nothing rather than picking a car. Guessing is exactly what produced the wrong results before.
🔧 Setups no longer filed under the wrong car
- FIXED: the car-matching rule accepted a different car when they shared only the brand, or only the class token (LMGT3, LMP3, LMP1, GTP). From there everything followed the wrong car: the archive folder, the setup files in your garage, the learned limits, and the brain's history.
- FIXED: switching between two cars of the SAME class (Ferrari 296 to Ford Mustang, both GT3) left NRE on the previous car. It now detects the change and builds a proper base for the new car from the game's own factory setup.
- FIXED: the accepted-by-class path is now marked as WEAK identity. It no longer becomes the session's truth while you are in the garage, where a leftover file from another car of the same class could still be sitting there.
- FIXED: the car folder was resolved from the brand alone. With a partial installation, "BMW M4 GT3" could be filed as the BMW M Hybrid V8. NRE now requires a model match, or answers honestly that it does not know.
- FIXED: the Telemetry Center kept the destination of the PREVIOUS session, so it warned "this setup belongs to another car" while pointing at the only destination it had. Destinations for the car you are driving now come first.
💾 Setup application: one fixed parameter no longer blocks everything
- FIXED, and this one was costing you entire sessions: if a proposal touched a parameter the game declares NON-ADJUSTABLE on your car — differential power on the LMGT3s, for example — the entire setup write was cancelled. Springs, anti-roll bars, wings, brake bias and pressures, all perfectly valid, were thrown away with it, and all you saw was "Setup application error". On a real Ferrari 296 LMGT3 file there are 60 such parameters: a single one in the proposal was enough to apply nothing, ever.
- The parameter that cannot move is now DROPPED — and named in the log — while the rest of the setup is applied. Nothing is weakened: that value was never going to be written anyway. Every protection stays, now per-parameter instead of all-or-nothing: no sentinel values, no negative indexes without real evidence, no special states (detached anti-roll bar, TC off), no fixed fields. If nothing at all can be applied, you still get the reason.
📁 Garage files: two files, one car name
- FIXED: the two visible files could carry DIFFERENT car names for the same session — the starting copy was named after your livery/team, the result after the technical model. NRE_1_ORIGINAL_ and NRE_2_USE_THIS_ now always share the same car name, and a new automated test makes sure the two code paths can never diverge again.
- FIXED: every livery variation used to leave behind an extra "original" file that was never cleaned up.
- FIXED: the cleanup archived the old NRE_Opt_/NRE_Base_ files but left their metadata files behind. Those orphans are now archived too — nothing is ever deleted, it all moves to Backups\Legacy.
🅰️ Assetto Corsa Competizione
- FIXED: setups could be written into ANOTHER car's folder. The destination was resolved by similarity, so a Ferrari 488 GT3 Evo setup landed in the plain 488 GT3 folder, and a 991 in the 991 II folder — the car name inside the file disagreed with the folder holding it. The write destination is now an exact match only; if the folder does not exist it is created with the correct name. Fuzzy matching remains only for READING existing setups.
🖥️ Runs on any PC — remaining gaps closed
- FIXED: on a PC where Le Mans Ultimate is not installed (ACC-only users), or where the Steam registry is unreadable, NRE scanned EVERY drive on EVERY lookup — and that lookup happens constantly. On a machine with large disks this meant repeated multi-minute freezes. The result is now cached, cheap methods run first, and the deep scan is a true last resort that runs at most once. If you install the game later it is found without restarting NRE.
- FIXED: two paths depended on the folder the program was launched FROM, so a desktop shortcut with a different "Start in" could send a report to an unpredictable place. Nothing depends on the launch folder any more.
- FIXED: NRE's own file reads could look like YOU loading a setup in the garage, causing it to silently switch its analysis base to a setup you never touched.
🧠 Data integrity
- FIXED: the same car could be recorded under three different identities — training log, setup archive and brain each used a different form of the name. The technical identity is now recorded alongside the entry name, so a livery change no longer fragments your history.
- The brain only adopts a technical identity when it is CONFIRMED. Previously a mis-validated file could migrate and merge your accumulated history under the wrong car — effectively irreversible.
- FIXED: applying a candidate from the Telemetry Center erased the live writer's state, so the setup list lost track of which car a destination belonged to and revision numbers restarted from 1 on every launch. State is now merged, and reloaded from disk at startup.
- FIXED: an offline session from one car could generate a candidate written as another car's setup with no warning. Session and destination classes are now cross-checked.
- The vehicle-identity guard — which existed and was tested but had never been wired in — is now the final gate before every setup write: the file being written must carry exactly the same vehicle identity as the one it replaces.
- FIXED: "no applicable change:" used to end with an empty colon. It now explains the real reason, which is usually that every recommendation is still observation-only at low confidence.
🚗 Car limits
- Verified that the shipped limits cover all 31 cars including the four LMP3s (ADESS AD25, Duqueine D09, Ginetta G61 Evo, Ligier JS P325), 158 parameters each, checked parameter by parameter against real min/max setup files: full coverage, nothing missing.
🧪 Quality
- This release adds 50 new automated regression tests built directly from the real failures above, so none of them can come back unnoticed. Full suite: 344 tests passing.