Files
TerminalBasic/openspec/changes/phase-5-01-projekt-und-dokumentmodell/phase-5-uebersicht.md

17 KiB
Raw Blame History

Phase 5: Exploration und vollständige Change-Kette

Planungsstand: 2026-09-06, Codebasis 024336e29ce0494fc268452e5eaf48c4ff68fbb2. Diese Artefakte planen die Umsetzung; sie bestätigen keine bereits implementierte IDE. Maßgeblich sind PLAN.md, die IDE-Referenz und die bestehenden Hauptspezifikationen.

Ergebnis der Exploration

Zum Ausgangsstand hatte Phase 5 acht offene und zwei bereits erfüllte PLAN-Punkte. Die geklärte Export-UI ist jetzt ein zusätzlicher expliziter offener Punkt (neun offen, zwei erfüllt). $INCLUDE und RUN sind im CLI-/VM-Pfad vorhanden; ihre IDE-Anbindung ist Bestandteil der neuen Changes. tb selbst ist noch ein Platzhalter. Die fehlende Arbeit liegt überwiegend in Oberfläche, Dokumentzustand und Einbettung; die Sprache und das Forms-Dateiformat müssen nicht erneut implementiert werden.

Bereich Beobachteter Stand Konsequenz für die Planung
IDE-Einstieg Nur Platzhalterausgabe; notwendige Workspace-Abhängigkeiten schon vorhanden Rahmen, konkrete Fenster und Ereignisverteilung in 02
CLI-Treiber Private Projekt-/Include-/FRM-Lader, Compile, RUN-Zielauflösung und Reset Laden in 01 gemeinsam nutzbar machen; Sitzung/Reset in 04
Quellmodell SourceUnit/SourceSegment erhalten Originaldateien und physische Zeilen Identitäten wiederverwenden; ungespeicherte Dokumente ergänzen
Projektcompiler Übersetzt alle Module erneut, verknüpft Module und Forms; erstes Formular wird Startformular Modulcache in 03; explizite Startup-Auswahl in 01/04
VM RunEvents, Modul-/Zeilenbreakpoints, Step und einfache Inspektion vorhanden Sichere Poll-/Wartezustände in 04; vollständiger Debugger in 06
Runtime-Builtins Wartende Eingaben/Dialogs und direkte SHELL-Kindprozesse Nicht nur den Run-Aufruf einbetten: Fortsetzungen und Terminalübergabe explizit umsetzen
Terminalhost BASIC-Tastencodierung mit Ctrl+C-Abbruch und F1F10 IDE routet eigene Tasten einschließlich F11/F12 vor BASIC-Zustellung
ScreenWidget Mindestgröße wird an der Zeichenfläche geprüft Physisches Terminal und kleines Output-Unterfenster unterscheiden
FRM-Modell Baum, Code, Binärimport, unveränderte/kanonische Textausgabe vorhanden 05 editiert dieses Modell; keine zweite FRM-Implementierung
Forms-Metadaten Klassen, Eigenschaften, Ereignisse und Arrayverträge vorhanden Toolbox, Propertyvalidierung und Handlererzeugung daraus ableiten
Dokumentation Rekonstruierte Menüs/Tasten, Farbschema, Designer und Hilfeverhalten beschrieben Vollständige Befehlszuordnung unten; Dokumente als Offline-Hilfe in 07

Besondere Risiken sind unverändert ausgeführte alte Kompilate nach einer Textänderung, Include-Breakpoints ohne Dateiidentität, wiederholte I/O-Nebenwirkungen nach einer Pause und voneinander abweichende Designer-/FRM-/Codezustände. Jeder dieser Fälle hat konkrete Szenarien und Tasks in seinem zuständigen Change.

Changes und Reihenfolge

