docs: stillen Bruch der Verbraucher in Task 13-15 ausdruecklich eintragen

Seit dem neuen Chunk-Format werfen overview.py und geometry.js, und props.js
setzt still keine einzige Laterne mehr. Die drei Aufgaben, die das reparieren,
bekommen den genauen Bruch und die Pflicht, ihre von Hand im alten Format
gebauten Fixtures mitzuziehen. Dazu der Docstring von _line() als Bedingung
statt als Tatsache.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5 committed 2026-09-17 10:03:38 +02:00
1 parent bdc6a0ffe5
commit f97b7d9c81
1 file changed
+12 -5
+12 -5
View File
@@ -1725,11 +1725,12 @@ In `tools/extract/leonida/emit.py` die Signatur und den Rumpf ersetzen. `_rings`
def _line(line, i: int, j: int) -> list[list[float]]: def _line(line, i: int, j: int) -> list[list[float]]:
"""Ein Linienzug in Chunk-Koordinaten, richtungsunabhängig festgelegt. """Ein Linienzug in Chunk-Koordinaten, richtungsunabhängig festgelegt.
normalize() dreht eine Linie in eine feste Laufrichtung. Das ist hier anders als bei den normalize() dreht eine Linie in eine feste Laufrichtung, und sortiert wird nach der Ausgabe
früheren centerlines erwünscht: Die Laternen wählen ihre Seite seit Teil 2 aus der selbst. Beides ist nur zulässig, solange niemand Reihenfolge oder Laufrichtung eine Bedeutung
Kantenrichtung *und* prüfen gegen die Gehwegfläche, hängen also nicht mehr an der gibt — bei den früheren centerlines tat das vergeLampPoints() in props.js, das die Straßenseite
Listenposition (siehe props.js). Damit darf die Ausgabe sortiert und normalisiert werden, einer Laterne aus dem Listenindex ablas. sidewalkLampPoints() wählt die Seite aus der Geometrie
und ein Lauf erzeugt wieder Datei für Datei dasselbe. und prüft gegen die Gehwegfläche; erst damit darf die Ausgabe sortiert werden, und ein Lauf
erzeugt wieder Datei für Datei dasselbe.
""" """
ox = SLICE["x0"] + i * CHUNK_SIZE ox = SLICE["x0"] + i * CHUNK_SIZE
oy = SLICE["y1"] - j * CHUNK_SIZE oy = SLICE["y1"] - j * CHUNK_SIZE
@@ -2202,6 +2203,8 @@ Die erzeugten Daten kommen erst in Task 16 in einen eigenen Commit — hier **ni
### Task 13: Browser — Geometrie der neuen Schichten ### Task 13: Browser — Geometrie der neuen Schichten
> **Seit Task 10 gebrochen, hier zu reparieren:** `buildChunkGeometry()` liest `chunk.roads.filter(...)` ohne Rückfall und wirft mit Chunks im neuen Format einen `TypeError`. Die Fixtures in `tests/geometry.test.js` sind von Hand im alten Format gebaut und merken das nicht — stell sie mit um, sonst prüfen sie weiter eine Schnittstelle, die es nicht mehr gibt.
**Dateien:** **Dateien:**
- Ändern: `src/world/geometry.js` - Ändern: `src/world/geometry.js`
- Test: `tests/geometry.test.js` (erweitern) - Test: `tests/geometry.test.js` (erweitern)
@@ -2414,6 +2417,8 @@ git commit -m "feat(world): Fahrbahnmulde, Bordsteinwand und Markierungen bauen"
### Task 14: Browser — Materialien, Kollision, Laternen ### Task 14: Browser — Materialien, Kollision, Laternen
> **Seit Task 10 still gebrochen, hier zu reparieren:** `props.js` liest `chunk.centerlines ?? []` und `chunk.roads ?? []`. Beide Schlüssel gibt es nicht mehr — es entsteht kein Fehler, sondern einfach **keine einzige Laterne** auf der ganzen Karte. Die Fixtures in `tests/props.test.js` sind im alten Format gebaut und merken das nicht. Nach dieser Aufgabe muss eine Laterne aus einem Chunk im neuen Format entstehen; prüf das mit einem Test, der genau so einen Chunk benutzt.
**Dateien:** **Dateien:**
- Ändern: `src/world/materials.js`, `src/world/streaming.js`, `src/world/props.js` - Ändern: `src/world/materials.js`, `src/world/streaming.js`, `src/world/props.js`
- Test: `tests/materials.test.js`, `tests/streaming.test.js`, `tests/props.test.js` - Test: `tests/materials.test.js`, `tests/streaming.test.js`, `tests/props.test.js`
@@ -2597,6 +2602,8 @@ git commit -m "feat(world): Materialien, Kollision und Laternen für die neuen S
### Task 15: Minimap und Begehbarkeit ### Task 15: Minimap und Begehbarkeit
> **Seit Task 10 gebrochen, hier zu reparieren:** `overview.py` liest `chunk["roads"]` und `item["bridge"]` ohne Rückfall und wirft mit Chunks im neuen Format einen `KeyError`. Die Fixtures in `tools/extract/tests/test_overview.py` sind im alten Format gebaut; stell sie mit um.
**Dateien:** **Dateien:**
- Ändern: `tools/extract/overview.py` - Ändern: `tools/extract/overview.py`
- Test: `tools/extract/tests/test_overview.py` - Test: `tools/extract/tests/test_overview.py`