diff --git a/docs/superpowers/specs/2026-09-16-strassen-design.md b/docs/superpowers/specs/2026-09-16-strassen-design.md index 2505bb9..3898010 100644 --- a/docs/superpowers/specs/2026-09-16-strassen-design.md +++ b/docs/superpowers/specs/2026-09-16-strassen-design.md @@ -125,14 +125,16 @@ Regelmaße: Fahrspur 3,5 m, Längsparkspur 2,0–2,5 m, Gehweg 2,5–3,0 m, Bord | Klasse | Korridor | Fahrbahn | Aufteilung | Gehweg je Seite | Bordstein | gemessener Bestand | |---|---|---|---|---|---|---| -| Gasse | 6 m | 6,0 m | eine Fahrgasse | — | nein | 558 Kanten, 28,0 km | +| Gasse | 6 m | 6,0 m | eine Fahrgasse | — | ja (seit 18.09.2026, s. unten) | 558 Kanten, 28,0 km | | Wohnstraße | 12 m | 7,0 m | 2 × 3,5 m | 2,5 m | ja | 369 Kanten, 25,5 km | | Hauptstraße | 18 m | 12,0 m | 2 × 3,5 m + 2 × 2,5 m Parkspur | 3,0 m | ja | 378 Kanten, 21,1 km | | Boulevard | 24 m | 18,0 m | 4 × 3,5 m + 2 × 2,0 m Parkspur | 3,0 m | ja | 214 Kanten, 14,1 km | Die Zahlen des Bestands stammen aus den 1.519 heutigen Mittellinien; der neue Graph hat mehr Kanten, die Verteilung bleibt. -Die Gasse bekommt weder Bordstein noch Gehweg noch Markierung — so sind die Hinterhofgassen zwischen den Blöcken in Miami Beach auch. +Die Gasse bekommt weder Gehweg noch Markierung — so sind die Hinterhofgassen zwischen den Blöcken in Miami Beach auch. + +**Korrektur (Nutzerentscheidung, 18.09.2026):** Der Bordstein gehört an **jede** Straße, auch an die Gasse. Ursprünglich stand hier „weder Bordstein noch Gehweg noch Markierung"; der Bordstein ist aber keine Ausstattung wie ein Gehweg, sondern die Kante, an der der Asphalt endet — und die hat auch eine Hinterhofgasse. Gehweg und Markierung bleiben ihr fern. Brücken bleiben ebenfalls ohne Bordstein: Dort steckt die Fahrbahn im Deck, eine Kante stünde in der Luft. In der Umsetzung heißt das: `_kerb_lines()` schneidet nur noch die Brücken aus dem Fahrbahnrand, nicht mehr die Gassen; das Feld `kerb` im Querschnitt ist entfallen, weil es nur noch Gehweg und Markierung steuerte und aus `walk > 0` ableitbar war. ## Geometrie @@ -310,6 +312,8 @@ Vier Blicke im Browser: eine Kreuzung von oben, eine Straße auf Augenhöhe, ein - **Z-Fighting auf der Fahrbahn.** Markierungen liegen 1 cm über der Fahrbahn und bekommen zusätzlich die vorderste Versatzstufe. - **Gemessen im Spiel** (Task 16, `run.py` auf der ganzen Karte, Ausgabe wörtlich): „Straßennetz: 1.537 Knoten, 1.790 Kanten"; „Straßen: 830 Bordsteinstücke, 171 Restflächen, 22.394 Markierungen {gelb_doppelt 974, gelb_gestrichelt 2.341, haltelinie 1.496, weiss_gestrichelt 2.040, weiss_rand 974, zebra 14.569}, 56 Palmen an der Fahrbahn entfernt"; „Flamingo Park: 2 Wegflächen, 14 Flächen, 11 Gebäude, Jefferson Avenue 12 m breit"; genau eine Warnung, „Zufahrt schneidet die Sperrfläche tribuene". Nachgemessen mit dem Skript aus Task 12: Fahrbahn 0,9076 km² (Erwartung 0,9084, Abweichung 0,088 %), Gehweg 0,2982 km² (0,2983, 0,034 %), Restflächen 0,0972 km² (0,0973, 0,103 %), Bordstein 120,28 km (120,61, 0,274 %) — alle vier unter der 1-%-Toleranz. Je Chunk gezählt: 479 Fahrbahn-, 1.322 Gehweg-, 282 Restflächen-, 1.415 Bordstein-, 2.218 Kantenstücke, 23.256 Markierungsstücke; Kantenstücke je Klasse boulevard 270, wohnstrasse 537, gasse 1.010, hauptstrasse 401 (alle vier Klassen besetzt); Markierungsstücke je Art gelb_doppelt 1.216, gelb_gestrichelt 2.370, haltelinie 1.553, weiss_gestrichelt 2.066, weiss_rand 1.219, zebra 14.832 (alle sechs über der „Straßen:"-Zeile des Laufs, keine 0); 0 Palmen auf der Fahrbahn. Beide Abnahmen bestanden: ein zweiter, unveränderter Lauf ändert keine einzige Datei unter `public/data/vice-a` (Risiko „Alle Chunks ändern sich" oben), und mit den neu erzeugten Chunks laufen sowohl der bis dahin übersprungene Minimap-Abgleich (`test_committed_map_files_match_the_committed_chunks`) als auch `tests/placesSite.test.js` grün — beide prüfen jetzt zum ersten Mal echt gegen Fahrbahn, Gehweg, Restflächen und `chunkLampPoints`. Das Risiko „gelöcherte Bodenplatte" (oben, Task 1) blieb entschärft: 100 Löcher in 3,98–4,52 ms trianguliert, weit unter der 50-ms-Grenze. `tests/parkData.test.js` prüfte die vier Fahrzeug-Startpunkte anfangs noch gegen den alten Schlüssel `c.roads`; in diesem Branch mit Commit `05e2914` auf `carriageway` umgestellt und grün. - **Gemessen nach der Fixwelle** (2026-09-18, `run.py` erneut auf der ganzen Karte, nach den Befunden 3–8 der Abschlussprüfung): „Straßennetz: 1.537 Knoten, 1.790 Kanten" (unverändert — keiner der Befunde rührt am Graphen); „Straßen: 830 Bordsteinstücke, 169 Restflächen, 22.393 Markierungen {gelb_doppelt 974, gelb_gestrichelt 2.341, haltelinie 1.496, weiss_gestrichelt 2.040, weiss_rand 973, zebra 14.569}, 56 Palmen an der Fahrbahn entfernt"; dieselbe eine Warnung wie oben. Nachgemessen mit demselben Skript: Fahrbahn 0,9076 km² (unverändert) und Bordstein 120,28 km (unverändert) — beide Befunde (5, 6) ändern hier nichts Messbares. Gehweg 0,2987 km² (statt 0,2982, +0,17 %) und Restflächen 0,0967 km² (statt 0,0972, −0,51 %): Befund 7 schließt die Gehweglücke an gewöhnlichen Kreuzungsecken, der Gehweg wächst entsprechend, die Restfläche schrumpft — beide weiterhin unter der 1-%-Toleranz gegen die ursprüngliche Erwartung. Je Chunk gezählt: 479 Fahrbahn-, 1.322 Gehweg-, 279 Restflächen- (statt 282), 1.415 Bordstein-, 2.218 Kantenstücke (alle vier unverändert bis auf Restflächen), 23.272 Markierungsstücke (statt 23.256 — die neue Position der Markierungen aus den Befunden 3 und 8 schneidet an den Chunkgrenzen geringfügig anders zu); Kantenstücke je Klasse unverändert; Markierungsstücke je Art gelb_doppelt 1.216, gelb_gestrichelt 2.370, haltelinie 1.555, weiss_gestrichelt 2.066, weiss_rand 1.219, zebra 14.846 (nur haltelinie und zebra ändern sich, um 2 bzw. 14 Stücke); 0 Palmen auf der Fahrbahn (unverändert). Beide Abnahmen erneut bestanden: ein zweiter Lauf nach dem Commit der Daten ändert keine einzige Datei unter `public/data/vice-a`, und `test_committed_map_files_match_the_committed_chunks` sowie `tests/placesSite.test.js` bleiben grün. Zusätzlich zu Befund 3 gemessen (Fläche von `markings` außerhalb von `carriageway`, über alle Chunks summiert): 452,65 m² vor der Korrektur (1,03 % von 43.906 m² Markierungsfläche, rechnerisch gegen die vor der Fixwelle ausgelieferten Daten nachgewiesen), 110,06 m² danach (0,25 %) — eine Verbesserung um 75,7 %, aber keine vollständige Behebung; der Rest sind Bögen, die zwischen der Streckenlänge `reach` und `reach + STOP_SETBACK + STOP_DEPTH` noch einmal abknicken, was ein einzelner Richtungsstrahl nicht mehr auffängt (die vom Befund selbst genannte größere Alternative, „die Markierung entlang der tatsächlichen Kante aufbauen", setzt diese Fixwelle nicht um). Einzelheiten im Fixwelle-Bericht (`.superpowers/sdd/2026-09-16-strassen/fixwelle-report.md`). +- **Gemessen nach dem Bordstein an jeder Straße** (18.09.2026, Nutzerentscheidung oben im Abschnitt „Querschnitte"): Der Bordstein läuft jetzt auch an den Gassen, nur Brücken bleiben frei. Gemessen mit demselben Skript: **Bordstein 184,33 km** statt 120,28 km (+53 %, die 40,95 km Gassen bringen ihre beiden Kanten mit), **499 Bordsteinstücke** im Lauf statt 830 und **1.341 je Chunk** statt 1.415 — weniger Stücke bei mehr Länge, weil der Rand jetzt durchläuft, statt an jeder Gasse unterbrochen zu werden. Alles andere unverändert: Fahrbahn 0,9076 km², Gehweg 0,2987 km², Restflächen 0,0967 km² in 279 Stücken, 23.272 Markierungsstücke, 0 Palmen auf der Fahrbahn. **Abdeckung des Fahrbahnrands**, gemessen an den fertigen Chunks (alle 15 m eine Probe je Seite, quer um die halbe Fahrbahnbreite versetzt, Brücken ausgenommen, Bordstein zählt bis 1,2 m Abstand als vorhanden): Gasse 7,0 % → 83,1 %, Wohnstraße 87,9 % → 88,0 %, Hauptstraße 87,2 % → 87,3 %, Boulevard 86,3 % → 86,3 %, gesamt 55,8 % → 85,7 % von 14.802 Proben. Die Gasse liegt damit auf dem Niveau aller anderen Klassen, die übrigen drei bleiben unberührt; die fehlenden rund 15 % sind Kreuzungsflächen, an denen der Rand bewusst aussetzt (die 7 % vorher waren genau diese Einmündungen, an denen die Gasse den Rand einer echten Straße mitbenutzt). +- **Zur gemeldeten Sichtweite von etwa 40 m** (18.09.2026): Als Zeichenproblem ließ sie sich nicht nachstellen. Im Browser gemessen, indem die Bordsteinschicht aus- und wieder eingeblendet und das gerenderte Bild Pixel für Pixel verglichen wurde (Probe: jeder Oberkantenpunkt der Schicht im Blickfeld, nach Entfernung sortiert): Im selben Blick auf Augenhöhe zeichnete der Bordstein sowohl vor als auch nach der Änderung bis 504 m, ohne Bruch bei 40 m — die Bänder 40–60 m und 60–100 m waren vollständig sichtbar. Die Schicht reicht auch genauso weit wie alle anderen Straßenschichten: Fahrbahn, Gehweg, Markierung und Bordstein spannen dasselbe Ladefenster von 750 × 750 m (3 × 3 Chunks), weiter als das lädt die Welt für keine Schicht. Was tatsächlich abbrach, war der Bordstein selbst: Bei 7 % Abdeckung endete er dort, wo die nächste Gasse anfing, also je nach Blickrichtung schon nach wenigen Dutzend Metern. In der Ferne ist er entsprechend dichter geworden — von den Proben zwischen 250 und 400 m trugen vorher 45 % sichtbar zum Bild bei, jetzt 83 %. Den eigenen Tiefenversatz bekommt der Bordstein trotzdem (`POLYGON_OFFSETS.curb`, derselbe Faktor wie die Beläge, eine Stufe über dem obersten von ihnen): Er war die einzige Geometrie neben den Belägen ohne Versatz und konnte damit beim flachen Blick gegen den Gehwegbelag verlieren. Die Messung zeigt aber, dass er die 504 m auch ohne ihn erreicht — der Versatz ist Absicherung, nicht die Ursache der Behebung. ## Nicht Teil dieser Arbeit