166 lines
15 KiB
Markdown
166 lines
15 KiB
Markdown
# 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 01–07 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.
|