Plan Phase 6 runtime, P-code libraries and Gitea releases
This commit is contained in:
29
openspec/changes/phase-6-04-ide-exportanbindung/design.md
Normal file
29
openspec/changes/phase-6-04-ide-exportanbindung/design.md
Normal file
@@ -0,0 +1,29 @@
|
||||
## Context
|
||||
|
||||
`ExportRequest` enthält heute ProjectStamp, Artefaktart, System, Architektur, Zielpfad und Überschreibentscheidung. Der Dialog speichert einen geprüften Auftrag, setzt dann aber `UNAVAILABLE`. `export_result` kontrolliert Auftrag und Revision, bevor es Status übernimmt. Tatsächliche Dateierzeugung und deren Nebenwirkungen sind noch nicht angebunden. VM-/Formwerte verwenden Rc und gehören dem besitzenden Thread.
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:** Reale Erzeugung über die bestehende UI mit konsistentem Stand, sicherem Abbruch und nachprüfbarer Dateiwirkung.
|
||||
|
||||
**Non-Goals:** Neue Exportdialoge neben den bestehenden, zweiter Compiler, Verschieben lebender VM-/Rc-Werte in Worker, stilles Speichern der Quellen.
|
||||
|
||||
## Decisions
|
||||
|
||||
1. Den vorhandenen Projekt-Quelllader samt ungespeicherten Overlays und bereits etablierten Compiler verwenden. Auftrag und Snapshot erhalten eine eindeutige Generation neben dem Revisionsstempel. TBL-Dateien als unveränderliche Byte-Snapshots mit Inhaltsidentität aufnehmen und diese vor Veröffentlichung erneut gegen den aktuellen Stand prüfen. Übergabe an den gemeinsamen Dienst aus 02/03 über serialisierte Kompilat-/Modulproduktbytes und schlichte Ziel-/Auftragsdaten; keine Abhängigkeit des Diensts von der IDE.
|
||||
2. Langlaufende Paket-/Toolschritte außerhalb des UI-Ereignisloops ausführen, Ergebnisse über einen kleinen vorhandenen beziehungsweise Standardkanal zurückführen. Der Worker erzeugt zunächst nur eine temporäre fertige Ausgabe. Die UI prüft Generation, Projektstempel, Dialog-/Abbruchzustand vor der finalen Veröffentlichung; erst danach Erfolg melden. Ein bloßer später Check in export_result genügt nicht, wenn der Worker das Ziel bereits überschrieben hätte.
|
||||
3. Esc/Abbruch stoppt oder verwirft den Auftrag, bereinigt Staging und lässt das alte Ziel stehen. Kontrollierte Tools werden bei Abbruch beendet; unerwartet spät eintreffende Resultate dürfen keine Datei freigeben. Für bereits abgeschlossene Veröffentlichung zeigt die UI den wirklichen Abschluss, keinen rückwirkend erfundenen Abbruch.
|
||||
4. Für Make EXE Zielauswahl vom gemeinsamen Katalog ableiten: Windows x86_64, macOS aarch64, Linux beide. Fehlende tbrt-Vorlagen/Finalisierung konkret melden. Make Library schlägt `.tbl` vor und zeigt seine Plattformunabhängigkeit; native Ziel-/Architekturfelder entfallen in diesem Modus und sind keine Verfügbarkeitsvoraussetzung. Der bisherige generische Phase-6-Sperrtext wird durch tatsächliche Verfügbarkeit ersetzt.
|
||||
5. Bisherige Phase-5-Tests bleiben als absichtlich backendloser Testfall erhalten. Neue Fälle verwenden denselben realen Backendpfad wie CLI; kontrollierte Rückmeldungen testen zusätzlich Fehler-/Abbruch-/Veraltungsrennen. Beide existierenden Specrequirements werden vollständig einschließlich aller alten Szenarien übernommen und auf fehlende Backendverfügbarkeit konditioniert.
|
||||
|
||||
6. Add File/Remove File und MAK-Speicherung um Bibliotheksmitglieder erweitern; TBL als Binärabhängigkeit mit Herkunft anzeigen, weder als Text editieren noch als Startdatei anbieten. Save-As erhält die relative Referenz; Remove löscht keine Library. Start/Check/Debugger verwenden denselben Dienst wie `tbc link`, damit der IDE-Lauf dem Export entspricht. Im Debugger vorhandene Quellorte bewahren; fehlt Bibliotheksquelltext, dies anzeigen und vorhandene Fortsetzen-/Prozedurschrittwege anbieten, ohne einen erfundenen editierbaren Quellstand zu öffnen. Bibliotheksänderungen invalidieren Übersetzungs-/Linkcaches.
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- Alte Ergebnisse überschreiben neues Ziel → Veröffentlichung erst nach Generation-/Revisionstest im kontrollierenden Thread.
|
||||
- Editorinhalt und Export divergieren → eingefrorener Overlay-Snapshot; gespeicherte Dateibytes und Dirty-Markierungen in Tests vergleichen.
|
||||
- Hintergrundwerkzeug bleibt nach Esc aktiv → Prozess-/Staging-Lebensdauer an Auftrag binden und späte Rückmeldung negativ testen.
|
||||
|
||||
## Migration Plan
|
||||
|
||||
Vorhandene Dialoge und Tastenzuordnungen erhalten. Backendlose Starts bleiben nachvollziehbar bedienbar. Neue native Tests aus 02/03 sowie bestehende App-Abnahmetests parallel erhalten; Die additive TBL-Mitgliedsart aus 03 muss beim Öffnen/Speichern verlustfrei erhalten bleiben. Die alten Anforderungen werden für EXE-Zielwahl und portable Library-Ausgabe präzisiert; reine BAS-/FRM-Projekte bleiben unverändert.
|
||||
Reference in New Issue
Block a user