The route ran Prescott AZ → Salida CO → Broomfield CO (the LightShip Energy pitch, plus two back-to-back calibration loops) → North Platte NE → Aurora NE → Adel IA → Oshkosh WI for EAA AirVenture → Grand Island NE → western Colorado → Moab UT → Prescott AZ. The planned Fayetteville AR waypoint was dropped in-trip. Planned distance was roughly 3,000 miles; actual was 3,719.0.
Campaign totals. 3,719.0 mi · 258.59 gal · 14.38 mpg overall · 71.8 hr total, 65.5 hr moving · 129,229 logged frames across 15 OBD files and 12 TrackLogger files.
Fuel reconciliation against the truck's own Trip Fuel PID: mean absolute error 0.21%, worst leg 0.87%. The fuel accounting in this report is trustworthy to well under one percent.
| Objective | Result | Status |
|---|---|---|
| V2V charge rate & fuel cost at highway speed | 5.69–6.06 kW delivered across seven independent legs; 7.70 kWh AC per gallon | Measured — strong |
| Pure-tow fuel baseline | 15.43 / 15.27 mpg over 1,080 mi across a 15°F ambient spread | Measured — strongest number in the campaign |
| TrekDrive fuel saving | 27.8% mechanical, not the 47% the raw comparison suggested; net negative on every battery-cost basis | Measured — unwelcome |
| Heat-enrichment penalty | One clean sustained episode: 1.1 min, λ 0.824, 21.4% enrichment | Measured — small but real |
| Aerodynamic drag (Cd·A) | Nothing. R² = 0.000. Not recoverable from this dataset by any reanalysis. | Failed — cause understood |
| Wind correction (HRRR round-trip) | Pipeline never worked in the field; no usable wind data collected | Retired |
74.74 kWh AC delivered to the trailer on the bulk-charge basis (≥2.0 kW), costing 9.71 gal at the measured 7.70 kWh AC/gal chain — 3.8% of campaign fuel.
Delivery rate when bulk charging: 5.69–6.06 kW, across seven independent legs spanning 80–104°F ambient and sea-level-equivalent to 8,000+ ft. No output-rate derate was observed anywhere in the campaign.
The rate consistency deserves emphasis because it survived the campaign's hottest conditions. On Day 4, the three consecutive segments ran at 5.83 → 5.82 → 6.06 kW while OAT max climbed 89.6 → 93.2 → 96.8°F. Duty cycle fell hard across those same segments — but the rate did not move. Duty is governed by the trailer's battery-management setpoints and by driver command. The rate is not modulated by heat.
| State | Draw | Where observed |
|---|---|---|
| Disabled / umbilical unplugged | 0.000 kW | Days 5, 6, 7, 8 Seg 1–2 (Phase A legs) |
| Connected, load-support | 0.938–0.951 kW | Days 1, 2, 4 S1–S3 — six independent legs |
| Delivering, bulk charge | 5.69–6.06 kW | Days 1, 2, 3 R1, 4 S1–S3, 8 S3 — seven legs |
The three magnitudes are measured and firm. The attribution of the middle state to trailer house-load support is operator judgment, not instrumentation — the OBD stream carries what the truck sent, but carries nothing at all about what the trailer did with it. Campaign 1 has no LightShip-side load or SOC channel.
Campaign-wide, the middle state accounted for roughly 16.6 kWh of the 91.3 kWh gross delivered — energy that reached the trailer and did work, but that is deliberately kept off the bulk-charge line because it is a different service.
Why the threshold matters: setting the "active" cutoff at 0.5 kW instead of 2.0 kW merges the two services and overstates bulk charge by up to 50% on a low-duty leg. Day 1 reads 27.68 kWh combined against 18.48 kWh of genuine bulk charge. The 2.0 kW threshold is now a locked convention.
| Quantity | Raw | Decomposed |
|---|---|---|
| Fuel-rate reduction | 47.1% | — |
| Attributable to ProPower switching off | — | 0.612 gal (47% of the gap) |
| Attributable to TrekDrive mechanical load transfer | — | 0.703 gal |
| Distance-normalised, propulsion only | — | 27.8% |
Never report 47%. Any State A vs State B fuel comparison must first subtract the ProPower contribution at the measured 7.70 kWh AC/gal basis. The mechanical figure is 27.8%.
The pre-trip model's 4.28 → 1.73 gal/hr (~60% reduction) is not reproduced by measurement. Measured Run 1 was 3.67 gal/hr.
| Battery-cost basis | kWh | Fuel-equivalent | Net |
|---|---|---|---|
| 250 Wh/mi × 34.4 mi | 8.61 | 1.118 gal | −0.550 gal |
| 15.0 kW × 0.76 hr | 11.40 | 1.481 gal | −0.913 gal |
| 17.2 kW × 0.76 hr | 13.07 | 1.698 gal | −1.130 gal |
The sign is stable across the entire plausible range. But the sign depends on one assumption that is worth stating out loud every single time: valuing trailer kWh at the ProPower recharge chain (7.70 kWh AC/gal) is only correct when the truck is the sole charging source. With destination charging, that energy costs grid rates and the net flips positive. This is the Case 1 / Case 2 split that was already in the energy-balance model — the calibration pair is the first measured evidence for it.
The pitch should lead with battery-neutral operation — the system's ability to hold its own state of charge over a long tow — not with raw fuel saving. Fuel saving is basis-dependent and, on the truck-only basis, negative. Battery neutrality is the property that is actually robust and actually differentiating.
| Metric | Campaign peak | Factory anchor |
|---|---|---|
| Engine coolant temp (ECT) | 241.2°F (Day 7) | 217.4°F fully-open thermostat |
| Charge-air temp (IAT2) | 197.6°F (Day 7) | 140°F Tier-3 throttle-closure |
11 of 13 segments spent time above the fully-open-thermostat spec — roughly 522 minutes campaign-wide.
Dwell structure matters more than the peak. Day 7 spent 103.7 min above 217.4°F, but only 2.8 min above 230°F and 0.1 min above 240°F. A peak alone overstates the problem; a mean alone hides it. Report both.
Conditions at the worst event: 78.8°F ambient, 7,516–8,215 ft, 85.9% load, 3,574 RPM, 57.8 mph.
The current TurboAssist trigger specification uses engine load with an OAT correction that arms above 86°F. The campaign's worst thermal event would not have tripped that correction at all. If load-triggered assist is meant to catch the real heat, the trigger needs an altitude or ECT term. Ambient alone is the wrong variable.
The campaign produced exactly one qualifying sustained rich-λ episode under the filter (λ < 0.95, load > 60%, IAT2 > 140°F, single-sample DFSO transients excluded): 33 rows / 1.1 minutes, mean λ 0.824, enrichment fraction 21.4%, peak IAT2 197.6°F at 7,362 ft, Day 7. Small in absolute fuel terms, but it demonstrates the mechanism is real and measurable on this platform — and, again, it landed on a mountain grade rather than the hot plains the protocol was aimed at.
What is solid: the factory manual puts the truck-side DCACA thermal cutoff at 199.3°F / 93°C — roughly 95–100°F of margin above where the dropout occurred — and documents auto-recovery with no fixed lockout timer. The behaviour is therefore not DCACA-side. LightShip-side EVSE/OBC/BMS logic is the strong remaining candidate. This reasoning can be stated with confidence in the LightShip conversation.
What is not: the ~30–45 minute lockout duration cannot be generalised from a single observation. Neither can any receptacle temperature ceiling. The pre-trip "102–105°F, 3–5°F above OAT" figure remains an unverified estimate and should stop being quoted as though it were characterised.
Everything else held. No frame drops, no PID dropouts, no logger crashes on the OBD side, no charge faults elsewhere, no thermal derate.
Pooled across all 13 reduced segments, using ≥60 s windows at speed std < 0.5 mph and |grade| < 0.5% — 504 minutes of qualifying flat steady-state data:
Cd·A = −0.136 ± 0.303 m² · 95% CI [−0.730, 0.458] · R² = 0.000 · condition number 13,392
Expected magnitude for this rig is ~3.9 m². The confidence interval contains zero and negative values. Speed IQR across every qualifying window was 62.3–62.5 mph; 92% of the time sat in a single 62–64 mph bin.
The diagnostic that proves it is collinearity rather than sample size: adding the widest-spread leg (Day 5) tightened the standard error without improving leverage. More data of the same kind cannot fix this.
One thing did survive. The regression intercept gives Crr = 0.0197 ± 0.0028 — physically plausible for a heavy trailer at highway speed. Rolling resistance was never the blocked term; only the aero split was.
The consequence propagates: the trailer road-load figure (~14.8 kW at 62 mph) stays modeled everywhere it appears, including inside the TurboAssist energy balance. Campaign 2's Method-2 speed-hold protocol — 50/55/60/65/70 mph, ≥90 s each, first 15 s trimmed — is the only path. One deliberate 30-minute session beats seven hours of incidental cruising. Campaign 1 deferred it to a convenient leg and got nothing.
A corrected-coastdown alternative was considered and rejected on the arithmetic: MGU regen force (−10 to −14 kW routinely, up to −38 kW) is the same magnitude as or larger than the trailer road load being sought, so the method subtracts one large noisy number from another to recover a small difference. Error amplification, not sample size, is the killer.
Four of the ten legs with a GPS partner file carried a one-hour clock error, in both directions. The pre-trip rule — infer the timezone from the first GPS fix and convert the filename stamp — fails whenever a device carries a stale zone across a state line. On Day 4 the OBD logger held MDT all day while physically in CDT Nebraska from Segment 2 onward; the old rule would have produced a one-hour error in the opposite direction from the real one.
| Offset | Legs | Which |
|---|---|---|
| 0 s | 5 | Day 2, Day 3 R1/R2, Day 5, Day 6 |
| +3600 s | 4 | Day 1, Day 4 S1–S3 |
| −3600 s | 3 | Day 7, Day 8 S2–S3 |
Take ~21 checkpoints across the GPS file, find the nearest OBD position for each, compute the implied offset, take the median. Restrict both sides to rows above 30 mph — at standstill, nearest-position matching is ambiguous and scatters badly. Day 6 unrestricted returned checkpoints spanning −266 to +91 s around a true offset of zero; restricted to moving rows, the same leg gives median −0.2 s, std 0.5 s.
Also check for a mid-leg step, not just a central value — a device auto-correcting at a state line produces one, and a median would mask it. Campaign 1 showed no mid-leg steps, but the check is what establishes that.
The Open-Meteo HRRR anchor-link round-trip — generate URLs, download in browser, upload back for merge — was specified pre-trip and failed in practice on most legs. No usable wind data was collected. This is a methodology finding, not housekeeping: a per-leg manual download round-trip is not a viable field workflow. If wind is reinstated, it must be either an onboard measurement or a bulk post-hoc archive pull. The Section 03 wind cross-check is removed from the report template, and wind_residual_pct stays blank — not zero — on every Campaign 1 ledger row.
Rev 2 called the ~0.95 kW connected-not-charging state "armed-idle overhead" and recommended switching the converter off between charging windows on hot legs. Retracted at rev 3. That advice was built on the belief that the middle state delivered nothing; in fact it would simply move the same load onto the trailer pack. Do not reinstate without evidence.
Rev 2 claimed the Day 4 duty sequence (66.0% → 43.1% → 9.9% as OAT max rose 89.6 → 93.2 → 96.8°F) "quantitatively corroborated" an EVSE thermal ceiling, and concluded "on a 97°F afternoon it runs about a tenth of the time." Retracted at rev 3. The correlation is real; the causation was wrong. The operator commanded ProPower down as ambient entered the 90s, to limit engine thermal load. That is an operating practice, not an equipment limit.
This is the single most instructive error of the campaign. Operator-commanded reduction, BMS setpoint cycling, deliberate test segments, and genuine equipment dropout produce identical-looking duty patterns in the OBD stream and cannot be separated after the fact. A five-word driver note at the time would have prevented a misattribution that survived two knowledge-base revisions.
The pre-trip flag ("B2 runs persistently richer than B1 with a slowly widening gap") did not survive. Across 13 segments the gap scatters 0.19–2.12 with no trend, mean ≈ 1.14. The 1.20% → 1.66% reading that prompted it was a within-leg slice of a quantity that swings by more than that between legs. An apparent common-mode downward drift also failed — B1 went +2.29 → −2.12 by Day 5, then recovered to −0.17 by Day 7.
Replacement wording: LTFT leg-means vary with operating point; no bank asymmetry trend and no common-mode drift established. Any future drift claim must condition on a consistent RPM/load band before it is reported.
The recorded "trip high" of 227.7°F (July 16 Seg 1) was an artifact of Days 1–2 and 7 not yet having been processed. Day 1 (232.1°F) and Day 2 (232.7°F) both predate and exceed it; Day 7's 241.2°F is the real peak.
The open question: does the truck's "Hybrid/EV Battery Power" channel measure total high-voltage bus draw, or only the traction motor? If traction-only, the traction-load residual formula would double-subtract the accessory branches and be invalid — and the wheel-power term that Cd·A depends on would be untrustworthy.
The field intuition, built over years of driving, said traction-only: the meter swings wildly with acceleration and braking and appears never to flinch when a several-kilowatt ProPower load lands on the bus. That observation was real but non-discriminating — traction swings ±20–35 kW routinely, so a few-kW accessory step is simply lost in the visual noise.
In the engine-off window with ProPower delivering ~1.35 kW and the A/C compressor off, HV Battery Power read +2.09 kW against a quiet engine-off baseline of +0.80 kW — a +1.29 kW delta matching the delivered load within converter losses. SOC fell 52.9% → 50.2% across the same window as the independent witness that the pack really was discharging. Adding the compressor (~5.7 A) on the same ProPower load pushed it to +3.17 kW.
It is a total-bus-terminal measurement. Sign convention confirmed: positive = discharge, negative = charge.
Consequences: the traction-load residual formula stands, validated. The latent double-subtraction flag is logged as raised and resolved. The power-balance wheel-power term is sound — which clears the exact prerequisite that Cd·A's second run was deliberately waiting on. The method generalises, and is now written up as a reusable protocol: one continuous engine-in-the-loop file, pre-charge the pack high, apply a known load in the engine-off window, difference against the measured quiet baseline rather than against zero.
Two smaller corrections came out of the same file: the A/C compressor is a high-voltage device on the bus, not a 12V load off the DC/DC converter (the converter acts as a pass-through junction, which is what caused the earlier misstatement), and the 44-PID configuration passed its static frame-rate verification — median Δt 2.000 s, std 0.0031 s, 100% in band. That verification still has to be repeated under towing load before a full Campaign 2 leg is trusted.
| Date | Leg | mi | gal | mpg | kWh | OAT max | ECT max |
|---|---|---|---|---|---|---|---|
| 07-11 | Prescott AZ → Salida CO (Day 1) | 605.79 | 46.57 | 13.01 | 18.48 | 100.4 | 232.1 |
| 07-12 | Salida → Broomfield (Day 2) | 156.98 | 12.81 | 12.26 | 18.47 | 104.0 | 232.7 |
| 07-14 | Broomfield loop Run 1 — State B | 36.72 | 2.79 | 13.15 | 4.71 | 102.2 | 219.7 |
| 07-14 | Broomfield loop Run 2 — State A | 34.44 | 1.48 | 23.32 | 0.00 | 102.2 | 207.7 |
| 07-16 | Broomfield → North Platte (D4 S1) | 252.91 | 18.19 | 13.90 | 17.46 | 89.6 | 227.7 |
| 07-16 | North Platte → Aurora NE (D4 S2) | 152.30 | 9.69 | 15.73 | 6.26 | 93.2 | 212.4 |
| 07-16 | Aurora NE → Adel IA (D4 S3) | 236.68 | 15.15 | 15.63 | 2.58 | 96.8 | 221.7 |
| 07-17 | Adel IA → Oshkosh WI (D5, Phase A) | 419.99 | 27.21 | 15.43 | 0.00 | 95.0 | 222.9 |
| 07-22 | Oshkosh WI → return (Day 6) | 660.08 | 43.23 | 15.27 | 0.00 | 80.6 | 225.8 |
| 07-23 | Grand Island NE → westbound (Day 7) | 590.84 | 42.13 | 14.03 | 0.00 | 89.6 | 241.2 |
| 07-24 | Day 8 Seg 1 (no GPS partner) | 157.31 | 9.52 | 16.53 | 0.00 | 84.2 | 226.8 |
| 07-24 | Day 8 Seg 2 | 14.01 | 1.57 | 8.94 | 0.00 | 82.4 | 227.9 |
| 07-24 | Day 8 Seg 3 (final) | 400.99 | 28.27 | 14.18 | 6.78 | 98.6 | 231.5 |
The Phase A baseline is the most robust number in the campaign. Day 5 (15.43 mpg) and Day 6 (15.27 mpg) cover 1,080 miles across a 15°F ambient spread and agree to within 1%. Everything else in the fuel accounting is measured against that.
Day 8 Seg 2 (8.94 mpg over 14 miles) is a 17-minute repositioning segment, not a representative leg — short, low-speed, and dominated by a cold-ish start. Included for completeness; excluded from any economy comparison.
Adjudicated value: 9.20 kWh over 9.73 non-bulk-charging hours — 1.19 gal equivalent at the 7.70 kWh AC/gal basis, 2.6% of that leg's 46.574 gal. Operator's call, taken on the campaign1_features_ALL.csv figure as the closest source to the raw stream.
The choice is independently self-consistent, which the other two were not. Non-bulk duration derives from the feature table without touching the energy figure at all — 12.98 hr total × 25.0% bulk-charge duty = 3.25 hr charging, leaving 9.735 hr. Dividing the adjudicated energy by that duration gives 0.945 kW mean delivery, which sits inside the measured connected-load-support band of 0.938–0.951 kW and within 0.006 kW of Day 1's own recorded baseline of 0.951 kW. Energy, duration, and rate now close on each other from three separate columns.
Superseded, reasoning preserved: KB rev 3/4 text (9.26 kWh / 9.73 hr) carried the correct duration and an energy figure high by 0.06 kWh. The Pass-2 synthesis table (9.26 hr / 9.13 kWh) is the transposition — 9.26 migrated from the energy column into the hours column, and 9.13 was then fitted around it. Neither figure is to be reinstated; both are retained here so the error path stays legible.
The stale Project-Knowledge trip_ledger.csv (single pre-reduction Day 1 row, 574.03 mi / 44.36 gal / 18.16 kWh, "segment 1 pending", no hv_accessory_kw_avg column) is superseded. The reduced 13-row draft has been promoted verbatim to trip_ledger.csv, column order unchanged from the rev-1 specification, no values edited.
Promoted file reconciles to the campaign totals exactly: 3,719.04 mi · 258.593 gal · 71.80 hr · 74.74 kWh AC · 14.38 mpg. Day 1 now reads 605.79 mi / 46.574 gal / 18.48 kWh with segment 1 recovered. Requires re-upload to Project Knowledge to take effect.
| Item | Cost | What it unlocks |
|---|---|---|
| Method-2 speed holds — 50/55/60/65/70 mph, ≥90 s each, flat low-traffic segment | ~30 min, once | Cd·A; the aero/rolling split; a real road-load figure inside the TurboAssist model |
| LightShip Atlas SOC logging on every calibration run | Setup only | Section 04 measured net; ends the "truck can't see the trailer" blind spot |
| Connected-load-support isolation — matched connected vs. disconnected SOC-decline windows | ~1 hr of one leg | Converts the load-support claim from attributed to measured |
| HVAC-compressor metering path — parked toggle, watch the DC/DC HV current channel | ~10 min, parked | The six-term regression's f term; removes a double-count risk from the bus energy budget |
| 44-PID frame-rate verification under tow | One leg's first hour | Trust in every Campaign 2 leg; static verification already passed |
| EVSE thermal threshold — hold ProPower through rising ambient, abort criterion set in advance | One controlled leg | Whether a receptacle ceiling exists at all. Only run if engine-thermal risk is judged acceptable. |
Note that the first three pair naturally into a single session. The speed-hold protocol, the load-support SOC comparison, and a measured HVAC isolate can all run on the same flat, low-traffic stretch on the same afternoon — which is exactly the kind of consolidation that makes a deliberate experiment survive contact with a travel schedule.