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

15 KiB
Raw Blame History

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. 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.