Files
TerminalBasic/openspec/changes/archive/2026-09-07-phase-5-08-integration-und-phasenabnahme/verification.md

166 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Verification Report: phase-5-08-integration-und-phasenabnahme
Stand: 2026-09-07. Geprüft wurden Proposal, Design, sämtliche Aufgaben, das
Delta `ide-phasenabnahme` sowie die sieben synchronisierten Phase-5-Hauptspecs.
Der zusätzliche Abgleich umfasst sämtliche 45 Zeilen der Referenzbedienung.
## Ergebnis
| Dimension | Ergebnis |
| --- | --- |
| Completeness | 12/12 Aufgaben; 5/5 Anforderungen des Changes; 45/45 Matrixzeilen |
| Correctness | 5/5 neue Szenarien; zusammen mit 0107 insgesamt 47 Anforderungen und 67 Szenarien |
| Coherence | Bestehende App, Dokumenttransaktionen, Compiler, VM, CLI und TestBackend wiederverwendet |
| Offene Befunde | 0 CRITICAL, 0 WARNING, 0 SUGGESTION |
## Anforderungen und neue Nachweise
Alle sechs neuen Tests liegen in `crates/tb-cli/src/ide_acceptance.rs`.
Sie laufen über `cargo test -p tb-cli --bin tbc ide_acceptance` und im
Workspace-Lauf. Als Testmodul des bestehenden CLI-Einstiegs können sie dessen
wirkliche `cmd_build`, `compile` und `run_chain` verwenden. Die bereits im
Workspace vorhandenen crossterm-/ratatui-Abhängigkeiten sind dafür zusätzlich
als CLI-Testabhängigkeiten deklariert; es gibt keine neue Laufzeitabhängigkeit.
| Requirement / Scenario | Implementierung und bestandener Nachweis |
| --- | --- |
| Vollständiger IDE-Arbeitsablauf / Schreiben bis Wiederaufnahme | `create_save_debug_help_exports_and_reopen` startet `App::new` ohne vorbereitete Dokumente. Native Tastatur-, Paste- und Mausereignisse erzeugen main.bas, helper.bas, Form1.frm, ein zweielementiges CommandButton-Array, ein Menü, work.bi sowie project.mak. F12 erzeugt Form_Load über Objekt- und Ereignisauswahl. Nach Startup-/Save-Dialog, Projektwechsel und Öffnen stimmen geladene BAS-Texte, vollständiges FormFile und Startdatei mit den gespeicherten Dateien überein; der wieder geöffnete Stand läuft erneut. |
| Arbeitsablauf: Debugger und Hilfe | Derselbe Test öffnet das Include über View → Included File, setzt F9 an Zeile 2, hält vor dem modulübergreifenden Bump-Aufruf und führt ihn mit F10 bis Zeile 3 aus. Add Watch zeigt total=2. Window → Immediate setzt total=9; F5 und Eingabe abc führen zu `? abc\n 9 abc!\n` und Dateiwert 9. Sämtliche gespeicherten Quellbytes bleiben unverändert; Wiederöffnen läuft wieder mit 2. F1 im Designer und auf PRINT im Editor, Tab/Enter/Alt+F1/Esc prüfen Hilfeziel und restaurierten Fokus. |
| Nachgewiesene Befehlsabdeckung / Mehrfach belegte Funktionstasten | `every_menu_command_has_native_keyboard_and_mouse_routing` bedient jeden Menüeintrag beider Modi über Alt/Mnemonic/Pfeile/Enter sowie gerenderte Maus-Hitbereiche. `function_keys_conflict_contexts_and_errors_keep_a_single_input_owner` und der Hauptablauf prüfen F2/F4/F10/F11/F12 einschließlich Designer-Value, Menü, Code-/Ereignisauswahl, Output-Vollbild und Debug-Prozedurschritt. IDE-Kommandos gelangen nicht zusätzlich in die BASIC-Eingabe. Die Facheffekte und zulässigen Kontexte stehen in der separaten, vollständig ausgefüllten [Befehlsmatrix](befehlsmatrix.md). `reference_matrix_is_complete_and_points_to_runnable_tests` vergleicht alle drei Originalspalten der 45 Referenzzeilen und prüft jeden verlinkten Rust-Test auch nach Archivierung. |
| CLI-Parität und robuste Übergänge / Vergleich derselben Sitzung | `saved_project_ide_source_cli_and_tbc_have_identical_sessions` erstellt dasselbe Projekt durch die UI, baut mit der tatsächlichen CLI-Funktion ein TBC und vergleicht IDE, Quell-CLI und TBC-CLI. Auf allen Wegen: 80×25, Uhrstart 0, Eingabe abc/Enter bei 100 ms, identische Anfangsdatei und COMMAND$ (`!` sowie `error`). Ausgabe, berechneter Wert 2, Dateibytes und Resultat END beziehungsweise Fehler 5 stimmen überein. Anfangs sind Form sichtbar, Datei 1 geschlossen und IDE-Eingaben leer; der zusätzliche IDE-Neustart liefert wieder dieselben Resultate. Der deterministische Host ersetzt ausschließlich das Terminal, nicht den CLI-Ausführungspfad. |
| Robuste Übergänge | `partial_save_and_external_edit_recover_without_losing_documents` erzeugt zwei Module ausschließlich über die UI. Ein fehlendes Zielverzeichnis lässt nur das erste Dokument gespeichert, das zweite bearbeitet und das Manifest ungeschrieben; Reparatur im offenen Dialog gelingt. Eine externe Änderung bleibt bis zur expliziten Überschreibentscheidung erhalten; anschließend läuft der erhaltene Projektcode. Der Funktionstasten-/Fehlertest ergänzt Compilefehler, Pause bei INPUT, fehlendes RUN-Ziel, Shell-Callback und Shrink auf 40×10 mit Rückkehr auf 100×30. Reale Shell-Übergabe und Terminalwiederherstellung werden zusätzlich im PTY geprüft. |
| Leistungs- und Dokumentationsabnahme / Abschlussbericht | Alle Workspace-Regressionen, Clippy, Formatprüfung, lokale PTY-Fälle und das vorhandene Release-Compile-Budget sind bestanden; Befehle, Ergebnisse, Hardware und Revision stehen unten. PLAN.md ordnet alle elf Phase-5-Punkte dieser Abnahme zu. Tutorial, Tastatur, Bedienungsreferenz und eingebettete Hilfe wurden auf die endgültigen Eingabewege abgeglichen. |
| Export-UI / Exportvorbereitung ohne Scheinerfolg | Im Hauptablauf werden Make EXE und Make Library über Menüs geöffnet. System/Architektur, leerer Pfad, abgewiesenes TBC-Ziel, bestehende Datei mit ausdrücklicher Überschreibentscheidung und gültiges neues Ziel werden über App-Eingaben geprüft. Das vorhandene `export_dialogs_validate_and_render_all_results_without_creating_files` ergänzt weitere Pfad-/Projektkollisionen. Die Produktionsaktion erklärt Phase 6 und schreibt keine Datei. Kontrollierte Running/Failed/Cancelled/Success-Rückmeldungen prüfen die vorhandene Auftrags-/Ergebnisübergabe; sie sind ausschließlich UI-Tests. Esc erhält den Projektstempel und alle ursprünglichen Dateibytes. |
## Gesamtprüfung der acht Phase-5-Changes
Die folgenden synchronisierten Spec-Dateien wurden mit ihren Implementierungs-
und Testpfaden abgeglichen. Die archivierten Berichte enthalten die detaillierte
Zuordnung der Vorgängerszenarien; ihre Tests wurden auf dem jetzigen Stand erneut
im Workspace ausgeführt. Die neue Befehlsmatrix ergänzt den gemeinsamen nativen
Eingabepfad und verlinkt konkrete ausführbare Facheffekte jeder Referenzzeile.
| Change / Capability | Anforderungen / Szenarien | Zuständiger Code und erneuter Nachweis |
| --- | --- | --- |
| 01 / ide-projekte | 5 / 9 | `tb-ide/src/documents.rs`, `tb-vm/src/project_io.rs`; 14 Dokumenttests, CLI-Projekttests, nativer Hauptablauf und Save-Fehlerablauf |
| 02 / ide-oberflaeche | 7 / 11 | `tb-ide/src/app.rs`, `commands.rs`, `render.rs`, `export.rs`; 12 App-Tests, alle Menürouten, F-Tastenkonflikte, Export-UI und PTY |
| 03 / ide-editor | 7 / 10 | `tb-ide/src/editor.rs`, Frontend-Editing und Projektcompiler; 7 Editortests, VM-Inkrementaltests, Include-Debugablauf und Release-Benchmark |
| 04 / ide-ausfuehrung | 6 / 9 | `tb-ide/src/execution.rs`, `tb-vm/src/project_io.rs`, CLI `run_chain`; 12 Ausführungstests, tatsächliche Dreiweg-Parität, Reset-/Fehlerabläufe und PTY |
| 05 / ide-formulardesigner | 6 / 6 | `tb-ide/src/designer.rs`, gemeinsame FormFile-/Forms-Metadaten; 18 Designertests einschließlich neuer Array-Merge-Gegenproben, UI-Hauptablauf und gespeicherter CLI-Lauf |
| 06 / ide-debugger | 7 / 11 | `tb-ide/src/debugger.rs`, VM-Debugger; 6 IDE- und 14 VM-Debuggertests, tatsächlicher F9/F10/Watch/Immediate/F5-Ablauf |
| 07 / ide-hilfe | 4 / 6 | `tb-ide/src/help.rs`, native F1-Aufrufer, eingebettete docs; 11 Hilfetests, Offline-Kindprozess sowie Hauptablauf mit Editor-/Designerhilfe |
| 08 / ide-phasenabnahme | 5 / 5 | Sechs neue CLI-Abnahmetests, Befehlsmatrix, PLAN-Zuordnung und dieser Bericht |
Keine Phase-5-Platzhalteraktion ist mehr vorhanden. Die einzige weiterhin
vorbereitete, ausdrücklich noch nicht ausführbare Erzeugungsleistung betrifft
das in Phase 6 geplante native Exportbackend.
## Behobene Befunde
1. **Control-Array über CtlName nicht herstellbar (Featurebereich 05).**
Die gemeinsame Umbenennung lehnte jeden bereits vorhandenen Namen ab.
Jetzt dürfen explizit indizierte Controls derselben Klasse und Form zu
einer Arraygruppe zusammengeführt werden. Formvalidierung und vollständige
Kandidatenübersetzung prüfen Index- und Ereigniskollisionen vor dem Commit.
Die Bindungsprüfung verwendet die semantische Objektidentität statt des
durch Zusammenführen verschobenen numerischen Katalogindex.
`indexed_controls_merge_atomically_with_bindings_and_undo` prüft erfolgreiche
Zusammenführung samt Ziel-/Quell-/unbeteiligten Codebindungen, vollständiges
Undo sowie atomare Ablehnung von Skalar-, Index-, Klassen- und Handlerkonflikten.
Alle bisherigen Umbenennungs-/Include-/Schattenbindungsregressionen bestehen.
2. **Tutorial verkürzte die tatsächliche Bedienfolge (Featurebereich 07).**
F12 zeigt zuerst die Objekt-, danach die Ereignisauswahl. Das Tutorial nennt
jetzt beide Bestätigungen und den nötigen F10-Wechsel zur Properties Bar
nach Menübedienung. Control-Array-Erzeugung und ihre Grenzen sind in Tutorial
und Bedienungsreferenz beschrieben. Help-Katalog und native Aufrufer bestehen.
Die fachliche Korrektur liegt im bestehenden Designerpfad; die Integration
führt keinen zweiten Designer und keinen alternativen Compiler-/VM-Pfad ein.
Es wurden keine Fachanforderungen abgeschwächt und keine bisherigen Tests entfernt.
## PLAN-Zuordnung
Alle elf Checkboxen unter Phase 5 sind anhand folgender bestandener Nachweise
abgehakt; die Bezeichnung „Eigenschaftenfenster“ wurde zu „Properties Bar“ präzisiert.
| Phase-5-Punkt | Nachweis |
| --- | --- |
| IDE-Rahmen | App-Tests, vollständige native Menürouten, Resize-/Fokusprüfung |
| Editor | Editortests, Help-Aufrufer, Include-Navigation, Inkrementaltests und Compile-Budget |
| Projektverwaltung | UI-Hauptablauf, drei persistierte Mitglieder, Save/Close/Reopen, CLI-/TBC-Parität |
| Formular-Designer | Vollständige Metadaten-Toolbox, 18 Designerregressionen, Array/Menü/Form_Load im UI-Ablauf |
| Ausführen aus der IDE | Start/Pause/Continue/Restart, Fehlerabläufe, deterministische Dreiweg-Parität |
| Export-Bedienung | Beide vollständigen Dialoge im Hauptablauf und App-Exportregression |
| `$INCLUDE` | Bestehende relative/Zyklus-/Overlayprüfungen; physischer Include-Breakpoint und Dreiweg-Parität |
| `RUN` | Bestehende Ziel-/Resetprüfungen, fehlendes Ziel im nativen Fehlerablauf und sauberer Neustart |
| Debugger | IDE-/VM-Debuggertests und tatsächliche Watch-Wertänderung mit F10/F5 im Hauptablauf |
| Hilfe-System | Elf Hilfetests, Offline-Kindprozess, Kataloglinks und beide tatsächlichen F1-Aufrufer |
| Vollständiges IDE-Programm | `create_save_debug_help_exports_and_reopen` und anschließender Dreiweg-Lauf derselben gespeicherten Dateien |
## Abschlussprüfungen und Messung
Geprüfter Code: Basisrevision `cc828308893b95fb614fbd2ec102a811358c7762`
plus der uncommittete Implementierungsstand dieses Changes. Keine nachträgliche
Produktcodeänderung nach dem finalen Workspace-/Clippy-/Benchmark-Lauf.
Implementierungsfingerabdruck SHA-256: `b616a1b94ce60bb215b104e5c6b4fe0edde4033703dda7a2d6124fea5e9e38b2`
(Pfade lexikografisch sortiert, jeweils UTF-8-Pfad, NUL, Dateibytes, NUL:
`Cargo.lock`, `crates/tb-cli/Cargo.toml`, `crates/tb-cli/src/main.rs`,
`crates/tb-cli/src/ide_acceptance.rs`, `crates/tb-ide/src/designer.rs`,
`crates/tb-ide/tests/designer.rs`).
Die abschließenden PLAN-/Bericht-/Task-Änderungen wurden separat validiert;
wegen des eingebetteten PLAN wurde die Hilfeprüfung danach erneut ausgeführt.
| Befehl | Ergebnis |
| --- | --- |
| `cargo test -p tb-cli --bin tbc ide_acceptance` | 6 bestanden |
| `cargo test -p tb-ide --test designer` | 18 bestanden |
| `cargo test --workspace` | 605 bestanden plus 1 erfolgreicher Offline-Kindprozess; 0 Fehler; 2 bestehende Ignore-Fälle |
| `cargo clippy --workspace --all-targets -- -D warnings` | bestanden |
| `cargo fmt --all -- --check` | bestanden |
| `cargo build -p tb-ide` | bestanden |
| `python3 tests/support/ide-execution-pty.py` | 3 bestanden: Shell Exit 7, Ctrl+C im Shell-Kind, File → Shell; Rückkehr und Terminalrestaurierung geprüft |
| `cargo bench -p tb-vm --bench compile` | alle vier bestehenden Zeitbudgets eingehalten, einmaliger Abschlusslauf |
| `cargo test -p tb-ide --test help` | 11 bestanden plus Offline-Kindprozess, nach PLAN-Abschluss |
| `openspec validate --all --strict --no-interactive` | 23/23 gültig; bestehende INFO-Längenhinweise sind keine Fehler |
| `git diff --check` | bestanden |
Referenzhardware: Apple M5 Max, aarch64, 18 CPU-Kerne, 128 GiB RAM;
macOS 26.6.2 (25G83). rustc 1.97.1 (8bab26f4f, 2026-07-14),
cargo 1.97.1 (c980f4866, 2026-06-30). Bestehender eigener Benchmark-Harness,
Release mit opt-level=3, LTO=true, codegen-units=1. Kein neues Benchmarkverfahren.
| Messung | Größe / Verfahren | Ergebnis | Bestehendes Budget |
| --- | --- | --- | --- |
| Vollcompile Einzelmodul | 508 Zeilen; Aufwärmen, bester von 10 Läufen | 0,74 ms | <50 ms |
| Vollcompile Projekt | 20 Module, 49.760 Zeilen, 335.421 Instruktionen; ein Lauf | 98 ms | <1.000 ms |
| Cacheänderung Einzelmodul | Private Rumpfänderung; Median aus 7; 1 neu / 0 wiederverwendet | 0,77 ms | <50 ms |
| Cacheänderung Projekt | Private Rumpfänderung; Median aus 7; 1 neu / 19 wiederverwendet; Invalidierung + Link | 21,94 ms | <1.000 ms |
Die beiden bestehenden Ignore-Fälle sind der explizite Golden-Output-Generator
und die externe VBDOS-Referenzsuite (`TB_VBDOS_REPO`); kein Phase-5-Test ist
ignoriert. Die normale vorhandene Workspace-Regression wurde vollständig ausgeführt.
Die lokale Abnahme verwendet native crossterm-Ereignisse, TestBackend und einen
realen Unix-PTY. Sie ersetzt nicht die separat offene Phase-6-Matrix für Windows
Terminal, mehrere Linux-Emulatoren und macOS samt systematischen Maus-/Sondertasten.
Auch native Executable-/Library-Erzeugung und deren Verbraucherprüfung bleiben
unverändert offene Phase-6-Aufgaben. Kontrollierte Exportcallbacks behaupten
keinen tatsächlichen Export.
Keine Prüfdimension dieses Changes wurde ausgelassen. Die erneute Verifizierung
meldet keine offenen Befunde. Der Change ist zur separaten Synchronisierung und
Archivierung bereit.
## Synchronisierung und Archivierung
Am 2026-09-07 wurden alle fünf Anforderungen einschließlich Purpose unverändert
in `openspec/specs/ide-phasenabnahme/spec.md` synchronisiert. Der vollständige
Vergleich mit dem Delta und die strikte Validierung aller 23 Hauptspecs bestanden
vor dem Archivieren. Der Change liegt jetzt unter
`openspec/changes/archive/2026-09-07-phase-5-08-integration-und-phasenabnahme/`.
Abhängigkeits- und Übersichtslinks wurden an den Archivpfad angepasst.
Der ausführbare Matrixnachweis besteht auch am Archivort; OpenSpec führt
keine aktiven Changes mehr. Der oben dokumentierte Produktcode-Fingerabdruck
ist unverändert, daher wurden die bereits bestandenen Produkt- und
Leistungsprüfungen nicht erneut ausgeführt.