Phase 6: IDE-Exportanbindung abschließen und Change archivieren
This commit is contained in:
@@ -1,20 +1,22 @@
|
||||
## 1. Auftrag und Backend
|
||||
|
||||
- [ ] 1.1 Bestehenden ExportRequest mit dem gemeinsamen Dienst aus 02/03 verbinden; ein Auftrag muss den aktuellen Modul-/Form-/Include-Overlaystand ohne implizites Speichern erfassen und per Test belegen.
|
||||
- [ ] 1.2 Zielauswahl aus dem gemeinsamen Vierziel-Katalog ableiten; App-Tests müssen ungültige EXE-Kombinationen, fehlende tbrt-Vorlagen und Finalisierung diagnostizieren sowie TBL-Ausgabe ohne native Zielauswahl/Vorlage ermöglichen.
|
||||
- [ ] 1.3 Langlaufende Erzeugung mit eindeutiger Auftragsgeneration und temporärem Ergebnis an den Terminaltreiber anbinden; ein verzögerter Testauftrag muss weitere UI-Eingaben zulassen, ohne lebende Rc-/VM-Werte zu übertragen.
|
||||
- [x] 1.1 Bestehenden ExportRequest mit dem gemeinsamen Dienst aus 02/03 verbinden; ein Auftrag muss den aktuellen Modul-/Form-/Include-Overlaystand ohne implizites Speichern erfassen und per Test belegen.
|
||||
- [x] 1.2 Zielauswahl aus dem gemeinsamen Vierziel-Katalog ableiten; App-Tests müssen ungültige EXE-Kombinationen, fehlende tbrt-Vorlagen und Finalisierung diagnostizieren sowie TBL-Ausgabe ohne native Zielauswahl/Vorlage ermöglichen.
|
||||
- [x] 1.3 Langlaufende Erzeugung mit eindeutiger Auftragsgeneration und temporärem Ergebnis an den Terminaltreiber anbinden; ein verzögerter Testauftrag muss weitere UI-Eingaben zulassen, ohne lebende Rc-/VM-Werte zu übertragen.
|
||||
|
||||
- [ ] 1.4 TBL-Mitglieder an Projektverwaltung, MAK-Roundtrip/Save-As und Start/Check/Debugger anbinden; Add/Remove ohne Dateilöschung, unzulässige Library-Startauswahl, quellfreie Prozeduraufrufe und ehrliche Anzeige fehlender Debuggerquellen testen.
|
||||
- [ ] 1.5 TBL-Bytes in Cache-/Auftragsidentität aufnehmen; geänderte Libraries müssen eine Neuverknüpfung erzwingen und während des Exports ausgetauschte Libraries die Veröffentlichung des alten Auftrags verhindern.
|
||||
- [x] 1.4 TBL-Mitglieder an Projektverwaltung, MAK-Roundtrip/Save-As und Start/Check/Debugger anbinden; Add/Remove ohne Dateilöschung, unzulässige Library-Startauswahl, quellfreie Prozeduraufrufe und ehrliche Anzeige fehlender Debuggerquellen testen.
|
||||
- [x] 1.5 TBL-Bytes in Cache-/Auftragsidentität aufnehmen; geänderte Libraries müssen eine Neuverknüpfung erzwingen und während des Exports ausgetauschte Libraries die Veröffentlichung des alten Auftrags verhindern.
|
||||
|
||||
## 2. Abschluss und Abbruch
|
||||
|
||||
- [ ] 2.1 Validierung von Generation, Projektstempel und Abbruch vor Dateiveröffentlichung implementieren; Projektwechsel und konkurrierende Aufträge dürfen weder alte Ziele überschreiben noch fremden Erfolg anzeigen.
|
||||
- [ ] 2.2 Esc/Abbruch und Fehlerbereinigung implementieren; Tests müssen Kindprozessende beziehungsweise verworfenes Spätergebnis, entfernte Staging-Dateien und unveränderte bestehende Ziele nachweisen.
|
||||
- [ ] 2.3 Echte Status-/Ziel-/Diagnoseanzeige und Rückkehr zum Projekt anbinden; Tastatur- und Mauswege müssen denselben Auftrag auslösen und alle Dirty-/Dokumentzustände erhalten.
|
||||
- [x] 2.1 Validierung von Generation, Projektstempel und Abbruch vor Dateiveröffentlichung implementieren; Projektwechsel und konkurrierende Aufträge dürfen weder alte Ziele überschreiben noch fremden Erfolg anzeigen.
|
||||
- [x] 2.2 Esc/Abbruch und Fehlerbereinigung implementieren; Tests müssen Kindprozessende beziehungsweise verworfenes Spätergebnis, entfernte Staging-Dateien und unveränderte bestehende Ziele nachweisen.
|
||||
- [x] 2.3 Echte Status-/Ziel-/Diagnoseanzeige und Rückkehr zum Projekt anbinden; Tastatur- und Mauswege müssen denselben Auftrag auslösen und alle Dirty-/Dokumentzustände erhalten.
|
||||
|
||||
## 3. Integration und Speckonsistenz
|
||||
|
||||
- [ ] 3.1 Backendlose Phase-5-Tests ausdrücklich mit fehlendem Backend weiterführen und zusätzliche reale Exportfälle ergänzen; beide Modi müssen ihre unterschiedlichen Erfolg-/Verfügbarkeitsbedingungen belegen.
|
||||
- [ ] 3.2 Vollständigen IDE-Hauptablauf um tatsächlichen EXE-Start und TBL-Export mit separatem BASIC-Verbraucher über `tbc link` ergänzen; Ausgabe, Änderungen im ungespeicherten Include, IDE-/CLI-Linkparität und erhaltene Quellbytes prüfen.
|
||||
- [ ] 3.3 Alle geänderten und neuen Spec-Szenarien mit Tests zuordnen; native Tests, bestehende IDE-Regressionen, Clippy, Format- und OpenSpec-Prüfung müssen ohne offenen Befund bestehen.
|
||||
- [x] 3.1 Backendlose Phase-5-Tests ausdrücklich mit fehlendem Backend weiterführen und zusätzliche reale Exportfälle ergänzen; beide Modi müssen ihre unterschiedlichen Erfolg-/Verfügbarkeitsbedingungen belegen.
|
||||
- [x] 3.2 Vollständigen IDE-Hauptablauf um tatsächlichen EXE-Start und TBL-Export mit separatem BASIC-Verbraucher über `tbc link` ergänzen; Ausgabe, Änderungen im ungespeicherten Include, IDE-/CLI-Linkparität und erhaltene Quellbytes prüfen.
|
||||
- [x] 3.3 Alle geänderten und neuen Spec-Szenarien mit Tests zuordnen; native Tests, bestehende IDE-Regressionen, Clippy, Format- und OpenSpec-Prüfung müssen ohne offenen Befund bestehen.
|
||||
|
||||
Verifiziert am 2026-09-07: [Nachweise und Szenarioabgleich](verification.md). Keine offenen Befunde im Change-Umfang.
|
||||
@@ -0,0 +1,96 @@
|
||||
# Verifikation: phase-6-04-ide-exportanbindung
|
||||
|
||||
Stand: 2026-09-07. Implementierung auf Basis von `25176947ba992520d6cf451f20097b6380fb9555`.
|
||||
Change 03 wurde zuvor synchronisiert, archiviert und mit diesem Commit auf
|
||||
`origin/main` bestätigt. Change 04 wurde am 2026-09-07 synchronisiert und archiviert; dieser Bericht
|
||||
wird gemeinsam mit der Implementierung committed.
|
||||
|
||||
## Ergebnis
|
||||
|
||||
| Dimension | Ergebnis |
|
||||
|---|---|
|
||||
| Vollständigkeit | 11/11 Aufgaben, 7 Requirements und 11 Szenarien abgedeckt |
|
||||
| Korrektheit | Keine offenen Befunde nach Korrekturen und erneuten Prüfungen |
|
||||
| Kohärenz | Bestehende Dokumentidentitäten, gemeinsamer Projektcompiler/Linker und Exportdienst; nur Bytes und Auftragsdaten im Worker |
|
||||
| Zielabnahme | Echte native Ausführung auf macOS arm64 bestanden; vollständige Plattform-/Releaseabnahme bleibt gemäß PLAN in 05/06 |
|
||||
|
||||
## Requirement- und Szenarioabgleich
|
||||
|
||||
| Requirement / Szenario | Umsetzung und Nachweis |
|
||||
|---|---|
|
||||
| Reale Erzeugung / ungespeichertes Include | `export.rs::Job::start` übersetzt den aktuellen `Project::sources`-Overlaystand ohne Speichern, übergibt TBC-/TBL-Bytes an den Worker. App-Test `real_library_export_uses_dirty_include_and_mouse_without_runtime_template` und echter CLI-/IDE-Abnahmetest `real_native_ide_exports_and_source_free_cli_library_consumer` prüfen geändertes Include, unveränderte Quelldateien, Dirty-Status und tatsächliches Ergebnis. |
|
||||
| Verfügbarkeit und Zielkonsistenz / fehlende Vorlage | Zielkombinationen stammen aus `tb_export::Target::ALL`. EXE-Validierung weist Windows arm64 und macOS amd64 ab; fehlende Vorlagen und fehlgeschlagene Finalisierung erscheinen im bedienbaren Dialog. App-Tests `executable_target_validation_and_missing_template_are_honest` und `finalization_failure_is_reported_and_preserves_existing_output`. |
|
||||
| Abbruch und eindeutige Veröffentlichung / Ergebnis nach Projektwechsel | `Job` liefert `PreparedPublication`; `App::tick_export` prüft Dialog, Generation, Projekt-/Include-/TBL-Stand und bisherigen Zielinhalt vor Veröffentlichung im UI-Thread. Drop verwirft Staging, setzt Abbruch und beendet den Worker; codesign wird bei Abbruch beendet. Kontrollierte verzögerte Resultate prüfen Resize während der Arbeit, Esc, Projektwechsel, neueren Auftrag, Bearbeitung und externe Zieländerung. Kein alter Auftrag veröffentlicht. |
|
||||
| Bedienung bis unabhängige Nutzung / IDE-Export benutzen | Tastatur- und Mauswege verwenden denselben Submit-Pfad. Echte native Abnahme erzeugt ein Forms-Projekt über den IDE-Hauptablauf, hält im Debugger, exportiert EXE und TBL, entfernt Library-Quellen, verwendet die TBL über den echten `tbc link`-Befehl und in einem zweiten IDE-Projekt. CLI-/IDE-Ergebnisse stimmen überein. Das native Programm startet anschließend mit leerem PATH und zeigt die ungespeicherte Include-Änderung einschließlich Dateieffekt. |
|
||||
| Bibliotheken im IDE-Projekt / nach Lauf ersetzen | TBL wird als validierte Binärabhängigkeit mit Dokumentidentität geführt, jedoch ohne Textansicht, Editieren, Text-/Dateispeicherung oder Startup-Auswahl. Loader überspringt TBL-Textoverlays; Start/Check/Debugger verwenden den gemeinsamen Linker. Dokumenttest prüft Add/Remove, Reihenfolge, relative MAK-Referenzen, Save As und erhaltene Librarydatei. `replaced_library_invalidates_pending_export_even_with_same_length` prüft Neuübersetzung und verworfenen Export trotz gleicher Dateigröße. |
|
||||
| Bibliotheken im IDE-Projekt / Library ohne native Vorlage | Make Library hat nur Artefaktbeschreibung, `.tbl`-Ausgabepfad und Überschreibentscheidung. Reale quellfreie Verwendung aus dem App-Test funktioniert ohne Runtime-Vorlage. |
|
||||
| Vollständige Exportdialoge / ohne Backend | Bestehender App-Oberflächentest und Phase-5-Hauptablauf setzen ausdrücklich `export_backend=false`; Verfügbarkeitsgrund, Angaben, Validierung und unveränderte Dateien werden weiter geprüft. |
|
||||
| Vollständige Exportdialoge / fehlerhafte Ausgabeangaben | Leere Pfade, fehlende Zielverzeichnisse, TBC als natives Artefakt, falsche Libraryendung und nicht freigegebene bestehende Ziele werden vor Arbeit abgewiesen. Bestehende App-/CLI-Oberflächentests bleiben erhalten und berücksichtigen die portable Library-Maske. |
|
||||
| Vollständige Exportdialoge / kontrollierte Ergebnisdarstellung | Die backendlosen Tests melden Laufend, Erfolg, Fehler und Abbruch mit demselben Auftrag zurück und prüfen Anzeige sowie unveränderte Projektstempel; sie behaupten keine Dateierzeugung. |
|
||||
| Vollständige Exportdialoge / verfügbares Backend | Zusätzliche reale Library- und native Abnahmen prüfen tatsächliche Dateien, Status und unabhängige Nutzung. Schließen nach erfolgreicher Veröffentlichung erhält den tatsächlichen Erfolg. |
|
||||
| Export-UI als Phasenleistung / ohne Scheinerfolg | Backendlose Phase-5-Abnahme bleibt explizit erhalten; zusätzlich wird die Phase-6-Erzeugung über dieselbe UI nachgewiesen. |
|
||||
|
||||
Zusätzlicher Debuggernachweis: `debugger_reports_absent_library_source_and_can_step_back_to_caller`
|
||||
prüft den tatsächlichen Halt in quellfreiem Librarycode, die Meldung des fehlenden
|
||||
Quelltexts, Prozedurschritt/Fortsetzen und das richtige Ergebnis ohne erfundene
|
||||
Dokumente oder erzeugte Quelldateien.
|
||||
|
||||
## Behobene Befunde
|
||||
|
||||
- Die erste Revisionsprüfung bezog auch externe Änderungen gespeicherter,
|
||||
bereits geöffneter Includes ein. Geöffnete Puffer bleiben jetzt maßgeblich;
|
||||
TBL und nicht geöffnete Dateieingaben werden über ihre tatsächlichen Bytes
|
||||
geprüft. Der bestehende Include-/Editor-Regressionsfall besteht.
|
||||
- Späte Ergebnisse dürfen keine Ausgabewirkung vor dem UI-Check haben:
|
||||
gemeinsame Veröffentlichung in Vorbereitung und Freigabe getrennt;
|
||||
zusätzlich wird der Zielinhalt bereits ab Auftragsbeginn geschützt.
|
||||
- Ein bereits erfolgreicher Export wurde beim Schließen als abgebrochen
|
||||
gespeichert. Der abgeschlossene Erfolgsstatus bleibt jetzt erhalten.
|
||||
- Worker- und Signierprozesslebensdauer sowie Staging-Bereinigung sind an den
|
||||
Auftrag gebunden, auch beim Beenden der IDE.
|
||||
- Bibliotheken sind aus Text-/Startup-Auswahl und Quellspeicherung ausgeschlossen;
|
||||
auch das implizite Ausführungsziel wird aus Quellmitgliedern gewählt.
|
||||
- Alte Exporthinweise in Bedienung/Tutorial und fehlende eingebettete Hilfeziele
|
||||
wurden korrigiert. Die Hilfe-Endprüfung verwendet den aufgelösten letzten
|
||||
Dokumenteintrag statt einer festen Seitennummer.
|
||||
|
||||
## Ausgeführte Prüfungen
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
|---|---|
|
||||
| `cargo test --locked --workspace` | 633 bestanden, 0 fehlgeschlagen, 3 ausdrücklich ignoriert |
|
||||
| Echter nativer IDE-Abnahmetest mit `TB_IDE_RUNTIME_DIR` und `--ignored` | 1 bestanden auf macOS arm64; IDE→EXE→Prozessstart und IDE→TBL→CLI-/IDE-Verbraucher |
|
||||
| Zusätzlicher finaler IDE-Ausführungstest nach Quellzielkorrektur | 12 bestanden |
|
||||
| Finaler Help-Test nach Dokumentationsabgleich | 11 bestanden; zusätzlich Offline-Kindprozess bestanden |
|
||||
| `cargo clippy --locked --workspace --all-targets -- -D warnings` | Bestanden |
|
||||
| `cargo fmt --all -- --check`, `git diff --check` | Bestanden |
|
||||
| `openspec validate --all --strict` | 30 Elemente bestanden, 0 fehlgeschlagen |
|
||||
| Release-Build von IDE/CLI und nativer Runtime/Exportwerkzeug | Bestanden |
|
||||
| `native-abnahme.py --target aarch64-apple-darwin` | Echte native Programme, Forms, PTY, Exportabbruch, Signierung und Beschädigungsprüfungen bestanden |
|
||||
| `library-abnahme.py` | Identisches gemeinsames TBL-Artefakt, quellfreie TBC-/EXE-Verbraucher und RUN bestanden |
|
||||
| `cargo check --locked --target aarch64-unknown-linux-gnu -p tb-ide` | Bestanden; kein Linux-Ausführungsnachweis |
|
||||
|
||||
Die regulär ignorierten Fälle sind Golden-Erzeugung, externer Fremdbestand und
|
||||
der neue native IDE-Test mit expliziter Runtime-Voraussetzung. Letzterer wurde
|
||||
separat tatsächlich ausgeführt. Ein früher Korpuslauf traf im unveränderten
|
||||
Zeitfall `timezonefallback.bas` eine Sekundengrenze; der vollständige abschließende
|
||||
Workspace-Lauf bestand ohne Anpassung dieses Tests oder seiner Sollwerte.
|
||||
|
||||
Native IDE-Abnahme reproduzieren: geprüfte Host-Vorlage samt Metadaten unter
|
||||
`<runtime-root>/<target-triple>/tbrt[.exe]` bereitstellen (beispielsweise mit
|
||||
`tests/support/build-runtime.py`), `TB_IDE_RUNTIME_DIR=<runtime-root>` setzen und
|
||||
`cargo test --locked -p tb-cli --bin tbc ide_acceptance::real_native_ide_exports_and_source_free_cli_library_consumer -- --ignored`
|
||||
ausführen. Ohne diese explizite Voraussetzung wird kein nativer Nachweis behauptet.
|
||||
|
||||
Rohprotokolle dieser Sitzung: `/tmp/tb04-workspace-final.log`,
|
||||
`/tmp/tb04-native-final.log`, `/tmp/tb04-execution-final.log`, `/tmp/tb04-help.log`,
|
||||
`/tmp/tb04-clippy-final.log`, `/tmp/tb04-openspec.log`,
|
||||
`/tmp/tb04-native-regression.log`, `/tmp/tb04-library-regression.log`,
|
||||
`/tmp/tb04-linux-check.log`, `/tmp/tb04-release-final.log`.
|
||||
|
||||
## Übergabe
|
||||
|
||||
Change 04 wurde nach erfolgreicher Verifikation synchronisiert und archiviert. Change 05 übernimmt
|
||||
die reale Terminalmatrix auf allen vier Zielsystemen, Change 06 den zentralen
|
||||
Cross-Paketbau und paketgebundene Ausführungsnachweise. Der lokale macOS-Nachweis
|
||||
und Linux-Cross-Check ersetzen diese noch ausstehenden Abnahmen nicht.
|
||||
Reference in New Issue
Block a user