Files
TerminalBasic/openspec/changes/archive/2026-09-07-phase-5-07-hilfesystem/verification.md

7.5 KiB

Verification Report: phase-5-07-hilfesystem

Stand: 2026-09-07. Proposal, Design, neun Aufgaben sowie vier Anforderungen mit sechs Szenarien wurden gegen den aktuellen Code und ausführbare Tests geprüft.

Ergebnis

Dimension Ergebnis
Completeness 9/9 Aufgaben; 4/4 Anforderungen umgesetzt
Correctness 6/6 Szenarien zugeordnet und geprüft
Coherence Eingebettete docs als einzige Textquelle; vorhandene App-, Fenster-, Designer- und Renderingpfade
Offene Befunde 0 CRITICAL, 0 WARNING, 0 SUGGESTION

Anforderungen und Szenarien

Implementierung: crates/tb-ide/src/help.rs, Dispatcher in app.rs, Renderaufruf in render.rs, Property-Kontext in designer.rs. Neue Nachweise: crates/tb-ide/tests/help.rs.

Requirement / Scenario Implementierung und Nachweis
Mitgelieferte Dokumente / Start außerhalb des Repositorys DOCUMENTS bindet elf aktuelle docs-Dateien und den verlinkten PLAN direkt per include_str! ein. Catalog erzeugt Index und Contents aus diesen Seiten. help_works_from_a_directory_without_checkout startet den Testprozess in einem temporären Verzeichnis ohne docs; offline_help_child öffnet dort dieselbe App, alle Hilfe-Einstiege sowie Sprach-, Bibliotheks-, Forms-, IDE-Referenz und Tutorial mit TestBackend. Der normale tb-Einstieg benutzt diese App unabhängig vom Arbeitsverzeichnis.
Markdown / Schmales Hilfefenster Page::parse verarbeitet CommonMark einschließlich Tabellen mit pulldown-cmark; layout berechnet Fließtextzeilen anhand der Zellbreite. Code und Tabellen behalten ihre vollständigen Zeichen und sind horizontal scrollbar. Position speichert Seite, Block, Zeichenoffset und Linkfokus. markdown_blocks_escapes_links_and_unicode_layout prüft Listen, Formatierung, Escapes, Links, Unicode und verlustfreie Blockprojektion bei vier Breiten. code_and_tables_remain_reachable_after_resize_and_horizontal_scroll und links_history_resize_scroll_and_focus_use_real_events prüfen schmale TestBackend-Fenster, echte Scrolltasten und Resize bei erhaltenem Leseanker und Linkfokus.
Kontextsensitive Themenwahl / Property und BASIC-Funktion token_at, normalize, Catalog::search, help_context und design_help_context verbinden BASIC-Tokens samt Typsuffix mit Dokumentabschnitten und Designerklasse/-eigenschaft. command_target bildet konkrete Befehls-IDs ab. context_functions_properties_commands_and_unknown_queries prüft F1 auf lEfT$, Form.Caption im aktiven Property-Wertfeld, den fokussierten Save-Project-Menübefehl, Mehrdeutigkeit und unbekanntes Suchwort. every_command_and_forms_alias_resolves_and_invalid_alias_fails prüft alle Menübefehle beider Modi und alle Properties der 19 Forms-Klassen.
Links und Verlauf / Rücksprung mit Leseposition Help::visit, follow, back, focus_link, help_key halten Navigation und Fenstersitzung zusammen. links_history_resize_scroll_and_focus_use_real_events folgt nach Scrollen per Enter einem Link und stellt mit Alt+F1 exakt Seite, Offset und Linkfokus wieder her. Esc restauriert das vorherige Fenster; help_preserves_fullscreen_and_does_not_modify_designer_or_source prüft zusätzlich Output-Vollbild, Designerzustand und Suchergebnis-Rücksprünge.
Links und Verlauf / Grenze des Verlaufs Help::visit hält maximal 20 Rücksprungzustände. twenty_back_steps_end_of_contents_and_all_entries führt 25 Wechsel und anschließend die letzten 20 Rücksprünge aus. Weiteres Zurück verändert keinen Zustand und zeigt den Grenzhinweis. Ctrl+F1 folgt der Contents-Dateireihenfolge und bleibt am Ende mit Hinweis stehen.
Hilfe-Einstiege / Tutorial folgen Alle sieben Help-Einstiege sind angebunden; About zeigt die gebaute Paketversion und Autoren. twenty_back_steps_end_of_contents_and_all_entries bedient Menüs und Shortcuts. docs/tutorial.md wurde gegen New Project/Form, Toolbox-Platzierung, Caption/F2, F12-Ereignisauswahl, Startdatei, F9/F8/F5 und die vorhandenen Designer-/Debugger-/Ausführungstests abgeglichen. Alle Tutorialverweise werden durch Catalog::validate geprüft. Der zusätzliche durchgehende Tutorial-/Designer-Abnahmelauf bleibt gemäß Aufgabe 3.3 in Change 08.