Nr. Change Direkt benötigte Vorgänger Ergebnis
01 Projekt- und Dokumentmodell keine Gemeinsame Lade-/Speicheraktionen, bearbeitete Quellen, MAK und Startup-Metadaten
02 IDE-Rahmen 01 Terminalbesitz, Menüs, Fenster, Dialoge, Optionen und Eingabetestpfad
03 Editor und inkrementelle Übersetzung 01, 02 Vollständige Codebearbeitung, Diagnose und schneller aktueller Compile
04 Ausführung und Output 01, 02, 03 Fortsetzbare VM-Sitzung, Reset, Ausgabe, Shell und Textdruck
05 Formular-Designer 01, 02, 03 Visuelles Gestalten und konsistenter Ereigniscode
06 Debugger und Direktfenster 03, 04 Quellgenaues Debuggen, Watches, Immediate, History und Fehlerhalte
07 Hilfesystem 02, 03 Offline-Markdown-Hilfe und Kontextnavigation
08 Integration und Phasenabnahme 0107 Durchgängiger Arbeitsablauf, Befehlsabdeckung und nachgewiesener PLAN-Status
01 --> 02 --> 03 --> 04 --> 06 --+
 |      |      +--> 05 ---------+
 |      +----------> 07 --------+--> 08
 +---------------------------------+

Die Tabelle ist die vollständige Abhängigkeitsliste; das Diagramm zeigt den Hauptfluss. Umsetzung 01 bis 08 ist eine gültige Reihenfolge. 05 und 07 können nach ihren Vorgängern auch früher umgesetzt werden. Jeder Change besitzt genau eine neue Capability und vollständige Artefakte; kein Change überschreibt das Delta eines anderen.

OpenSpec erzwingt diese Change-Abhängigkeiten nicht selbst. Vor Apply sind die genannten Vorgänger anhand ihrer Implementation und Verifikation zu prüfen; ein vorhandenes tasks.md bedeutet nur Planungsbereitschaft. Nach Archivierung sind Vorgänger unter openspec/changes/archive/ anhand des Change-Namens aufzufinden und die dann synchronisierten Hauptspezifikationen maßgeblich. Relative Verweise dieser Übersicht müssen beim Archivieren zusammen mit der Übersicht nachgeführt werden.

Gemeinsame Übergaben und Zuständigkeiten

  • 01 → 02/03/05: Dokument-ID, Revision, physischer/virtueller Pfad, bearbeiteter Text beziehungsweise FormFile, geordnete Projektmitglieder, Startauswahl und sichere Dokumentaktionen. 01 liefert das direkt testbare Modell; 02 die Dialog-/Menüanbindung, 03 den Texteditor, 05 die Designgesten.
  • 02 → alle Oberflächen: konkrete Befehle, Fokus/Modus, Fenster, modale Dialoge und ein Terminalbesitzer. Ein späterer Fachbefehl darf während Aufbau von 02 sichtbar deaktiviert sein; seine tatsächliche Funktion gehört vollständig zum verantwortlichen Folgechange und muss vor 08 aktiv sein.
  • 03 → 04/06: nur zum vollständigen Projektrevisionssatz passende Kompilate, Originalquellorte und Deklarationsinformationen. Laufcode wird nicht in einer pausierten VM ausgetauscht.
  • 04 → 06: pausierbare Sitzung mit eindeutigem Run-/Wait-/Break-Zustand und sauberer Fortsetzung. Scheduling-Yield und Debug-Step sind verschiedene Zustände; Rc-basierte VM-Werte bleiben im besitzenden Thread.
  • 05 → 03/04: geändertes FormFile und Code im selben Dokument; Katalogbildung aus diesem Stand. Die Vorschau führt keine Handler aus.
  • 02/03/05 → 07: Token, Befehl beziehungsweise Formklasse/Property als Kontext. 07 braucht für isolierte Kontextprüfungen keinen zweiten Designer; 08 prüft den tatsächlichen Aufrufweg.
  • 08: prüft Übergänge und Vollständigkeit. Fehlende Fachfunktionen werden im zuständigen Featurebereich geschlossen, nicht durch einen parallelen Integrationscode ersetzt.

Abdeckung der PLAN-Punkte

