NRE was built to work like a race engineer: look at the data, change something, see if it helped, learn. Until now the last two steps never happened. Not because they were badly written — because the pipe between them was never connected.
Driving wrote nothing to the database. With no laps on record, the A/B comparison had nothing to compare. With no comparison, no result ever came back. So the statistics stayed at zero no matter how much you drove, the Telemetry Data Center stayed empty, and the brain counted your sessions and nothing else.
That pipe is now connected, end to end. Every timed lap you complete is recorded with the setup it was driven on. When you apply a change, that setup gets an identity. After enough laps on both sides, NRE compares them and tells you whether it worked — and writes the result into its own memory.
This update also fixes a set of bugs that made NRE look broken even where it wasn't: counters that lied, a lap counter that counted twice, a track that could get stuck "learning" forever, and a program that had no way to tell you what had gone wrong.
🔄 The learning loop, connected
- FIXED: driving wrote nothing to the internal database. Sessions, laps and telemetry only ever arrived through the manual import dialog — which is why the Telemetry Data Center was empty after weeks of driving, and why the setup-change history had nothing in it. Every timed lap is now recorded as you drive.
- FIXED: the A/B comparison could never conclude. It looks for laps by which setup they were driven on, and no lap carried that label — so even a perfect experiment came back "insufficient data" with zero laps on each side. Laps now carry it.
- FIXED: a setup applied while driving left no trace. NRE wrote the file into the game and recorded nothing, so there was no experiment to attribute your following laps to. Applying a change now opens a real experiment.
- FIXED: the result never reached the brain. After 155 sessions its notebook held 18 entries, every one of them with zero trials recorded and confidence still at the starting value. The A/B verdict now feeds both the per-parameter confidence and the vehicle memory the effect model trains on.
- FIXED: closing the app from the tray discarded the stint. Laps are now written one by one as you drive, so an abrupt exit costs you the last lap at most, not the session.
- The whole chain is read-only towards your driving: recording runs on its own thread and never touches the telemetry loop. If your disk stalls, NRE drops a lap from its log rather than costing you a braking point.
📊 Counters that told the truth
- FIXED: "Phase 2: DATA COLLECTION (3 laps remaining)" stayed at 3 forever. It was not a hang and not a random number — the count was read from a buffer that holds only the last 5 laps, against a target of 8. From lap five onwards it could only ever say 3, whether you had driven six laps or sixty. It now counts down properly: 7, 6, 5 … 0.
- FIXED: laps were counted twice. A completed lap announces itself twice a few ticks apart — first the lap number changes, then the lap time arrives from the timing feed — and both were counted. Six laps driven could show as 8, 10 or 12. Detached windows were not to blame: they were faithfully showing a number the engine had got wrong.
- FIXED: a track could get stuck "learning" forever. The first two laps of a session were accepted with no checks — and on a fresh install those two are the out-lap and the first flying lap, the two most likely to be odd. If they disagreed, every real lap afterwards was rejected as inconsistent. On a real user registry: 2 laps accepted, 38 rejected, stuck permanently. The saved track map now anchors the check from the first lap, and a consistent majority of rejected laps can rebuild a registry that went wrong.
🌡️ Tyre and brake temperatures
- FIXED: the carcass temperature was never actually read. A conversion error meant the displayed value was always the centre reading minus a fixed offset, which is not a measurement at all. NRE now reads the real value from the game — and says which of the two it is showing.
- NEW: inner and outer temperature per tyre, correctly oriented per side. This is what camber work needs, and its absence was silently blocking every camber recommendation on live sessions: the check required data that was never published.
- FIXED: temperatures arriving in kelvin are converted; impossible values are discarded rather than displayed.
🧠 What the engineer knows comes first
- FIXED: statistics could delete engineering knowledge. Three unlucky laps — traffic, a tow, a lift — were enough to permanently retire a rule like "mid-corner understeer → softer front anti-roll bar", weight 1.0, with its physical reasoning cited. Experience can now reduce the size of a step, never cancel the rule and never reverse its direction. Physics is not a matter of opinion.
- FIXED: the model was applied before the rules. Model deltas were poured in first and the knowledge base filled whatever was left — which, with a low change limit, was usually nothing. Engineering knowledge now goes first and the model works on what remains: it chooses between options that are already technically sound, instead of replacing them.
- NEW: when the model proposes the opposite direction to a rule, the rule wins and the disagreement is recorded rather than silently discarded.
- FIXED: the brain's confidence was scored on the wrong scale — lap-time differences in seconds fed into a formula expecting a 0-to-1 value. The practical effect was that consistent driving was read as a shock to the system. Existing brains are converted automatically on first run; nothing is lost.
🔍 Detection: corners, balance, kerbs
- FIXED: corner detection missed real corners. Long constant-radius sweepers were not recognised as corners at all, and a chicane could be read as one corner instead of a direction change. Both are now detected.
- NEW: understeer and oversteer are detected automatically from telemetry, by comparing how much steering angle a corner actually needs against how much that same corner usually needs from you — so it measures the car's behaviour, not your style.
- NEW: kerbs and bumps are detected from suspension loads, and separated into two different things: an impact you absorbed, and an impact that unsettled the car. Only the second is a setup problem.
- Both detectors require a repeatable pattern in the same place before reporting anything. A single kerb strike is an event, not a symptom.
🔌 Telemetry not working? Now it says why
- NEW, and this is the first wall most Le Mans Ultimate users hit: without the shared-memory plugin the game publishes nothing and NRE can see nothing. It could already diagnose the exact cause, repair the game configuration with a dated backup, and install the plugin file — and no screen ever asked it to. All you saw was "Disconnected".
- NRE now tells you which of the six possible causes it is, in your language, and offers a one-click repair where a repair is possible. Where it is not — plugin file missing, game not installed — it tells you exactly what to do and where.
- After repairing, it reminds you that Le Mans Ultimate must be restarted for the change to take effect.
📝 The program can finally speak
- FIXED: the released build compiles without a console, which means every diagnostic message NRE printed went nowhere at all. Not to a file, not anywhere. There are over 900 such messages written into the program — including everything the setup writer and the engine have to say when something fails. If you reported a problem, there was nothing you could send.
- NEW: everything now goes to Documents\Neuralic Race Engineer\Logs\console.log, timestamped, with errors marked. It rotates at 4 MB keeping the most recent lines, because the end of the file is the part that matters when something goes wrong.
- If you hit a problem, that file is what to attach. It is the single biggest improvement to how fast a bug can be found and fixed.
Also in 1.0.3 — Know Your Car
This release also carries the fix for the 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 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 in. It re-derived it five different ways, 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", "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. 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.
📁 Garage files, ACC destinations, portability
- FIXED: the two visible files could carry DIFFERENT car names for the same session. NRE_1_ORIGINAL_ and NRE_2_USE_THIS_ now always share the same car name.
- FIXED: every livery variation used to leave behind an extra "original" file that was never cleaned up. Orphaned metadata files are now archived too — nothing is ever deleted, it all moves to Backups\Legacy.
- FIXED (ACC): setups could be written into ANOTHER car's folder, because the destination was resolved by similarity — a Ferrari 488 GT3 Evo setup landed in the plain 488 GT3 folder. The write destination is now an exact match only. Fuzzy matching remains only for READING existing setups.
- FIXED: on a PC where Le Mans Ultimate is not installed, or where the Steam registry is unreadable, NRE scanned EVERY drive on EVERY lookup — repeated multi-minute freezes on machines with large disks. The result is now cached and the deep scan 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 somewhere unpredictable.
🏁 Stint guide: you always know where you are
- NEW: NRE told you what it was doing, but never how long it would take. There is now a plain countdown at every moment: laps done, laps left in this stint, and what happens when it ends.
- NEW: the plan is stated up front instead of being discovered lap by lap — 5 setup changes, one per stint, 8 laps each: 40 laps to a complete setup, with a progress bar.
- NEW: when a proposal is ready, NRE now says explicitly that you must pit for it to take effect. Previously "setup ready" could sit there for a whole stint doing nothing, because nobody told you the last step was yours.
- Read-only by design: the guide reports the engine's own counters. It decides nothing and cannot alter a single setup value.
🎧 Driving Coach: it now tells you BEFORE, not during
- FIXED, and this was the Coach's central flaw: the cue was reactive. "BRAKE!" appeared when your reference lap was braking at the distance you had already reached — by definition, too late to act on. It was a replay, not coaching.
- NEW: the Coach now looks ahead and shows the next lift, brake and throttle point with the distance and the time remaining — a bar that fills as you close on it, plus an audio beep half a second before, enough for human reaction time.
- The time is honest: it integrates the reference lap's own speed profile between your position and the point, not your instantaneous speed. If you arrive slower than the reference, the countdown is scaled accordingly.
- Nothing is invented. If the reference has no braking point ahead within range, the Coach stays silent rather than showing a cue.
🧪 Quality
- This release adds 383 new automated regression tests, every one of them built from a real failure listed above — including the exact user registry that got stuck at 2 accepted laps out of 40, and the exact counter that read 3 forever.
- Full suite: over 1760 automated tests passing.
A note on what to expect
The learning loop starts empty. NRE will not know anything about your car on the first lap of the new version — but from this release onwards, every lap you drive and every change you apply actually add to what it knows. That was not true before.
If something goes wrong, Documents\Neuralic Race Engineer\Logs\console.log now contains what happened. Attaching it turns a bug report into a fix.