From 8bcd53efa2075f34c169513460868ab2874024aa Mon Sep 17 00:00:00 2001 From: MDietermann Date: Wed, 12 Aug 2026 16:19:16 +0200 Subject: [PATCH] docs: m2-befunde in tickets 10 und 11 zurueckgetragen, verification erweitert --- .../issues/10-raum-prefab-format.md | 17 +++++++++++++++++ .../issues/11-ui-geruest-screen-modell.md | 11 ++++++++++- .scratch/rustkeep-1.0/map.md | 17 ++++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/.scratch/rustkeep-1.0/issues/10-raum-prefab-format.md b/.scratch/rustkeep-1.0/issues/10-raum-prefab-format.md index e00cd8f..c9a6793 100644 --- a/.scratch/rustkeep-1.0/issues/10-raum-prefab-format.md +++ b/.scratch/rustkeep-1.0/issues/10-raum-prefab-format.md @@ -93,6 +93,23 @@ Modder den Raum *sieht*; Koordinaten daneben zu pflegen wäre die schlechtere H Prefabs baut, will bestimmen, wo man hineinkommt, sonst hätte man auch würfeln können. Korridore dürfen nur an `+` andocken. +**Befund aus M2: „nur an Türen andocken" ist teurer als es klingt.** Der Test, der Wandfelder zählt, +schlug beim ersten Versuch mit **2340 durchgegrabenen Feldern** an. Zwei Ursachen: + +1. Der Korridor startete *auf* der Tür — und weil eine Tür auf der Raumwand liegt, grub der waagerechte + Abschnitt die ganze Wandreihe auf. Erst einen Schritt **nach außen** treten: 2340 → 352. +2. Zwei L-Varianten reichen nicht. Bei neun Räumen findet sich oft keine, die alle Rechtecke umfährt — + sie senken die Trefferquote, garantieren aber nichts. + +Was hält: eine **Wegsuche über den freien Raum**. Raumfelder liegen nicht im Suchraum, also kann sie +eine Wand gar nicht berühren. Die L-Form bleibt davor, weil sie Korridore erzeugt, die wie Korridore +aussehen statt wie Treppenmuster; die Wegsuche greift nur, wenn keine L-Variante frei ist. Findet auch +sie keinen Weg, wird **nichts** gegraben — dann schlägt der Erreichbarkeitstest an, und das ist die +richtige Fehlerrichtung: laut statt still. + +Ohne den zählenden Test wäre nichts davon aufgefallen. Die Etagen waren begehbar, zusammenhängend und +plausibel — der Fehler war rein optisch, und optische Fehler findet niemand durch Nachdenken. + **Ein `e` sagt „hier steht ein Gegner", nicht *welcher*.** Was einzieht, entscheidet die Etage. Sonst wäre jedes Prefab an eine Schwierigkeitsstufe gebunden und derselbe hübsche Raum ließe sich nicht auf Etage 1 *und* auf Etage 5 verwenden — genau die Wiederverwendung, für die man Prefabs baut. diff --git a/.scratch/rustkeep-1.0/issues/11-ui-geruest-screen-modell.md b/.scratch/rustkeep-1.0/issues/11-ui-geruest-screen-modell.md index 96ba994..e617129 100644 --- a/.scratch/rustkeep-1.0/issues/11-ui-geruest-screen-modell.md +++ b/.scratch/rustkeep-1.0/issues/11-ui-geruest-screen-modell.md @@ -190,7 +190,16 @@ Die ratatui-Freiheit prüft ein `#[test]`, der `src/game/**/*.rs` liest und auf Zeilen; ein Cargo-Workspace mit `game` als eigener Crate wäre echte Compiler-Durchsetzung und ist die Decke, falls es je ernst wird. -**Befund aus M1:** Die wörtliche Fassung trägt nicht. Sie schlägt sofort an — nämlich beim +**Befund aus M2: das Grid braucht einen mitlaufenden Bildausschnitt.** Ticket 06 hat recherchiert, dass +es kein Grid-Widget gibt und Eigenbau nötig ist — aber niemand hat gefragt, was passiert, wenn die +**Karte größer als der Bildschirm** ist. Etage 5 ist 88 Felder breit, ein 80-Spalten-Terminal schneidet +ab, und der Held läuft aus dem Bild. + +Der Ausschnitt folgt dem Helden und wird am Kartenrand geklemmt; passt die Karte ganz hinein, bleibt er +bei (0, 0). Zehn Zeilen in `ui/grid.rs`, getestet. Kein Scrollbalken, keine Minimap — das wäre die +Decke, falls Orientierung je zum Problem wird. + +**Befund aus M1:** Die wörtliche Fassung des Grenztests trägt nicht. Sie schlägt sofort an — nämlich beim Doc-Kommentar von `game/mod.rs`, der erklärt, dass die Grenze existiert. Der Test muss **Kommentarzeilen ausnehmen** und sollte Datei, Zeile und Inhalt nennen statt nur „ist gefallen". Steht so in `tests/boundaries.rs`. diff --git a/.scratch/rustkeep-1.0/map.md b/.scratch/rustkeep-1.0/map.md index 4af9b48..89c3705 100644 --- a/.scratch/rustkeep-1.0/map.md +++ b/.scratch/rustkeep-1.0/map.md @@ -51,7 +51,22 @@ Diese Liste wächst mit jedem Meilenstein und ist der einzige Ort, an dem steht, | `game/` bleibt ratatui-frei | 11 | **bestätigt** — aber der *Test* dafür musste nachgebessert werden | | Trigger-Suche, Event-Warteschlange | 08 | **ungeprüft** — es gibt weder Trigger noch Events. M3 | -**Drei Befunde, die nur der Compiler liefern konnte** — alle in die Tickets zurückgetragen: +**M2 — Etagengenerierung** (`feat/m2-etagen`, 21 Tests) + +| Zusage | Aus | Befund | +|---|---|---| +| Kette `i → i−1` garantiert Erreichbarkeit strukturell | 10 | **bestätigt** über 29 Seeds, per Flutfüllung gezählt | +| Pflichträume zuerst *ist* die Garantie | 10 | **bestätigt** über 39 Seeds — Eingang, Treppe, Händler immer da | +| Türen explizit, keine Löcher in gezeichneten Wänden | 10 | **erst nach zwei Korrekturen** — siehe unten | +| Seed im Save ⇒ Nachladen würfelt nicht neu | 14 | **bestätigt** — gleicher Seed, gleiche Etage | +| Sieg über das Fehlen der nächsten Etage | 10 | **bestätigt** — keine Fünf im Code | + +Zwei Befunde nachgetragen: **10** (der Korridor startete auf der Tür und grub die Wandreihe auf — 2340 +Wandfelder; zwei L-Varianten reichen nicht, es braucht eine Wegsuche über den freien Raum) und **11** +(das Grid braucht einen mitlaufenden Bildausschnitt, weil Etage 5 breiter ist als ein +80-Spalten-Terminal — das stand in keinem Ticket). + +**Drei Befunde aus M1, die nur der Compiler liefern konnte** — alle in die Tickets zurückgetragen: - **11**: Der Grenztest in seiner wörtlichen Fassung schlägt beim eigenen Doc-Kommentar an. Muss Kommentarzeilen ausnehmen. - **03**: Die **Referenzseite** war nie entschieden. Präfixiert wird nur `id`; Verweise stehen voll qualifiziert. Asymmetrisch — zu klären, bevor der erste Fremdmod existiert.