Phase-5-Punkt Umsetzung Abnahme
IDE-Rahmen 02 Menüs/Fenster/Farben/Resize; 08 Befehlsmatrix
Export-UI für Make EXE / Make Library 02 Vollständige Dialoge und Auftrags-/Ergebnisübergabe; 08 UI-Abnahme. Native Erzeugung: Phase 6
Editor 03 Bearbeitung, Normalisierung, Suche, Prozeduren, Includeorte; 08 Hauptablauf
Projektverwaltung 01, UI-Anbindung 02 Mehrmodul-/FRM-Save/Reopen; 08 CLI-Parität
Formular-Designer 05 Geometrie, Properties Bar, Menüs, Palette, Handler; 08 Gestalten→Run
Ausführen aus der IDE 04 Start/Break/Continue/Reset und Output; 08 Parität
$INCLUDE bereits umgesetzt Erhalt durch 01/03, Debugbindung 06 Relative/Zyklus-/Overlaytests und physische Quellorte
RUN bereits umgesetzt Erhalt und IDE-Anbindung 04 Gleicher Reset, Fremdziel, Startzeile, Dokumenterhalt
Debugger 06 auf 04 Alle Halte-/Watch-/Immediate-/History-/Fehlerpfade
Hilfe 07 Offline, Markdown, F1/Links/Verlauf; 08 echte Aufrufer
Vollständiges Programm in der IDE 08 auf 0107 Erstellen→Gestalten→Speichern→Debuggen→Ausführen→Wiederöffnen

Vollständige Zuordnung der Referenzbedienung

Nummern bezeichnen Featurezuständigkeit; 02 stellt stets den gemeinsamen Menü-/Eingabepfad, 08 den Abschlussabgleich. Zusammengefasste Zeilen benennen jeden enthaltenen Befehl ausdrücklich.

Referenzbereich Befehle / Bedienung Zuständig
File New Project, Open Project, Save Project 01, 02
File New Form, New Module, Add File, Remove File 01, 02
File Save File, Save File As, Load Text, Save Text 01; Textbearbeitung 03
File Print 04
File Shell 04
File Exit / Alt+F4 02; Dokumententscheidungen 01, Sitzungsende 04
Edit Undo/Ctrl+Z, Cut/Ctrl+X, Copy/Ctrl+C, Paste/Ctrl+V, Clear/Del Text 03, Controls 05
Edit New Sub, New Function 03
Edit Event Procedures / F12 05, Codeoperationen 03
View Code / F2, Form / Shift+F12 02, 03, 05
View Next Statement 06
View Output Screen / F4 04
View Included File, Included Lines 03
View (Designer) Menu Bar / F10, Grid Lines 05 auf 02
Search Find, Selected Text/Ctrl+Backslash, Repeat Last Find/F3, Change 03
Run Start/Shift+F5, Restart, Continue/F5, Modify COMMAND$ 04
Run Unterbrechen / Ctrl+Break 04; zusätzlicher zugänglicher IDE-Befehl
Run Set Start-up File Persistenz 01, Ausführungswirkung 04
Run Make EXE File, Make Library Vollständige UI 02, UI-Abnahme 08; native Erzeugung und reale Backend-Anbindung Phase 6
Debug Add Watch, Instant Watch/Shift+F9, Watchpoint, Delete Watch, Delete All Watch 06
Debug Trace On, History On, Shift+F8/Shift+F10 06
Debug Toggle Breakpoint/F9, Clear All Breakpoints, Break on Errors, Set Next Statement 06
Debug-Tasten F7 bis Cursor, F8 Single Step, F10 Procedure Step 06
Options Display, Set Paths, Right Mouse, Save, Syntax Checking 02; Wirkung in 01/03/07
Window New Window, Arrange All, offene Codefensterliste 02
Window Calls, Debug, Immediate Fenster 02, Inhalt 06
Window Help, Output, Project Fenster 02, Inhalt 07/04/01
Window (Designer) Color Palette, Menu Design Window, Toolbox, Help, Formliste 05, Hilfe 07
Help Index, Contents, Keyboard, Topic/F1, Using Help/Shift+F1, Tutorial, About 07
Menüs Alt/F11, Mnemonic, Esc, Dialogkennzeichnung „…“, Help rechts 02
Fenster F6/Ctrl+F6, Shift+F6, Ctrl+F4, Ctrl+F7/F8/F9/F10/F5, Alt+Minus 02
Projektfenster Anfangs rechts, Form/Code-Buttons, Enter 02 auf 01
Toolbox/Tools Check Box, Combo Box, Command Button, Dir List, Drive List, File List, Frame, HScrollBar, Label, List Box, Option Button, Picture Box, Text Box, Timer, VScrollBar; zusätzlich bereits unterstützte Spinvarianten 05
Designgesten Toolbox-Doppelklick, Aufziehen, Drag, Sizing Handles, Pfeile, Ctrl+Pfeile, Shift+Pfeile, Tab/Shift+Tab, Ctrl+Klick 05
Properties Bar Property/Value-Dropdown, Koordinaten/Größe, F2 Value, F10 Barwechsel, keine Statuszeile 05 auf 02
Menüdesigner Caption (&/-), CtlName, Tag, Index, Checked/Enabled/Visible/Separator, Shortcut, Einfügen/Löschen/Ebene/Reihenfolge/Done 05
Farbpalette ForeColor/BackColor, Drag auf Form 05
Editor Line-Leave-Prüfung/-Normalisierung, Syntax-Checking-Toggle, DECLARE, DEFtype 03
Editor-Tasten CUA, Einfg, Pos1/Ende, WordStar Ctrl+Q, Ctrl+Y, Bookmarks Ctrl+K,03 / Ctrl+Q,03, Shift+F2/Ctrl+F2 03
Immediate PRINT, Zuweisungen, Prozeduraufrufe, ERROR n im Break-Modus 06
Hilfe F1/Rechtsklick, Shift+F1, ◄Thema►, Tab/Shift+Tab, Enter, Alt+F1 (20), Ctrl+F1, Esc 07
Darstellung DOS-Farben, Magenta-Titel, Desktopzeichen, Tabweite, klickbare Statuskürzel, Zeile/Spalte 02
Start Begrüßung, Version/Copyright, Untitled-Code/Projekt, keine Easy/Full-Modi 02, About 07
Terminal Dynamische Größe, physisches Minimum 80×25 02; Runtime-/Output-Abgrenzung 04
Laufzeitparität Dieselbe TBVM in IDE, CLI und TBC 04/06; Gesamtnachweis 08

