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) <noreply@anthropic.com>
This commit is contained in:
2026-09-04 12:00:22 +02:00
parent e49a231a68
commit 060674b466

27
PLAN.md
View File

@@ -42,6 +42,10 @@ Konvention: `[ ]` offen · `[x]` erledigt · `[~]` in Arbeit
Feature vorher vom Projektinhaber als Non-Feature deklariert und in der Feature vorher vom Projektinhaber als Non-Feature deklariert und in der
Sprachreferenz unter „Abweichungen" gelistet wurde. Stilles Weglassen Sprachreferenz unter „Abweichungen" gelistet wurde. Stilles Weglassen
oder generische Syntaxfehler für dokumentierte Features sind Bugs. 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 - **Markenrecht:** Der Name des Vorbilds wird in Code, Doku und Artefakten
nicht verwendet. Wir sprechen vom „Vorbild" bzw. „dem Dialekt". nicht verwendet. Wir sprechen vom „Vorbild" bzw. „dem Dialekt".
- **Performance ist Anforderung, nicht Politur** (2026-09-01): - **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 https://github.com/cout/vbdos ohne Non-Features kompilieren und
sind nutzbar (Konsolenprogramme bereits ab Phase 3) sind nutzbar (Konsolenprogramme bereits ab Phase 3)
- [ ] Ereignisdispatch: Event-Queue ↔ VM (Ereignisprozeduren `Name_Ereignis`) - [ ] 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 - [ ] Meilenstein: Beispiel-Formularprogramme aus dem Testkorpus laufen
## Phase 5 — IDE (`tb-ide`) ## 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, - [ ] Formular-Designer: Steuerelemente platzieren/verschieben/skalieren,
Eigenschaftenfenster Eigenschaftenfenster
- [ ] Ausführen aus der IDE: Start/Unterbrechen/Fortsetzen/Neustart - [ ] 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, - [ ] Debugger: Breakpoints, Einzelschritt/Prozedurschritt, Direktfenster,
Überwachungsausdrücke Überwachungsausdrücke
- [ ] Hilfe-System: rendert die Markdown-Dokumentation aus `docs/` - [ ] 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) ausführbares Programm (Bytecode + eingebetteter Runner)
- [ ] Dokumentation: Sprachreferenz, Migrationshinweise, Beispielprogramme - [ ] Dokumentation: Sprachreferenz, Migrationshinweise, Beispielprogramme
- [ ] CI (GitHub Actions: Build + Tests auf allen drei Plattformen), Releases - [ ] 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.
--- ---