Implement and archive Phase 5 integration acceptance
This commit is contained in:
@@ -35,7 +35,7 @@ Besondere Risiken sind unverändert ausgeführte alte Kompilate nach einer Text
|
||||
| 05 | [Formular-Designer](../2026-09-06-phase-5-05-formular-designer/proposal.md) | 01, 02, 03 | Visuelles Gestalten und konsistenter Ereigniscode |
|
||||
| 06 | [Debugger und Direktfenster](../2026-09-06-phase-5-06-debugger-und-direktfenster/proposal.md) | 03, 04 | Quellgenaues Debuggen, Watches, Immediate, History und Fehlerhalte |
|
||||
| 07 | [Hilfesystem](../2026-09-07-phase-5-07-hilfesystem/proposal.md) | 02, 03 | Offline-Markdown-Hilfe und Kontextnavigation |
|
||||
| 08 | [Integration und Phasenabnahme](../../phase-5-08-integration-und-phasenabnahme/proposal.md) | 01–07 | Durchgängiger Arbeitsablauf, Befehlsabdeckung und nachgewiesener PLAN-Status |
|
||||
| 08 | [Integration und Phasenabnahme](../2026-09-07-phase-5-08-integration-und-phasenabnahme/proposal.md) | 01–07 | Durchgängiger Arbeitsablauf, Befehlsabdeckung und nachgewiesener PLAN-Status |
|
||||
|
||||
```text
|
||||
01 --> 02 --> 03 --> 04 --> 06 --+
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-09-06
|
||||
@@ -0,0 +1,65 @@
|
||||
# Phase 5: ausführbare Befehlsmatrix
|
||||
|
||||
Die ersten drei Spalten übernehmen alle 45 Zeilen der ursprünglichen Phase-5-Übersicht.
|
||||
Zuständigkeiten 01–07 bezeichnen die archivierten Featurechanges, 08 die Integration.
|
||||
Alle hier genannten Rust-Tests laufen mit `cargo test --workspace`.
|
||||
`reference_matrix_is_complete_and_points_to_runnable_tests` prüft Vollständigkeit,
|
||||
Zuordnung und vorhandene Testfunktionen auch nach Archivierung dieses Changes.
|
||||
|
||||
Der gemeinsame App-Nachweis `every_menu_command_has_native_keyboard_and_mouse_routing`
|
||||
speist für jeden Menüeintrag in Environment und Designer sowohl Alt/Mnemonic/Pfeile/Enter
|
||||
als auch gerenderte Maus-Hitbereiche ein. Verfügbarkeitsdiagnosen sind dort erlaubt;
|
||||
den tatsächlichen Facheffekt im zulässigen Kontext belegen die folgenden Fachtests.
|
||||
`function_keys_conflict_contexts_and_errors_keep_a_single_input_owner` und der Hauptablauf
|
||||
prüfen zusätzlich die kontextabhängigen Funktionstasten ohne doppelte BASIC-Zustellung.
|
||||
Kein interner Befehlsaufruf allein wird als Nachweis des nativen Eingaberoutings gewertet.
|
||||
File-Shell und BASIC-Shell werden zusätzlich durch `python3 tests/support/ide-execution-pty.py`
|
||||
im echten lokalen PTY geprüft. Die Emulator-/OS-Matrix bleibt Phase 6.
|
||||
|
||||
| Referenzbereich | Befehle / Bedienung | Zuständig | Ausführbare Verhaltensnachweise |
|
||||
|---|---|---|---|
|
||||
| File | New Project, Open Project, Save Project | 01, 02 | `crates/tb-cli/src/ide_acceptance.rs::create_save_debug_help_exports_and_reopen` |
|
||||
| File | New Form, New Module, Add File, Remove File | 01, 02 | `crates/tb-ide/tests/app.rs::file_picker_save_conflict_and_project_replacement_use_real_events`; `crates/tb-ide/tests/documents.rs::startup_removal_requires_explicit_replacement_and_never_deletes_a_file` |
|
||||
| File | Save File, Save File As, Load Text, Save Text | 01; Textbearbeitung 03 | `crates/tb-ide/tests/app.rs::file_picker_save_conflict_and_project_replacement_use_real_events`; `crates/tb-ide/tests/documents.rs::shared_views_text_import_and_undo_are_document_transactions`; `crates/tb-cli/src/ide_acceptance.rs::create_save_debug_help_exports_and_reopen` |
|
||||
| File | Print | 04 | `crates/tb-ide/tests/execution.rs::print_uses_utf8_protected_output_and_does_not_mutate_source` |
|
||||
| File | Shell | 04 | `crates/tb-ide/tests/execution.rs::shell_request_is_resumed_once_and_error_is_basic_error` |
|
||||
| File | Exit / Alt+F4 | 02; Dokumententscheidungen 01, Sitzungsende 04 | `crates/tb-ide/tests/app.rs::exit_with_partial_save_retains_dialog_and_unsaved_documents` |
|
||||
| Edit | Undo/Ctrl+Z, Cut/Ctrl+X, Copy/Ctrl+C, Paste/Ctrl+V, Clear/Del | Text 03, Controls 05 | `crates/tb-ide/tests/editor.rs::cua_unicode_overwrite_wordstar_and_shared_undo`; `crates/tb-ide/tests/designer.rs::clipboard_children_arrays_and_delete_preserve_code` |
|
||||
| Edit | New Sub, New Function | 03 | `crates/tb-ide/tests/editor.rs::procedures_and_shared_save_hook_preserve_drafts_and_frm_code` |
|
||||
| Edit | Event Procedures / F12 | 05, Codeoperationen 03 | `crates/tb-ide/tests/designer.rs::event_array_signature_twice_and_shared_form_identity`; `crates/tb-cli/src/ide_acceptance.rs::create_save_debug_help_exports_and_reopen` |
|
||||
| View | Code / F2, Form / Shift+F12 | 02, 03, 05 | `crates/tb-cli/src/ide_acceptance.rs::function_keys_conflict_contexts_and_errors_keep_a_single_input_owner`; `crates/tb-ide/tests/designer.rs::event_array_signature_twice_and_shared_form_identity` |
|
||||
| View | Next Statement | 06 | `crates/tb-ide/tests/debugger.rs::calls_procedure_step_cursor_history_and_restart` |
|
||||
| View | Output Screen / F4 | 04 | `crates/tb-ide/tests/execution.rs::output_viewports_resize_and_end_preserve_buffer_and_basic_colors` |
|
||||
| View | Included File, Included Lines | 03 | `crates/tb-ide/tests/editor.rs::includes_and_diagnostic_selection_use_original_physical_files` |
|
||||
| View (Designer) | Menu Bar / F10, Grid Lines | 05 auf 02 | `crates/tb-ide/tests/designer.rs::property_bar_types_readonly_and_no_status_line`; `crates/tb-ide/tests/designer.rs::toolbox_double_click_tool_drag_grid_and_window_form_selection` |
|
||||
| Search | Find, Selected Text/Ctrl+Backslash, Repeat Last Find/F3, Change | 03 | `crates/tb-ide/tests/editor.rs::search_scope_direction_wrap_and_shortening_replace_all` |
|
||||
| Run | Start/Shift+F5, Restart, Continue/F5, Modify COMMAND$ | 04 | `crates/tb-ide/tests/execution.rs::restart_command_run_targets_and_missing_target_preserve_documents`; `crates/tb-cli/src/ide_acceptance.rs::saved_project_ide_source_cli_and_tbc_have_identical_sessions` |
|
||||
| Run | Unterbrechen / Ctrl+Break | 04; zusätzlicher zugänglicher IDE-Befehl | `crates/tb-ide/tests/execution.rs::f5_input_pause_copy_and_single_delivery_keep_the_same_vm` |
|
||||
| Run | Set Start-up File | Persistenz 01, Ausführungswirkung 04 | `crates/tb-ide/tests/execution.rs::startup_selection_matches_shared_cli_pipeline_and_legacy_mak` |
|
||||
| Run | Make EXE File, Make Library | Vollständige UI 02, UI-Abnahme 08; native Erzeugung und reale Backend-Anbindung Phase 6 | `crates/tb-ide/tests/app.rs::export_dialogs_validate_and_render_all_results_without_creating_files`; `crates/tb-cli/src/ide_acceptance.rs::create_save_debug_help_exports_and_reopen` |
|
||||
| Debug | Add Watch, Instant Watch/Shift+F9, Watchpoint, Delete Watch, Delete All Watch | 06 | `crates/tb-ide/tests/debugger.rs::dispatcher_marks_edits_rebind_and_readonly_watches`; `crates/tb-ide/tests/debugger.rs::immediate_wait_run_transition_watchpoint_and_trace_are_session_owned`; `crates/tb-ide/tests/debugger.rs::calls_mouse_inspection_instant_key_delete_and_error_window` |
|
||||
| Debug | Trace On, History On, Shift+F8/Shift+F10 | 06 | `crates/tb-ide/tests/debugger.rs::calls_procedure_step_cursor_history_and_restart`; `crates/tb-ide/tests/debugger.rs::immediate_wait_run_transition_watchpoint_and_trace_are_session_owned` |
|
||||
| Debug | Toggle Breakpoint/F9, Clear All Breakpoints, Break on Errors, Set Next Statement | 06 | `crates/tb-ide/tests/debugger.rs::dispatcher_marks_edits_rebind_and_readonly_watches`; `crates/tb-vm/tests/debugger.rs::immediate_handler_resume_and_break_on_errors`; `crates/tb-vm/tests/debugger.rs::set_next_rejects_loop_gosub_handler_and_pending_operations_atomically` |
|
||||
| Debug-Tasten | F7 bis Cursor, F8 Single Step, F10 Procedure Step | 06 | `crates/tb-ide/tests/debugger.rs::calls_procedure_step_cursor_history_and_restart`; `crates/tb-vm/tests/debugger.rs::gosub_step_over_breakpoint_priority_and_temporary_target_cleanup` |
|
||||
| Options | Display, Set Paths, Right Mouse, Save, Syntax Checking | 02; Wirkung in 01/03/07 | `crates/tb-ide/tests/app.rs::options_apply_persist_across_bases_and_preserve_unsaved_values_on_error`; `crates/tb-ide/tests/editor.rs::line_leave_incomplete_invalid_disabled_and_current_revisions`; `crates/tb-ide/tests/help.rs::right_click_configuration_and_external_link_follow` |
|
||||
| Window | New Window, Arrange All, offene Codefensterliste | 02 | `crates/tb-ide/tests/app.rs::windows_restore_geometry_and_resize_without_document_loss` |
|
||||
| Window | Calls, Debug, Immediate | Fenster 02, Inhalt 06 | `crates/tb-ide/tests/debugger.rs::calls_mouse_inspection_instant_key_delete_and_error_window`; `crates/tb-ide/tests/debugger.rs::immediate_wait_run_transition_watchpoint_and_trace_are_session_owned` |
|
||||
| Window | Help, Output, Project | Fenster 02, Inhalt 07/04/01 | `crates/tb-ide/tests/app.rs::status_and_project_buttons_use_the_keyboard_command_path`; `crates/tb-ide/tests/execution.rs::output_viewports_resize_and_end_preserve_buffer_and_basic_colors`; `crates/tb-ide/tests/help.rs::links_history_resize_scroll_and_focus_use_real_events` |
|
||||
| Window (Designer) | Color Palette, Menu Design Window, Toolbox, Help, Formliste | 05, Hilfe 07 | `crates/tb-ide/tests/designer.rs::toolbox_double_click_tool_drag_grid_and_window_form_selection`; `crates/tb-ide/tests/designer.rs::property_menu_buttons_palette_drag_and_modal_mouse_are_connected`; `crates/tb-ide/tests/help.rs::help_preserves_fullscreen_and_does_not_modify_designer_or_source` |
|
||||
| Help | Index, Contents, Keyboard, Topic/F1, Using Help/Shift+F1, Tutorial, About | 07 | `crates/tb-ide/tests/help.rs::twenty_back_steps_end_of_contents_and_all_entries` |
|
||||
| Menüs | Alt/F11, Mnemonic, Esc, Dialogkennzeichnung „…“, Help rechts | 02 | `crates/tb-ide/tests/app.rs::start_snapshot_and_reference_menus_have_all_commands`; `crates/tb-cli/src/ide_acceptance.rs::every_menu_command_has_native_keyboard_and_mouse_routing` |
|
||||
| Fenster | F6/Ctrl+F6, Shift+F6, Ctrl+F4, Ctrl+F7/F8/F9/F10/F5, Alt+Minus | 02 | `crates/tb-ide/tests/app.rs::windows_restore_geometry_and_resize_without_document_loss` |
|
||||
| Projektfenster | Anfangs rechts, Form/Code-Buttons, Enter | 02 auf 01 | `crates/tb-ide/tests/app.rs::status_and_project_buttons_use_the_keyboard_command_path`; `crates/tb-ide/tests/app.rs::clicking_project_members_and_dialog_choices_transfers_focus_and_applies_values` |
|
||||
| Toolbox/Tools | Check Box, Combo Box, Command Button, Dir List, Drive List, File List, Frame, HScrollBar, Label, List Box, Option Button, Picture Box, Text Box, Timer, VScrollBar; zusätzlich bereits unterstützte Spinvarianten | 05 | `crates/tb-ide/tests/designer.rs::all_metadata_tools_persist_and_preview_matches_runtime_without_events` |
|
||||
| Designgesten | Toolbox-Doppelklick, Aufziehen, Drag, Sizing Handles, Pfeile, Ctrl+Pfeile, Shift+Pfeile, Tab/Shift+Tab, Ctrl+Klick | 05 | `crates/tb-ide/tests/designer.rs::container_multiselect_keyboard_drag_resize_and_undo`; `crates/tb-ide/tests/designer.rs::all_eight_handles_resize_transactionally_and_preserve_identity_after_structure_edits`; `crates/tb-ide/tests/designer.rs::toolbox_double_click_tool_drag_grid_and_window_form_selection` |
|
||||
| Properties Bar | Property/Value-Dropdown, Koordinaten/Größe, F2 Value, F10 Barwechsel, keine Statuszeile | 05 auf 02 | `crates/tb-ide/tests/designer.rs::property_bar_types_readonly_and_no_status_line`; `crates/tb-ide/tests/designer.rs::property_menu_buttons_palette_drag_and_modal_mouse_are_connected` |
|
||||
| Menüdesigner | Caption (&/-), CtlName, Tag, Index, Checked/Enabled/Visible/Separator, Shortcut, Einfügen/Löschen/Ebene/Reihenfolge/Done | 05 | `crates/tb-ide/tests/designer.rs::menu_hierarchy_arrays_shortcuts_and_palette_use_events`; `crates/tb-ide/tests/designer.rs::menu_indent_outdent_rename_and_field_changes_have_one_undo` |
|
||||
| Farbpalette | ForeColor/BackColor, Drag auf Form | 05 | `crates/tb-ide/tests/designer.rs::property_menu_buttons_palette_drag_and_modal_mouse_are_connected` |
|
||||
| Editor | Line-Leave-Prüfung/-Normalisierung, Syntax-Checking-Toggle, DECLARE, DEFtype | 03 | `crates/tb-ide/tests/editor.rs::line_leave_incomplete_invalid_disabled_and_current_revisions`; `crates/tb-ide/tests/editor.rs::external_include_revision_and_project_context_declarations` |
|
||||
| Editor-Tasten | CUA, Einfg, Pos1/Ende, WordStar Ctrl+Q, Ctrl+Y, Bookmarks Ctrl+K,0–3 / Ctrl+Q,0–3, Shift+F2/Ctrl+F2 | 03 | `crates/tb-ide/tests/editor.rs::cua_unicode_overwrite_wordstar_and_shared_undo`; `crates/tb-ide/tests/editor.rs::crlf_navigation_word_boundaries_readonly_and_normalization_keep_views` |
|
||||
| Immediate | PRINT, Zuweisungen, Prozeduraufrufe, ERROR n im Break-Modus | 06 | `crates/tb-vm/tests/debugger.rs::watches_immediate_byref_and_errors_preserve_continuation`; `crates/tb-vm/tests/debugger.rs::immediate_wait_interrupt_nested_error_end_and_run`; `crates/tb-ide/tests/debugger.rs::immediate_wait_run_transition_watchpoint_and_trace_are_session_owned` |
|
||||
| Hilfe | F1/Rechtsklick, Shift+F1, ◄Thema►, Tab/Shift+Tab, Enter, Alt+F1 (20), Ctrl+F1, Esc | 07 | `crates/tb-ide/tests/help.rs::links_history_resize_scroll_and_focus_use_real_events`; `crates/tb-ide/tests/help.rs::right_click_configuration_and_external_link_follow`; `crates/tb-ide/tests/help.rs::twenty_back_steps_end_of_contents_and_all_entries` |
|
||||
| Darstellung | DOS-Farben, Magenta-Titel, Desktopzeichen, Tabweite, klickbare Statuskürzel, Zeile/Spalte | 02 | `crates/tb-ide/tests/app.rs::start_snapshot_and_reference_menus_have_all_commands`; `crates/tb-ide/tests/app.rs::status_and_project_buttons_use_the_keyboard_command_path` |
|
||||
| Start | Begrüßung, Version/Copyright, Untitled-Code/Projekt, keine Easy/Full-Modi | 02, About 07 | `crates/tb-ide/tests/app.rs::start_snapshot_and_reference_menus_have_all_commands`; `crates/tb-ide/tests/help.rs::twenty_back_steps_end_of_contents_and_all_entries` |
|
||||
| Terminal | Dynamische Größe, physisches Minimum 80×25 | 02; Runtime-/Output-Abgrenzung 04 | `crates/tb-ide/tests/app.rs::windows_restore_geometry_and_resize_without_document_loss`; `crates/tb-ide/tests/execution.rs::output_viewports_resize_and_end_preserve_buffer_and_basic_colors`; `crates/tb-cli/src/ide_acceptance.rs::function_keys_conflict_contexts_and_errors_keep_a_single_input_owner` |
|
||||
| Laufzeitparität | Dieselbe TBVM in IDE, CLI und TBC | 04/06; Gesamtnachweis 08 | `crates/tb-cli/src/ide_acceptance.rs::saved_project_ide_source_cli_and_tbc_have_identical_sessions` |
|
||||
@@ -0,0 +1,30 @@
|
||||
## Context
|
||||
|
||||
Die Vorgänger 01–07 besitzen abgegrenzte Fähigkeiten und eigene Szenarien. Bereits vorhandene CLI-/VM-/Forms-Regressionen und Release-Compile-Benchmarks bleiben maßgeblich. Die Referenz enthält mehr Befehle als die acht offenen Phase-5-Checkboxen; die Gesamtübersicht enthält deshalb eine vollständige Zuordnung statt einer erneuten allgemeinen Codeprüfung.
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:** Echte Benutzerwege und ihre Übergänge belegen, Abnahmestand reproduzierbar dokumentieren und Phase 5 nur bei vollständiger Umsetzung schließen.
|
||||
|
||||
**Non-Goals:** Neue Parallelimplementierung fehlender Features, Ersatz aller vorhandenen Tests, vorgezogene vollständige Terminal-/OS-Matrix aus Phase 6 oder pauschale Performanceoptimierung.
|
||||
|
||||
## Decisions
|
||||
|
||||
1. Der Rahmen-Testpfad aus 02 treibt die echte App mit crossterm-Ereignissen und ratatui-TestBackend. Dokumente entstehen für End-to-End-Szenarien durch Eingaben und Dialoge. Unmittelbar vorbereitete VM-Objekte bleiben für fokussierte Unit-Tests nützlich, ersetzen aber keinen Create/Save/Reopen-Nachweis.
|
||||
2. Ein dokumentierter Hauptablauf erstellt ein Projekt mit zwei BAS-Modulen, FRM, Control-Array, Menü und Include, erzeugt Ereigniscode über F12, nutzt Hilfe, startet, setzt Breakpoints, steppt über einen Aufruf, ändert einen Wert im Immediate Window, setzt fort und öffnet das gespeicherte Projekt erneut. Ergänzende kurze Fehlerabläufe prüfen Schreibfehler, externe Änderungen, Compilefehler, Include-Quellorte, kleine Terminals und Shell-Rückkehr. Das vermeidet einen einzigen undiagnostizierbar großen Test.
|
||||
3. Eine Befehlsabdeckungstabelle bindet jeden Eintrag aus der Gesamtübersicht an Aktion, zulässige Modi und mindestens einen ausführbaren Nachweis. Tastatur-, Menü- und Mausäquivalenz wird am gemeinsamen Dispatcher geprüft; konfliktträchtige F-Tasten zusätzlich im vollständigen Ablauf. Nicht implementierte Phase-5-Befehle bleiben offene Befunde ihres zuständigen Feature-Changes, statt hier mit einem zweiten Codepfad kaschiert zu werden.
|
||||
4. Parität verwendet dieselben gespeicherten Quellen, initialen Dateien, COMMAND$, Terminalmaße und deterministischen Ereignis-/Zeitfolgen. Verglichen werden IDE-VM, CLI-Quellcompile und geladenes TBC. STOP/Break und Debug-Nebenwirkungen werden gezielt gesteuert, normale Programmläufe dagegen ohne Debuggeroptionen verglichen.
|
||||
5. Vorhandene Referenzprogramme und Benchmarks werden wiederverwendet; es wird kein fremder Korpus vendort. Der Abschlussbericht nennt Revision, Befehle, konkrete Ergebnisse, Referenzhardware und bekannte Terminalgrenzen. Normale Tests prüfen Cache-Wiederverwendung deterministisch, Release-Messungen die bestehenden Zeitbudgets. Wiederholungen nur bei Änderung oder ungeklärtem Fehler.
|
||||
6. PLAN.md wird erst nach bestandenem Nachweis aktualisiert, einschließlich präziser Bezeichnung der Properties Bar. Die Phase-6-Plattformmatrix bleibt separat; die lokale headless Abnahme wird nicht als vollständiger Emulator-/OS-Nachweis ausgegeben. IDE-Bedienungsseiten aus 07 werden auf die endgültigen Tasten und Abläufe abgeglichen.
|
||||
|
||||
7. Die Exportdialoge aus 02 sind ein eigener vollständiger Phase-5-UI-Nachweis. Der Hauptablauf öffnet beide Make-Dialoge und prüft Zieleingaben, Validierung, Überschreibentscheidung und den erklärten fehlenden Erzeugungsdienst. Kontrollierte Ergebnisrückmeldungen testen Status/Erfolg/Fehler/Abbruch an der vorbereiteten Übergabe, ohne eine native Erzeugung zu behaupten. Der Phase-6-Plan hält echte Standalone-Executables und native Bibliotheken mit Verbraucherprüfung als getrennte offene Aufgaben fest.
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- Synthetische UI-Tests übersehen tatsächliche Tastencodierung → native Eingabe-Eventtypen bis zum Dispatcher einspeisen; reale Plattformmatrix weiter in Phase 6 verfolgen.
|
||||
- Grünes Teilfeature wird mit fertiger IDE verwechselt → Abschluss nur mit allen Vorgängerszenarien und integrierter Befehlsmatrix.
|
||||
- Monolithischer End-to-End-Test ist schwer zu warten → ein lesbarer Hauptablauf plus wenige gezielte Fehlerabläufe und vorhandene modulare Regressionen.
|
||||
|
||||
## Migration Plan
|
||||
|
||||
Keine neuen Dateiformate. Nach vollständiger Verifikation Spezifikationen der Vorgänger und dieses Changes gemäß normalem Workflow synchronisieren/archivieren; PLAN-Checkboxen beziehen sich auf nachgewiesene Fähigkeiten, nicht auf die bloße Existenz der Planungsartefakte.
|
||||
@@ -0,0 +1,29 @@
|
||||
## Why
|
||||
|
||||
Einzelne fertige IDE-Funktionen beweisen noch keinen vollständigen Arbeitsablauf. Phase 5 endet erst, wenn ein Mehrmodul-/Formularprogramm vollständig über die IDE erstellt, gespeichert, debuggt und ausgeführt werden kann.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Durchgängige IDE-Arbeitsabläufe über reale Eingabeereignisse einschließlich Save/Reopen, Forms, Includes, Debugger und Hilfe.
|
||||
- Verbindlicher Abgleich aller Phase-5-Punkte und Referenzbefehle mit den zuständigen Changes und ihren Nachweisen.
|
||||
- CLI-/IDE-Parität, Compile-Budget und Fehler-/Abbruchpfade als gemeinsame Abnahme; vorhandene Regressionen weiterverwenden.
|
||||
- IDE-Bedienungsdokumentation und nachweisgestützte Aktualisierung der Phase-5-Checkboxen in PLAN.md.
|
||||
- Export-Dialoge für native Standalone-Executables und Systembibliotheken vollständig als Phase-5-UI prüfen; tatsächliche Artefakterzeugung und native Verbraucherprüfung bleiben ausdrücklich Phase 6.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `ide-phasenabnahme`: Durchgängige IDE-Arbeitsabläufe über reale Eingabeereignisse einschließlich Save/Reopen, Forms, Includes, Debugger und Hilfe.
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
Keine bestehenden Anforderungen werden ersetzt; die neue IDE-Fähigkeit ergänzt die vorhandenen Laufzeit- und Dateiformatverträge.
|
||||
|
||||
## Impact
|
||||
|
||||
tb-ide-Integrationstests, vorhandene CLI-/VM-/Forms-Tests und Benchmarks, docs/ sowie PLAN.md. Featureimplementierung bleibt jeweils beim verantwortlichen Change; dieser Change schließt Integration und Nachweise.
|
||||
|
||||
**Abhängigkeiten:** [phase-5-01-projekt-und-dokumentmodell](../2026-09-06-phase-5-01-projekt-und-dokumentmodell/proposal.md), [phase-5-02-ide-rahmen](../2026-09-06-phase-5-02-ide-rahmen/proposal.md), [phase-5-03-editor-und-inkrementelle-uebersetzung](../2026-09-06-phase-5-03-editor-und-inkrementelle-uebersetzung/proposal.md), [phase-5-04-ausfuehrung-und-output](../2026-09-06-phase-5-04-ausfuehrung-und-output/proposal.md), [phase-5-05-formular-designer](../2026-09-06-phase-5-05-formular-designer/proposal.md), [phase-5-06-debugger-und-direktfenster](../2026-09-06-phase-5-06-debugger-und-direktfenster/proposal.md), [phase-5-07-hilfesystem](../2026-09-07-phase-5-07-hilfesystem/proposal.md).
|
||||
|
||||
**Gesamtplanung:** [Phase-5-Übersicht](../2026-09-06-phase-5-01-projekt-und-dokumentmodell/phase-5-uebersicht.md). Die Nummern geben eine gültige Umsetzungsreihenfolge an; OpenSpec erzwingt Change-Abhängigkeiten nicht automatisch.
|
||||
@@ -0,0 +1,40 @@
|
||||
## Purpose
|
||||
|
||||
Sichert die vollständige Nutzbarkeit der Phase-5-IDE über zusammenhängende Arbeitsabläufe, gemeinsame Laufzeitsemantik und reproduzierbare Abnahmekriterien.
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Vollständiger IDE-Arbeitsablauf
|
||||
Ein Benutzer SHALL ausschließlich über die IDE ein Projekt mit mindestens zwei BAS-Modulen, einem Formular, einem Control-Array, einem Menü und einem Include erstellen, bearbeiten, speichern, schließen und erneut öffnen können. Danach SHALL dasselbe Projekt mit Ereigniscode ausführbar und mit Breakpoints, Prozedurschritt, Watch und Direktfenster debugbar sein. Kontext-Hilfe SHALL aus Editor und Designer erreichbar sein.
|
||||
|
||||
#### Scenario: Schreiben bis Wiederaufnahme
|
||||
- **WHEN** dieser Arbeitsablauf durch Menüs, Tastatur und Maus durchgeführt wird und während eines Halts ein Wert im Direktfenster geändert wird
|
||||
- **THEN** läuft das Programm mit der Änderung weiter, die gespeicherten Quellen bleiben konsistent und nach erneutem Öffnen sind Projekt, Formularstruktur, Ereigniscode und Startdatei erhalten
|
||||
|
||||
### Requirement: Nachgewiesene Befehlsabdeckung
|
||||
Alle Phase-5-Funktionen und die ihnen zugeordneten Menü-, Tastatur- und Mauswege aus docs/ide-referenz.md SHALL einen zuständigen Change und einen ausführbaren Nachweis besitzen. Ein Test nur des internen Befehls SHALL keinen Nachweis für die tatsächliche Tasten-/Mausverteilung ersetzen. Noch nicht implementierte Phase-5-Aktionen MUST NOT als vollständige Phasenabnahme gelten.
|
||||
|
||||
#### Scenario: Mehrfach belegte Funktionstasten
|
||||
- **WHEN** die Abnahme F2, F4, F10, F11 und F12 in ihren verschiedenen Kontexten einspeist
|
||||
- **THEN** bestätigt sie die jeweils erwartete Aktion und den Ausschluss einer zweiten Zustellung an das BASIC-Programm
|
||||
|
||||
### Requirement: CLI-Parität und robuste Übergänge
|
||||
Gespeicherte Projekte SHALL über IDE, CLI-Quellstart und CLI-Kompilatstart bei gleichen Eingaben, Zeiten, Größen und COMMAND$ dieselben BASIC-Ausgaben, Datenwerte und Fehler liefern, abgesehen von den ausdrücklich spezifizierten IDE-Halten. Speichern, Projektwechsel, Reset, Shell-Rückkehr und Resize SHALL auch nach Fehlern die Dokumente und Terminalbedienbarkeit erhalten.
|
||||
|
||||
#### Scenario: Vergleich derselben Sitzung
|
||||
- **WHEN** ein Forms-/Include-Projekt mit identischer Ereignisfolge über die drei Ausführungswege gestartet wird
|
||||
- **THEN** stimmen Ausgabe, Dateieffekte und Laufzeitresultat überein und ein anschließender IDE-Neustart enthält keinen Zustand des vorherigen Laufs
|
||||
|
||||
### Requirement: Leistungs- und Dokumentationsabnahme
|
||||
Phase 5 SHALL erst als umgesetzt dokumentiert werden, wenn die Change-Szenarien, die relevanten bisherigen Regressionen und das bestehende Release-Compile-Budget nachgewiesen sind. PLAN.md und die IDE-Hilfe SHALL den verifizierten Stand wiedergeben. Prüfberichte SHALL konkrete Befehle, Ergebnisse, Revision und verbleibende Grenzen nennen; vollständige OpenSpec-Artefakte allein SHALL nicht als Implementierungsnachweis gelten.
|
||||
|
||||
#### Scenario: Abschlussbericht
|
||||
- **WHEN** Phase 5 abgenommen wird
|
||||
- **THEN** verweisen alle Phase-5-Checkboxen auf bestandene Nachweise und der Bericht unterscheidet die lokale headless Abnahme von der weiterhin separat geplanten Plattformmatrix aus Phase 6
|
||||
|
||||
### Requirement: Export-UI als eigene Phasenleistung
|
||||
Die Phase-5-Abnahme SHALL die vollständige Bedienung von Make EXE File und Make Library einschließlich Zielsystem/-architektur, Ausgabepfad, Validierung, Überschreibentscheidung sowie Status-/Fehler-/Abbruchdarstellung prüfen. Dabei SHALL die noch nicht verfügbare native Erzeugung aus Phase 6 ausdrücklich erkennbar sein. Die Abnahme SHALL Oberflächennachweise von der späteren tatsächlichen Erzeugung eigenständiger nativer Executables und nativer Systembibliotheken unterscheiden.
|
||||
|
||||
#### Scenario: Exportvorbereitung ohne Scheinerfolg
|
||||
- **WHEN** beide Exportdialoge im durchgängigen IDE-Ablauf mit gültigen und ungültigen Angaben bedient werden
|
||||
- **THEN** funktionieren Eingabe, Validierung und Rückkehr zum Projekt, die Erzeugungsaktion nennt die Phase-6-Abhängigkeit und weder eine falsche Erfolgsmeldung noch eine als natives Artefakt ausgegebene TBC-Datei entsteht
|
||||
@@ -0,0 +1,21 @@
|
||||
## 1. Vollständiger Arbeitsablauf
|
||||
|
||||
- [x] 1.1 Den headless App-Testpfad aus 02 für Datei-/Dialogaktionen und deterministische VM-Ereignisse verwenden; ein Einstiegstest startet die echte App und erstellt ein leeres Projekt ohne vorbereitete Dokumentobjekte.
|
||||
- [x] 1.2 Den Hauptablauf mit zwei BAS-Modulen, FRM, Control-Array, Menü, Include, F12-Ereigniscode und Startdatei über UI-Ereignisse aufbauen; Save/Close/Reopen muss den gleichen Projekt-/Formularstand ergeben.
|
||||
- [x] 1.3 Den Ablauf um Start, Include-Breakpoint, Prozedurschritt, Watch, Immediate-Wertänderung und Continue ergänzen; Sollausgabe und Variablenwerte belegen die erwartete Wirkung.
|
||||
- [x] 1.4 F1 aus Editor und Designer sowie Tab/Enter/Alt+F1 in denselben Ablauf aufnehmen; Hilfeziel und wiederhergestellter Fokus müssen stimmen.
|
||||
|
||||
## 2. Grenzfälle und vollständige Bedienung
|
||||
|
||||
- [x] 2.1 Die gesamte Befehlsmatrix der Phase-5-Übersicht mit konkreten Tests verknüpfen und auf fehlende Einträge prüfen; alle Phase-5-Aktionen müssen im zulässigen Kontext mehr als einen Platzhaltereffekt besitzen.
|
||||
- [x] 2.2 Mehrfachbelegungen von F2/F4/F10/F11/F12 sowie Tastatur-/Menü-/Mausäquivalenz über native Eingabeevents prüfen; kein Event darf zugleich als IDE-Aktion und BASIC-Eingabe wirksam werden.
|
||||
- [x] 2.3 Kurze Fehlerabläufe für Teilspeichern, externe Änderung, Compilefehler, Pause beim Eingabewarten, RUN-Zielfehler, Shell-Rückkehr und Shrink/Resize hinzufügen; Dokumenterhalt und anschließende Bedienbarkeit müssen belegt sein.
|
||||
|
||||
- [x] 2.4 Beide nativen Exportdialoge vollständig über App-Ereignisse prüfen; gültige/ungültige Ziele, Überschreibentscheidung und kontrollierte Status-/Fehlerrückmeldungen funktionieren, während der Phase-5-Produktionspfad die fehlende Erzeugung erklärt und keine native Datei vortäuscht.
|
||||
|
||||
## 3. Parität, Leistung und Abschluss
|
||||
|
||||
- [x] 3.1 Dasselbe gespeicherte Projekt als IDE-Lauf, CLI-Quelllauf und TBC-Lauf mit identischem Hostskript vergleichen; Ausgabe, Anfangszustand, Dateieffekte und Fehler müssen bis auf dokumentierte IDE-Halte übereinstimmen.
|
||||
- [x] 3.2 Die vorhandenen relevanten Workspace-Regressionen und Release-Compile-Benchmarks einmal auf dem finalen Stand ausführen; Ergebnisse, Referenzhardware, Profil, Größen und Zeitgrenzen in verification.md festhalten.
|
||||
- [x] 3.3 Die endgültige IDE-Bedienung mit Keyboard/Tutorial/Hilfe abgleichen und PLAN.md ausschließlich anhand bestandener Nachweise aktualisieren; die Zuordnung jeder Phase-5-Checkbox und die separat offene Phase-6-Plattformmatrix sind im Abschlussbericht prüfbar.
|
||||
- [x] 3.4 Alle acht Changes zusammen gegen die Hauptspezifikation und Befehlsmatrix verifizieren; offene Befunde an ihrem zuständigen Change beheben und den betroffenen Nachweis erneut ausführen, bis keine Phase-5-Befunde übrig sind.
|
||||
@@ -0,0 +1,165 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user