Explizite Projektvorgaben und Phasengrenzen

Die lokale IDE-Referenz enthält bewusst offene beziehungsweise nur grob beschriebene Details. Folgende Vorschläge sind deshalb als Terminal-Basic-Entscheidungen benannt, nicht als nachgewiesene Originaleigenschaften:

  • Startbegrüßung blockiert nicht; About bleibt verfügbar. Caps/Num wird ohne belastbares Terminalsignal nicht vorgetäuscht.
  • „Eigenschaftenfenster“ aus PLAN.md wird durch die in der Referenz konkret belegte Properties Bar erfüllt.
  • Startup-Auswahl verwendet einen optionalen MAK-Kommentar; alte Projekte bleiben unverändert. Die explizite Auswahl wirkt im gemeinsamen Compiler auf Modulreihenfolge und Startformular.
  • WordStar-Chords werden in 03 konkretisiert; Zwischenablage für CUA ist innerhalb der IDE verfügbar.
  • File→Print ist Textausgabe in eine auswählbare Druckdatei, Standard LPT1.TXT. Shell erhält vorübergehend das echte Terminal.
  • Automatische Watches sind nebenwirkungsfrei; allgemeine Prozeduraufrufe stehen im Direktfenster bereit. Watchpoints halten bei wahrer Bedingung. History navigiert die letzten 1.024 Quellorte, ohne Laufzeitzustände zurückzuspulen. Set Next Statement lehnt inkompatible Kontrollkontexte ab.
  • Die bestehende Release-Leitplanke (<50 ms Referenzmodul, <1 s Referenzprojekt) gilt auch für den neuen Compilerweg. Die Phase-6-Plattformmatrix und Distribution werden dadurch nicht als bereits bestanden behauptet.

