diff --git a/AGENTS.md b/AGENTS.md
index 2c18faa..fda1fa4 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -259,12 +259,14 @@ formatting hold everywhere; `design-system/` is verifiably brand-free.
### HA panel — known gaps (most also in SPECIFICATION.md §7)
-- **GPS is dead schema for trip records specifically:** `start_lat/lon`, addresses, `route`,
- `avg_speed_kmh` on individual trips never populated. The trip-detail map draws a **fabricated**
- line via `fakeTrack()` (`audi-dashboard-app.js:414`) — not a real track. (Unrelated: the
- Übersicht's live Standort-Kachel is no longer in this state — `STANDORT_TRACKER` now points at
- a real `device_tracker`, see section B/C. This item is only about per-trip route data, which
- nothing currently populates.)
+- ✅ **FIXED 2026-08-27 (section U):** `start_lat/lon`, `end_lat/lon` and `route` on individual
+ trips were dead schema — only `historienimport.py` ever populated them, the live detection path
+ never did, and the trip-detail map drew a **fabricated** line via `fakeTrack()` — not a real
+ track. Both are now populated (`screening.py`'s new `_position_screenen()` for live trips,
+ `route` added to the import path too), and `fakeTrack()` is removed — the map now draws the real
+ route, or an honest straight line between known points, never an invented curve.
+ `addresses`/`avg_speed_kmh` on individual trips remain unpopulated (a separate, still-open gap —
+ reverse geocoding is its own work package, see historienimport.py's own note).
- **No GPS fallback in trip completion:** trips without an odometer match stay `status="offen"`
forever (`modules/fahrtabschluss_logik.py:16-20`).
- **RAM-only state:** running trip (`_fahrt_start_ts`) and fuel low-water-mark
@@ -3086,6 +3088,127 @@ at each step from `.6` onward — screenshots taken of the battery list (Generat
correctly, including a real entry below the threshold correctly *not* tagged), the Statistik tab's `polls-s`
icon, and the Reifen archive section before and after both fixes.
+## T. Battery plausibility floor, and the archive button moved onto the "Montiert" row (2026.8.25.9)
+
+**Owner-set plausibility floor: `SPANNUNG_MIN_V = 8.0` in `batterie.py`.** A 12V lead-acid/AGM battery's
+resting voltage doesn't fall meaningfully below this even deeply discharged — a reading under it is a
+sensor/connection fault, not a real measurement, and per the owner's explicit instruction it must not be
+tracked or listed at all (not just hidden at display time, unlike the existing `AGM_RUHE_MAX_V` upper
+bound in `Batterie.tsx`/`vBatterieverlauf()`, which still stores out-of-range readings and only filters them
+when computing SOC/trend/the chart's own point set). `pruefen()` now rejects a reading below the floor
+before it ever reaches `ablage.batterieverlauf_tageswert_aktualisieren()`, logging a warning instead.
+`historienimport.py`'s `_batterie_importieren()` got the identical floor (imports `SPANNUNG_MIN_V` from
+`batterie.py` rather than duplicating the number) — the recurring live/import parity rule from sections P
+and Q: a stray sub-8V blip in the recorder history must not become a "tracked" day-minimum on import just
+because the live path would have rejected it.
+
+**Reifen page: the package-s "Neue Räder anlegen" button now sits on the same row as "Montiert"** (panel
+only — companion-app has no equivalent "Montiert" button in this tile to align it with; its own
+Fahrzeugwechsel button lives in a separate tile entirely, so there was nothing to move there). Was its own
+row below `Montiert` with `justify-content:flex-end`; now both buttons share one
+`justify-content:space-between` flex row. Confirmed live — the two align correctly on one line at their
+respective ends.
+
+Verified: `py_compile` clean on `batterie.py`/`historienimport.py`, `node --check` clean on the panel JS,
+manifest bumped to `2026.8.25.9`, `audi_ha_test` restart confirmed clean via log **and confirmed live in the
+browser** (screenshot of the Reifen page showing `Montiert` and the package icon sharing one row).
+
+## U. Fahrten start/end position and a real track, live-detected trips included; map tile provider fixed;
+Start/Ziel restructured; Status line removed; battery diagram uses the full column width (2026.8.27.1)
+
+**Bug report: "Start and Endposition as well as Track is not visible at Fahrten - even if the Sensors for GPS
+provides Data."** Root cause: `start_lat`/`start_lon`/`end_lat`/`end_lon`/`route` were only ever populated by
+`historienimport.py` (added when `STANDORT_LAT_SENSOR`/`STANDORT_LON_SENSOR` were introduced, 2026-08-16) -
+the **live** trip-detection path (`fahrterkennung.py`'s `leere_fahrt()`/`fahrt_beenden()`) never filled them,
+so any trip the FMM003 detected in real time (the normal case) stayed without a map, only trips created via
+"Daten importieren aus Home Assistant" ever had one. This was the documented "GPS is dead schema for trip
+records" gap (see the HA-panel known-gaps list above) - now closed for the live path too, using the same
+GPS sensors that already work for the Standort tile and for import.
+
+**Backend**, mirroring the existing odometer-screening pattern (`_fahrt_screenen()`/`naechster_wert()`) rather
+than inventing a new mechanism: `verlauf.py` gained `route_aus_verlauf(lat_verlauf, lon_verlauf, start, ende)`
+- pairs each latitude point inside the trip window with its nearest-in-time longitude point (the two are
+independent sensors on the FMM003, not guaranteed to update together) into a chronological `[[lat, lon], ...]`
+list, `None` below two points. `screening.py`'s `durchfuehren()` now also runs a `_position_screenen()` pass
+over every trip still missing `start_lat`/`end_lat`/`route` - **decoupled from the odometer `status` field**
+(`offen`/`vollständig`), since GPS and odometer data can each arrive late independently; a trip already
+`vollständig` on kilometers can still be missing position, and vice versa. Re-entrant like the odometer path:
+already-filled fields are left alone, so repeated screening passes (every trip end, every KM_SENSOR change)
+converge without re-work. `historienimport.py`'s `_fahrten_importieren()` now also writes `route` (previously
+only `start_lat`/`end_lat`), using the same helper, for the same live/import parity reason section P and Q
+already established for other fields.
+
+**A real, live-reproduced timing edge case, found and understood, not worked around with a special case:**
+first-attempt screening immediately after a trip ends can occasionally read the recorder microseconds before
+the just-posted GPS points are committed, landing on a stale nearest-value instead. Reproduced deliberately
+(temporarily set `fahrten_pausenzeit_min` to 0 to make a synthetic trip end instantly, restored afterward) -
+the first screening pass picked a 5-minute-old position; nudging `KM_SENSOR` a few seconds later re-triggered
+`durchfuehren()`, which then read the fully-committed history and filled in the correct, precise points and
+route. Under the real default pause (15 minutes), the recorder has settled long before screening ever runs,
+so this isn't a practical concern - and even under the artificial 0-minute test it self-healed on the very
+next screening trigger, which is the same "eventually consistent, never stuck" property `_lueckenlos_verketten`
+already relies on elsewhere in this file. No code change needed for this - it's an inherent, already-handled
+property of the retry-on-next-trigger design, not a defect.
+
+**Frontend, both codebases - stopped fabricating a track, matches an existing project value.** The panel's
+`fakeTrack()` (a seeded-random wiggle between two points, flagged in the known-gaps list as "not a real
+track") is removed; `initMap()`'s trip branch now draws the real `route` polyline when present ("Streckenlinie
+aus dem GPS-Verlauf ... echte Route"), or an honest straight (dashed) line between the two known points when
+only start/end are known but no route - matching the stance `companion-app/src/screens/Karte.tsx` already
+took from the start (its own header comment: "Das ist hier nicht übernommen... zeigt die Seite ehrlich, dass
+keine Route bekannt ist, statt eine glaubwürdig aussehende Erfindung zu zeigen"). `Karte.tsx` gained an
+optional `route` prop (drawn solid when present, falling back to the existing dashed straight line) so it can
+now also render a real track, not just the two endpoints; `FahrtDetail.tsx` passes `fahrt.route` through.
+`api/types.ts`'s `Fahrt.route` was typed `unknown | null` (dead field, per its own header comment) - now
+`[number, number][] | null`, matching what the backend actually sends.
+
+**Map tile provider was showing "API key required" watermark tiles - found while verifying the above, a
+separate real bug.** `TILE_URL` (panel) and `KACHELN.tag/.nacht` (companion-app `Karte.tsx`) pointed at
+CARTO's anonymous `basemaps.cartocdn.com` tiles, which now require an account/API key - without one, every
+tile rendered as a plain "API key required" graphic instead of a map, on **every** map in both apps (Standort,
+trip detail, tank receipt), not just the newly-fixed trip track. Switched both to the standard
+`tile.openstreetmap.org` raster tiles, which remain free and keyless. companion-app's `Karte.tsx` also lost
+its per-theme dark/light tile switch in the same change (it had never gotten the panel's 2026-08-16
+"maps are always light" decision) - now themeless like the panel, for the same reason (`useTheme` import and
+the now-unused `theme` dependency removed).
+
+**Owner-requested restructure of the Start/Ziel rows** (Einzelfahrt detail page, both codebases): was
+address-first with the date as a small caption (Start row only; Ziel had no date at all). Now both rows show
+date + time on the primary line and the address below as the secondary line - panel via a new `dezeitpunkt()`
+helper (mirrors the existing inline `dedat(x) + " · " + toLocaleTimeString(...) + " Uhr"` pattern used
+elsewhere in the file), companion-app via `Wertzeile`'s existing `zusatz` prop (the same mechanism already
+used for other value+caption pairs).
+
+**Owner-requested removal: "Status is not working. It says 'vollständig' but that's not correct. Remove
+Status line."** Removed the panel's `
Status
${t.status}...
` row from `vTrip()` entirely, per
+the explicit instruction - not replaced with a corrected version, removed. companion-app's `FahrtDetail.tsx`
+never had an equivalent explicit "Status:" row (only a conditional "noch offen" `Pill`, which never shows the
+literal text "vollständig") - nothing to change there, a documented non-issue rather than a silent skip.
+
+**Owner-requested: "The Diagram for Battery Voltage shall use the max. available screen wide. In
+Large-Screen-Mode it is unnecessary small."** The `max-width:400px` cap added 2026-08-25 (section R) to stop
+the SVG chart stretching into a flat band on wide screens (fixed pixel `height:170px` + `width:100%` +
+`preserveAspectRatio="none"` at 772px column width) had the side effect of capping it far below the available
+772px column, on any screen. Root-fixed instead of re-tuning the cap: the `