Weitere Vertragsprüfungen

  • catalog_links_and_missing_targets_are_checked prüft sämtliche internen Kataloglinks und Überschriftenanker. Absichtlich fehlende Dateien, Anker, ungültige Prozentkodierungen und Pfade außerhalb des Katalogs schlagen fehl. Doppelte Überschriften einschließlich Namenskollisionen erhalten eindeutige Anker.
  • Kontextaliasse werden durch dieselbe Zielauflösung geprüft; ein absichtlich falscher Befehlsanker erzeugt einen Fehler. Klasse und Property stammen aus der vorhandenen Forms-Metadatenquelle, die Texte weiterhin aus docs.
  • right_click_configuration_and_external_link_follow prüft den Optionsschalter, sichtbare externe URLs und Enter auf einem externen Ziel. Es erfolgt kein Shell-Auftrag; die Hilfe besitzt keinen Datei-, Prozess- oder Netzwerkpfad. Die bestehende App-Regression belegt weiterhin Rechtsklick-Zustellung an ein laufendes BASIC-Programm mit Output-Fokus.
  • Index sortiert Themen und Abschnitte alphabetisch, Contents bildet die Dokument-/Überschriftenhierarchie ab. Suche ohne Treffer erhält das Suchwort und bietet Index/Contents an; Mehrdeutigkeit erzeugt eine bedienbare Linkliste.
  • docs/hilfe.md, docs/tastatur.md und docs/tutorial.md sind normale eingebettete Markdown-Seiten. Es gibt weder eine zweite Referenzsammlung noch externe Renderer. Die Build-Abhängigkeit pulldown-cmark 0.13.4 wurde nach Prüfung der CommonMark-/Tabellen-API und MIT-Lizenz ohne Default-Features aufgenommen. Darstellungsbreiten und Fenster verwenden vorhandene Bibliotheken.

Behobene Befunde

  • Frühes Rechtsklick-Routing fing anfangs Programmmauseingaben ab. Kontext-Hilfe respektiert jetzt den laufenden Output-Fokus; die bisherige App-Regression besteht.
  • Hilfe aus Output-Vollbild wurde vom Vollbild verdeckt. Öffnen und Schließen sichern und restaurieren nun auch diesen Fokuszustand.
  • Allgemeine Menügruppen waren für einzelne Befehle zu ungenau. Eine exhaustive Zuordnung der konkreten Befehls-IDs verweist auf die jeweiligen Bedienabschnitte; der Katalogtest sichert die Ziele ab.
  • Einfache Überschriftenzähler konnten bei einem bereits vorhandenen Suffix kollidieren. Eine Menge der vergebenen Anker verhindert solche Kollisionen.
  • Benachbarte Inline-Spans gleichen Stils werden zusammengefasst, damit kombinierende Unicode-Zeichen bei der Terminaldarstellung zusammenbleiben.
  • Die bisherige Phase-07-Platzhalterdarstellung und die vollständig überholte Feature-Phasen-Sperre wurden entfernt. Hilfe und Bedienungsübersicht zeigen den implementierten Stand; die native Exporterzeugung bleibt Phase 6.

Abschlussprüfungen

  • cargo test -p tb-ide: 79 Tests bestanden, keine Fehler oder Ignore-Fälle; zusätzlich ein erfolgreicher Offline-Kindprozess mit derselben Hilfe-App. Enthalten sind elf Hilfetests sowie alle bestehenden App-, Dokument-, Editor-, Designer-, Debugger- und Ausführungstests.
  • cargo clippy --workspace --all-targets -- -D warnings: bestanden.
  • cargo fmt --all -- --check: bestanden.
  • git diff --check: bestanden.
  • openspec validate --all --strict: 23/23 gültig. Bestehende INFO-Hinweise zu langen Anforderungstexten sind keine Validierungsfehler.

Keine Prüfdimension des Changes wurde ausgelassen. Der zusätzliche Gesamtweg in Change 08 gehört wie geplant zur späteren Phasenabnahme. Es bestehen keine offenen Befunde; der Change ist zur Synchronisierung und Archivierung bereit.