Geklärte Benutzervorgabe (2026-09-06): Make EXE erstellt ein eigenständiges natives Executable, Make Library eine tatsächliche Bibliothek im jeweiligen Systemformat. Die vollständige IDE-Bedienung gehört zu Phase 5: beide Dialoge, Zielsystem/-architektur, Ausgabepfad, Prüfung, Überschreibentscheidung, Status/Fehler/Abbruch und die konkrete Auftrags-/Ergebnisübergabe. Diese Arbeit liegt in 02 und wird in 08 integriert geprüft. Bis Phase 6 fehlen ausschließlich die tatsächliche Erzeugung und die reale Backend-Anbindung; die Dialoge bleiben bedienbar und erklären die gesperrte Erzeugen-Aktion. Kontrollierte Ergebnisrückmeldungen sind UI-Tests und kein Beleg für native Artefakterzeugung.

PLAN.md enthält dafür getrennte Aufgaben: Export-UI in Phase 5 sowie native Standalone-Executables und native Systembibliotheken in Phase 6. Die dortige Executable-Erzeugung kann den bereits geplanten vorkompilierten Runner mit eingebettetem Bytecode verwenden; das Ergebnis muss ohne separat installiertes tb/tbc direkt ausführbar sein. Der Bibliothekspunkt verlangt natives Format, Symbol-/Aufruf-/Linkvertrag und einen nativen Verbraucher-Nachweis. Eine bloße oder umbenannte .tbc-Datei erfüllt keinen dieser beiden Exportpunkte. Format- und ABI-Details der Bibliothek werden beim Phase-6-Backend festgelegt, ohne in Phase 5 eine zweite Formatimplementierung in der UI vorwegzunehmen.

Abnahmepfad

  1. Jeden Featurechange anhand seiner Szenarien und der pro Task angegebenen Prüfung umsetzen; vorhandene CLI-/VM-/Forms-Regressionspfade weiterverwenden.
  2. Kein Spezifikationssync allein aufgrund grüner Artefaktstatus: die Implementierung muss zuvor nachgewiesen sein.
  3. In 08 alle Referenzbefehle gegen reale App-Eingaben abgleichen, den durchgängigen Arbeitsablauf ausführen und gespeicherte Quellen über CLI/TBC vergleichen.
  4. Release-Compile-Budget mit Hardware, Profil, Projektgröße und Messwerten belegen. Keine normalen Tests mit instabilen Debug-Zeitgrenzen versehen.
  5. Erst danach Phase-5-Checkboxen und Ist-Dokumentation aktualisieren. Die Befehlszuordnung und jeder Verifikationsbericht müssen frei von offenen Phase-5-Befunden sein.

Prüfung der Planungsartefakte

Stand nach der geklärten Export-Zuordnung am 2026-09-06:

  • Acht Changes mit jeweils proposal.md, design.md, tasks.md und einer neuen Delta-Spezifikation: 47 Anforderungen, 67 Szenarien und 110 noch offene Umsetzungstasks.
  • openspec validate --all --strict --json: 23 von 23 Einträgen gültig (acht Changes und 15 Hauptspezifikationen); die acht neuen Changes haben keine Validator-Hinweise.
  • openspec status --change <name> --json: für jeden Change vollständige Planungsartefakte. openspec instructions apply --change <name> --json: alle Artefakte bereit, jeweils null Tasks erledigt. Die fachlichen Vorgänger aus der Abhängigkeitstabelle bleiben vor der Umsetzung zu beachten.
  • Zusätzlicher Strukturabgleich: jede neue Capability eindeutig, jedes Requirement mit WHEN/THEN-Szenario, Tasks eindeutig nummeriert, Abhängigkeiten azyklisch, lokale Markdown-Verweise auf vorhandene Ziele auflösbar.
  • Änderungen beschränken sich auf die acht neuen Planungsverzeichnisse und die angeforderte Präzisierung in PLAN.md. Produktcode und bestehende Hauptspezifikationen wurden nicht verändert; Produkttests wurden für diese reine Planung nicht erneut ausgeführt.