From 060674b4662dfef572a67bc0a1515bf64c4ec484 Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Fri, 4 Sep 2026 12:00:22 +0200 Subject: [PATCH] PLAN: verschobene Inventarelemente als eigene Punkte Befund bei der Durchsicht nach Phase 3: von den 15 offenen Inventarelementen standen 15 nur als Fliesstextverweis im Plan ("13 Forms und Ereignissteuerung (Phase 4) sowie RUN und $INCLUDE (Phase 5)"), aber in keiner Zielphase als abhakbare Aufgabe. Damit waeren sie beim Abarbeiten von Phase 4 und 5 durchgefallen. Ergaenzt - Phase 4: klassische Ereignis-Traps (ON TIMER/KEY/UEVENT/SIGNAL mit GOSUB, die Steueranweisungen mit ON/OFF/STOP, EVENT, SetUEvent) -- 10 Eintraege. Sie haengen an der Ereignisschleife, nicht an den Steuerelementen, und die vorhandenen Punkte decken nur den Forms-Ereignisdispatch ab - Phase 4: die vordefinierten Dialoge MSGBOX (Anweisung und Funktion) und INPUTBOX$ -- 3 Eintraege. Sie stehen in keiner Steuerelementliste - Phase 5: $INCLUDE im Compile-Treiber aufloesen -- 1 Eintrag - Phase 5: RUN ueber den Zuruecksetzpfad der VM -- 1 Eintrag - Phase 6: die unter "Vollstaendigkeit ist das Soll" versprochene Abnahme des Inventars (0 offen) war als Abnahmekriterium angekuendigt, aber nie als Punkt gefuehrt Prozessregel in der Leitplanke: wird ein Inventareintrag in eine spaetere Phase verlegt, MUSS er dort als eigene Aufgabe stehen -- ein Verweis im Fliesstext genuegt nicht. Eine Gegenprobe stellt jetzt jedes offene Inventarelement einer Zielaufgabe gegenueber; alle 15 sind benannt. Co-Authored-By: Claude Opus 5 (1M context) --- PLAN.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/PLAN.md b/PLAN.md index 5be99e7..3006dc3 100644 --- a/PLAN.md +++ b/PLAN.md @@ -42,6 +42,10 @@ Konvention: `[ ]` offen · `[x]` erledigt · `[~]` in Arbeit Feature vorher vom Projektinhaber als Non-Feature deklariert und in der Sprachreferenz unter „Abweichungen" gelistet wurde. Stilles Weglassen oder generische Syntaxfehler für dokumentierte Features sind Bugs. + **Verschobene Elemente brauchen einen eigenen Punkt** (2026-09-04): Wird + ein Inventareintrag von einer Phase in eine spätere verlegt, MUSS er dort + als eigene Aufgabe stehen. Ein Verweis im Fließtext („kommt mit Phase 4") + genügt nicht — nur was als Punkt in der Zielphase steht, wird abgearbeitet. - **Markenrecht:** Der Name des Vorbilds wird in Code, Doku und Artefakten nicht verwendet. Wir sprechen vom „Vorbild" bzw. „dem Dialekt". - **Performance ist Anforderung, nicht Politur** (2026-09-01): @@ -411,6 +415,17 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste. https://github.com/cout/vbdos ohne Non-Features kompilieren und sind nutzbar (Konsolenprogramme bereits ab Phase 3) - [ ] Ereignisdispatch: Event-Queue ↔ VM (Ereignisprozeduren `Name_Ereignis`) +- [ ] **Klassische Ereignis-Traps** (ohne Forms, Sprachreferenz §8) — + `ON TIMER(n)`, `ON KEY(n)`, `ON UEVENT` und `ON SIGNAL(n)` je mit + `GOSUB label`, dazu die Steueranweisungen `TIMER`, `KEY(n)`, + `UEVENT`, `SIGNAL(n)` mit `ON`/`OFF`/`STOP`, das `EVENT`-Statement + und `SetUEvent`. Setzt die Ereignisschleife (erste Aufgabe dieser + Phase) voraus; `COM`/`PEN`/`PLAY`/`STRIG` bleiben Non-Feature + (Fehler 73). **10 Inventareinträge** +- [ ] **Vordefinierte Dialoge**: `MSGBOX` als Anweisung **und** als + Funktion (liefert die gedrückte Schaltfläche) sowie `INPUTBOX$`. + Sie hängen am Formularmodell, nicht an der Steuerelementliste, und + fallen deshalb sonst zwischen die Aufgaben. **3 Inventareinträge** - [ ] Meilenstein: Beispiel-Formularprogramme aus dem Testkorpus laufen ## Phase 5 — IDE (`tb-ide`) @@ -422,6 +437,13 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste. - [ ] Formular-Designer: Steuerelemente platzieren/verschieben/skalieren, Eigenschaftenfenster - [ ] Ausführen aus der IDE: Start/Unterbrechen/Fortsetzen/Neustart +- [ ] **`$INCLUDE`** im Compile-Treiber auflösen — der Lexer liefert den + Metabefehl bereits als Token. Datei einlesen, Pfade relativ zur + einschließenden Datei, Zyklen erkennen und namentlich abweisen. + **1 Inventareintrag** +- [ ] **`RUN`** — Programm neu starten bzw. ein anderes laden und starten. + Nutzt denselben Zurücksetzpfad der VM wie „Neustart" oben. + **1 Inventareintrag** - [ ] Debugger: Breakpoints, Einzelschritt/Prozedurschritt, Direktfenster, Überwachungsausdrücke - [ ] Hilfe-System: rendert die Markdown-Dokumentation aus `docs/` @@ -443,6 +465,11 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste. ausführbares Programm (Bytecode + eingebetteter Runner) - [ ] Dokumentation: Sprachreferenz, Migrationshinweise, Beispielprogramme - [ ] CI (GitHub Actions: Build + Tests auf allen drei Plattformen), Releases +- [ ] **Abnahme der Leitplanke „Vollständigkeit ist das Soll"**: + docs/inventar.md steht auf **0 offen** — jeder der 285 Einträge ist + entweder implementiert oder als Non-Feature in der Sprachreferenz + gelistet. Der Abgleichstest `inventar_stimmt_mit_code_ueberein` hält + das gegen den Code; hier wird es zum Abnahmekriterium. ---