Spezifikationsabgleich und Regressionsnachweise abschließen
This commit is contained in:
@@ -4,6 +4,13 @@ Geprüfter Code: `19804e0e2de9eb5a8b0ef256b5be76c741560e07` in TerminalBasic. De
|
||||
|
||||
Die Implementierung deckt breite Grundpfade ab, erfüllt den gesamten Vertrag aber nicht. **25 Befunde**: 10 mit hoher, 12 mit mittlerer Priorität, 2 Dokumentationsabweichungen und 1 Vertragsklärung. Die Priorität bewertet die Auswirkung, nicht den Aufwand. Befunde können mehrere Requirements betreffen.
|
||||
|
||||
## Abschließender Abgleich vom 06.09.2026
|
||||
|
||||
Alle F01–F25 sind im [separaten Abschlussreport](2026-09-06-openspec-abschlussreview.md)
|
||||
mit aktuellen Regressions- bzw. Vertragsnachweisen abgeglichen. Dieser Bericht
|
||||
und seine historischen Fundstellen dokumentieren weiterhin den Ausgangsstand;
|
||||
der Inventartest liegt inzwischen unter `crates/tb-vm/tests/inventar.rs`.
|
||||
|
||||
## Umsetzungsstand: Ereigniszustellung und Hostgrenzen
|
||||
|
||||
F04, F05, F06, F07, F08, F18 und F20 sind im archivierten Change
|
||||
@@ -237,7 +244,7 @@ Alle Eigenschaften/Ereignisse aus der Klassentabelle werden im Inventartest paus
|
||||
|
||||
Beleg: [crates/tb-frontend/tests/inventar.rs:206](../../crates/tb-frontend/tests/inventar.rs#L206). Vertrag: [openspec/specs/sprachinventar/spec.md:12](../../openspec/specs/sprachinventar/spec.md#L12), [openspec/specs/sprachinventar/spec.md:56](../../openspec/specs/sprachinventar/spec.md#L56), [openspec/specs/forms-objektmodell/spec.md:106](../../openspec/specs/forms-objektmodell/spec.md#L106).
|
||||
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
|
||||
### F22 — Der Korpus deckt die verlangten Kombinationen nicht ab (mittel)
|
||||
|
||||
@@ -245,7 +252,7 @@ traps.bas prüft STOP nur für TIMER, nicht für KEY und UEVENT; formular.frm ha
|
||||
|
||||
Beleg: [tests/compat/traps.bas:1](../../tests/compat/traps.bas#L1). Vertrag: [openspec/specs/kompat-testkorpus/spec.md:114](../../openspec/specs/kompat-testkorpus/spec.md#L114), [openspec/specs/kompat-testkorpus/spec.md:132](../../openspec/specs/kompat-testkorpus/spec.md#L132), [openspec/specs/kompat-testkorpus/spec.md:149](../../openspec/specs/kompat-testkorpus/spec.md#L149).
|
||||
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
|
||||
### F23 — Die pauschale Grafik-Abweisung ist überholt (Dokumentation)
|
||||
|
||||
@@ -253,7 +260,7 @@ sprach-frontend nennt Grafik-Anweisungen pauschal als Non-Features. LINE, PAINT,
|
||||
|
||||
Beleg: [docs/sprachreferenz.md:526](../../docs/sprachreferenz.md#L526). Vertrag: [openspec/specs/sprach-frontend/spec.md:83](../../openspec/specs/sprach-frontend/spec.md#L83).
|
||||
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
|
||||
### F24 — Container- und Opcode-Beschreibung sind nicht aktuell (Dokumentation)
|
||||
|
||||
@@ -269,7 +276,7 @@ write_text gibt unveränderte gelesene Dateien bytegleich zurück, einschließli
|
||||
|
||||
Beleg: [crates/tb-ui/src/frm.rs:348](../../crates/tb-ui/src/frm.rs#L348). Vertrag: [openspec/specs/forms-dateiformat/spec.md:31](../../openspec/specs/forms-dateiformat/spec.md#L31).
|
||||
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/proposal.md).
|
||||
|
||||
## Gebündelte Changes und Reihenfolge
|
||||
|
||||
@@ -280,7 +287,7 @@ Umsetzung: [spezifikationsabgleich-und-regressionsnachweise](../../openspec/chan
|
||||
| 3 | [forms-zustand-und-bedienung](../../openspec/changes/archive/2026-09-05-forms-zustand-und-bedienung/proposal.md) | F12, F13 | Nach Ereigniszustellung |
|
||||
| 4 | [projektmodule-und-kompilat](../../openspec/changes/archive/2026-09-05-projektmodule-und-kompilat/proposal.md) | F09, F10, F11, F24 | Eigenständig; bei gemeinsamen Dateien sequenziell integrieren |
|
||||
| 5 | [laufzeit-eingabe-und-systemstatus](../../openspec/changes/archive/2026-09-06-laufzeit-eingabe-und-systemstatus/proposal.md) | F14, F15, F16, F17, F19 | Eigenständig; bei gemeinsamen Dateien sequenziell integrieren |
|
||||
| 6 | [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/spezifikationsabgleich-und-regressionsnachweise/proposal.md) | F21, F22, F23, F25 | Abschließende Gesamtabnahme nach den fünf Korrektur-Changes |
|
||||
| 6 | [spezifikationsabgleich-und-regressionsnachweise](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/proposal.md) | F21, F22, F23, F25 | Abschließende Gesamtabnahme nach den fünf Korrektur-Changes |
|
||||
|
||||
## Vollständige Requirement-Matrix
|
||||
|
||||
|
||||
136
docs/reviews/2026-09-06-openspec-abschlussreview.md
Normal file
136
docs/reviews/2026-09-06-openspec-abschlussreview.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# OpenSpec-Abschlussabgleich vom 06.09.2026
|
||||
|
||||
**Aktueller Nachprüfungsstand:** V01–V03 sind vollständig behoben. Der
|
||||
[abschließende Change-Review](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/review.md)
|
||||
verzeichnet keine offenen Befunde; der erste Review bleibt separat erhalten.
|
||||
|
||||
Grundlage: Arbeitsbaum auf `c8b92f06190d77714865e0018b090348f372d77e`, nach
|
||||
Integration der fünf Korrektur-Changes und Umsetzung von
|
||||
`spezifikationsabgleich-und-regressionsnachweise`. Der
|
||||
[Review vom 05.09.2026](2026-09-05-openspec-code-review.md) bleibt die historische
|
||||
Bestandsaufnahme. Dieser Bericht gleicht alle dortigen F01–F25 erneut ab.
|
||||
|
||||
**Ergebnis: F01–F25 sind durch Umsetzung oder präzisierten Vertrag geschlossen.**
|
||||
Die unten genannten Regressionen bestehen im aktuellen Arbeitsbaum. Die vier
|
||||
Delta-Specs wurden am 06.09.2026 in die Hauptspecs synchronisiert und der
|
||||
Change wurde anschließend archiviert.
|
||||
|
||||
## Befundmatrix
|
||||
|
||||
| ID | Ergebnis und heutiger Nachweis |
|
||||
|---|---|
|
||||
| F01 | ISAM-OPEN verwendet den gemeinsamen Writer einer laufenden Transaktion. [CLI-Test](../../crates/tb-cli/tests/compat.rs) `tbc_isam_open_in_transaktion_hat_eine_harte_frist`; [isamopen.bas](../../tests/compat/isamopen.bas), einschließlich Prozessfrist. |
|
||||
| F02 | SAVEPOINT/ROLLBACK stellt Satz-, Index- und Tabellenstruktur wieder her. [ISAM-Tests](../../crates/tb-runtime/src/isam/tests.rs) `savepoints_nehmen_index_und_tabellenstrukturen_zurueck`, `neue_tabellen_und_aktive_indizes_verschwinden_bei_ruecknahme`; [isamstruktur.bas](../../tests/compat/isamstruktur.bas). |
|
||||
| F03 | FREEFILE und normale/ISAM-Bindungen teilen den Nummernraum. [isamdateinummern.bas](../../tests/compat/isamdateinummern.bas) prüft Lücken, Wiederbelegung, CLOSE und RESET. |
|
||||
| F04 | Beide Signale erreichen ihre registrierten Traps. [events.rs](../../crates/tb-vm/tests/events.rs) `beide_signale_werden_zugestellt_und_beginnen_in_quellreihenfolge`. |
|
||||
| F05 | KEY STOP erhält lesbare Eingabe und merkt den Handler einmal. [events.rs](../../crates/tb-vm/tests/events.rs) `key_on_off_stop_gelten_fuer_alle_konsoleneingaben`; zusätzlich F1 in [trap-masken.bas](../../tests/compat/trap-masken.bas). |
|
||||
| F06 | Eingaben und Handler behalten ihre Reihenfolge. [events.rs](../../crates/tb-vm/tests/events.rs) `taste_maus_und_trap_behalten_die_annahmereihenfolge`, `fokus_handler_laufen_geordnet_bis_zur_rueckkehr`, `doevents_verhindert_rekursion_derselben_forms_prozedur`. |
|
||||
| F07 | Das offene Menü sperrt Traps und Forms-Timer auch bei SLEEP und Eingabe. [events.rs](../../crates/tb-vm/tests/events.rs) `offenes_menu_sperrt_traps_und_wartende_forms_timer_an_allen_zustellpunkten`, `review_menu_schliessen_stellt_pending_trap_vor_erneutem_warten_zu`. |
|
||||
| F08 | Zeit und Warten kommen vom Host. [events.rs](../../crates/tb-vm/tests/events.rs) `ohne_zeitbedarf_keine_uhrabfrage_und_keine_mausansammlung`, `sleep_folgt_nur_der_hostfrist_und_forms_timer_beendet_es`; [Ausführungsmodell](../tbvm-design.md). |
|
||||
| F09 | Controls werden im jeweiligen Formular aufgelöst. [project.rs](../../crates/tb-vm/tests/project.rs) `zwei_formulare_mit_gleichen_controls_und_arrays_laufen_aus_dem_kompilat`; der neue FRM-Test erhält zusätzlich unterschiedliche Eltern von Elementen desselben Arrays. |
|
||||
| F10 | Quellen, Module, Fehlerorte und Debuggerziele bleiben getrennt. [project.rs](../../crates/tb-vm/tests/project.rs) `module_includes_erl_breakpoints_und_inspektion_behalten_ihren_ursprung`, `initialisierungen_def_fn_und_modulhandler_haben_eigene_quellorte`; [CLI-Quellorttest](../../crates/tb-cli/tests/project.rs). |
|
||||
| F11 | TBC 4 erhält Forms-Anfangswerte und Designarrays. [CLI-Test](../../crates/tb-cli/tests/project.rs) `projekt_und_formular_laufen_nach_entfernen_saemtlicher_quellen`; [VM-Projekttest](../../crates/tb-vm/tests/project.rs) für zwei Formulare. |
|
||||
| F12 | ListIndex = −1 und Auswahländerungen sind konsistent. [Forms-Tests](../../crates/tb-ui/src/forms.rs) `listenauswahl_bleibt_beim_einfuegen_und_entfernen_konsistent`, `sorted_wechsel_erhaelt_auch_die_auswahl_zwischen_duplikaten`. |
|
||||
| F13 | Timerphasen beginnen bei ihrer Aktivierung. [Forms-Tests](../../crates/tb-ui/src/forms.rs) `timerarrays_holen_nur_aktive_zeit_nach_und_sortieren_nach_name_und_index`; [events.rs](../../crates/tb-vm/tests/events.rs) `spaete_timeraktivierung_nutzt_hostzeit_auch_ueber_control_parameter`, `intervallaenderung_im_handler_verwirft_bereits_faellige_altintervalle`. |
|
||||
| F14 | INPUT # bewahrt Feldfortschritt und unterscheidet leeres von fehlendem Feld. [vm.rs](../../crates/tb-vm/tests/vm.rs) `input_datei_bewahrt_felder_und_unterscheidet_leer_von_fehlend`. |
|
||||
| F15 | INPUT$ zählt Zeichen, erhält Sondertastenreste und meldet vorzeitiges EOF. [vm.rs](../../crates/tb-vm/tests/vm.rs) `input_datei_alle_lesearten_teilen_utf8_cursor_und_seek`, `input_s_teilt_sondertasten_und_bewahrt_rest_fuer_inkey`, `unicode_puffergrenzen_und_binaere_records_bleiben_getrennt`. |
|
||||
| F16 | Alle fünf CV-Funktionen verlangen exakte Bytezeichenbreite. [vm.rs](../../crates/tb-vm/tests/vm.rs) `alle_mk_cv_paare_verlangen_exakte_bytezeichenbreite`. |
|
||||
| F17 | Fehlende Datei und fehlender Elternpfad ergeben unterschiedliche Fehler. [vm.rs](../../crates/tb-vm/tests/vm.rs) `datei_und_elternpfadfehler_sind_am_sprachzugang_unterscheidbar`. |
|
||||
| F18 | BackTab wird als Tab mit Shift weitergegeben. Terminal-Mapper `backtab_ist_tab_mit_shift_auch_ohne_modifier`; [formular-access-backtab.frm](../../tests/compat/formular-access-backtab.frm) prüft den BASIC-Fokuspfad. |
|
||||
| F19 | TIMEZONEKNOWN liefert den gegenwärtigen Status, einschließlich Ausfall und Erholung. [vm.rs](../../crates/tb-vm/tests/vm.rs) `timezoneknown_hat_integer_signatur_und_zeigt_aktuellen_status`; [Runtime-Test](../../crates/tb-runtime/src/builtins.rs) `zonenquelle_ausfall_und_erholung_gelten_fuer_alle_zeitfunktionen`. |
|
||||
| F20 | VM-/Forms-Einbettung benötigt kein Terminalbackend. Separater Resolver [tests/terminalfrei](../../tests/terminalfrei/Cargo.toml), erneut ohne GUI ausgeführt: `Terminalfreier FRM-/VM-Lauf: KM`. |
|
||||
| F21 | Alle 845 Inventareinträge werden mit kompilierten BASIC-Proben bis HIR/Runtime-Ziel geprüft. [inventar.rs](../../crates/tb-cli/tests/inventar.rs) vergleicht unabhängige Sollziele mit der konkreten Absenkung und erkennt falsche Statuswerte, Unsupported, fehlende/vertauschte Builtin-Bindungen, entfernte Absenkung und falsche Forms-Member/Typselektoren; [events.rs](../../crates/tb-vm/tests/events.rs) führt alle 133 registrierten Ereignisse bis zum BASIC-Handler und erkennt eine künstlich entfernte Ereignisbindung. |
|
||||
| F22 | [trap-masken.bas](../../tests/compat/trap-masken.bas) ergänzt KEY/UEVENT ON/OFF/STOP und EVENT OFF; [formular-access-backtab.frm](../../tests/compat/formular-access-backtab.frm) ergänzt gewöhnlichen Control-Access-Key und Rückwärtstab mit `Click;LostFocus;GotFocus;`. Der Harness prüft jedes Programm zweimal. Sieben öffentliche Programme bestehen den gesonderten Bediennachweis unten. |
|
||||
| F23 | SCREEN 0–13, LINE, PAINT und VIEW sind ausdrücklich erlaubt; übrige Non-Features bleiben ausgeschlossen. [Sprachreferenz](../sprachreferenz.md), [Delta](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/specs/sprach-frontend/spec.md); [CLI-Test](../../crates/tb-cli/tests/project.rs) prüft alle 14 SCREEN-Modi und benannte Abweisungen. |
|
||||
| F24 | [VM-Design](../tbvm-design.md) und [Hauptspec](../../openspec/specs/bytecode-kompilat/spec.md) beschreiben TBC 4 mit neun Abschnitten und dem aktuellen Opcode-Vertrag. Loader-Rundlauf, Versionsablehnung und beschädigte Referenzen sind in [project.rs](../../crates/tb-vm/tests/project.rs) bzw. den CLI-Projekttests abgesichert. Dieser Change führt keine neue Formatversion ein. |
|
||||
| F25 | [Dateiformate](../dateiformate.md) und [Delta](../../openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/specs/forms-dateiformat/spec.md) unterscheiden Originalerhalt und kanonisches Schreiben. [FRM-Tests](../../crates/tb-ui/src/frm.rs) prüfen CRLF und explizite Defaults bytegleich sowie Default-Auslassung nach Änderung. Index 0 bleibt als Array-Strukturangabe erhalten. |
|
||||
|
||||
## Zusätzlich im Abgleich gefundene und behobene Ursachen
|
||||
|
||||
- Die Signatur für die SHELL-Funktion fehlte; IRR erwartete die Argumente in
|
||||
umgekehrter Reihenfolge. Eine VM-Probe prüft jetzt SHELL → Exitcode 7 und
|
||||
IRR für −100/+110 → 0,1, neben den 845 Kompilierproben.
|
||||
- Koordinatenformen von CIRCLE/WINDOW und IOCTL # brachen vor der benannten
|
||||
Non-Feature-Diagnose ab. Parser und Semantik nennen nun das ausgeschlossene
|
||||
Element; POKE und PEEK sind ausdrücklich per CLI geprüft.
|
||||
- Form_KeyPress/KeyUp, Form-Fokus/Paint/Resize, Label.Change,
|
||||
PictureBox.Paint, ComboBox.DropDown und die getrennten Dateilistenereignisse
|
||||
hatten fehlende oder falsche Quellen. Die 133 Ereignisproben verwenden
|
||||
Tastatur, Maus, Hostzeit oder echte Modell-/BASIC-Operationen statt direkter
|
||||
Ereignisqueue-Einträge.
|
||||
- Der VM-Ereignisdispatch setzte auch ohne Handler den aktiven Control-Zustand.
|
||||
Er ignoriert jetzt fehlende Bindungen ohne diese Nebenwirkung; reine
|
||||
Zustandsmeldungen und nicht fokussierbare Objekte übernehmen keinen Fokus.
|
||||
- Binäre FRM-Records enthielten auch bei Einzelcontrols einen Index-Slot.
|
||||
Der Import berücksichtigt das tatsächliche Array-Flag. Eingebettete Includes
|
||||
werden als Herkunftskommentar ausgegeben, nicht ein zweites Mal geöffnet.
|
||||
- Arrayelemente unter unterschiedlichen Containern behalten ihre Eltern über
|
||||
vorhandene PARENT-Anfangswerte. Die Suche bleibt auf das jeweilige Formular
|
||||
begrenzt; der bestehende Mehrformular-/TBC-Test schützt diese Grenze.
|
||||
- Kanonisches Weglassen von Index 0 hätte ein einzelnes Arrayelement in ein
|
||||
Einzelcontrol verwandelt. Der Writer erhält diese Strukturangabe; der
|
||||
präzisierte Delta-Vertrag und der Rundlauftest benennen sie ausdrücklich.
|
||||
|
||||
## Öffentlicher Fremdprogrammbestand
|
||||
|
||||
Bestand: `cout/vbdos`, Revision
|
||||
`1cdd2b32b829fe1721d0b6aecc433abc47a96fb6`. Der Test erstellt für jeden Lauf
|
||||
per `git archive` eine neue Kopie dieses Commits, baut den unveränderten
|
||||
Programmeinstieg mit `tbc build`, lädt das Kompilat und bedient die VM über
|
||||
CaptureHost bei 100×30 Zellen. Die lokale Prüfbasis war
|
||||
`/tmp/terminalbasic-vbdos-evidence`. Kein Emulator oder interaktives Terminal.
|
||||
|
||||
| Einstieg | Deklarierte Eingabe | Geprüftes Ergebnis, in beiden Läufen |
|
||||
|---|---|---|
|
||||
| `graphics/graphics.mak` | Alt+X | Formular entladen |
|
||||
| `microsoft/check.mak` | Alt+F, X | Menü zunächst sichtbar, danach geschlossen und Formular entladen |
|
||||
| `microsoft/qlbview.mak` | Esc | Cancel-Pfad entlädt das Formular |
|
||||
| `microsoft/seek.mak` | Alt+X | Formular entladen |
|
||||
| `microsoft/spindemo.mak` | Tab, Tab, Pfeil auf | VSpin_Custom ändert Text1 von `0` auf ` 1`; Bildschirmänderung durch Pfeiltaste |
|
||||
| `microsoft/notepad.frm` | Alt+F, X, N im Speicherdialog | Menü öffnet, Save-Dialog wird angezeigt, N beantwortet ihn und Formular wird entladen |
|
||||
| `misc/mentors/mentors.frm` | Alt+F, X | Menü zunächst sichtbar, danach geschlossen und Formular entladen |
|
||||
|
||||
Alle sieben Programme: diagnosefreie Übersetzung und zwei gleiche Folgen von
|
||||
sichtbaren Formular-/Menüzuständen und Bildschirm-Snapshots. Keine fehlende
|
||||
externe Voraussetzung und keine angepassten Fremdprogrammquellen. Das belegt
|
||||
diese sieben Einstiege und Sequenzen, keine vollständige VBDOS-Kompatibilität.
|
||||
|
||||
Reproduktion mit vorhandenem Checkout der genannten Revision:
|
||||
|
||||
```sh
|
||||
TB_VBDOS_REPO=/pfad/zu/vbdos cargo test -p tb-cli --test foreign oeffentliche -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Der [Test](../../crates/tb-cli/tests/foreign.rs) ist im normalen Workspace-Lauf
|
||||
explizit ignoriert, weil der öffentliche Checkout keine Repository-Abhängigkeit
|
||||
ist. Der gesonderte Aufruf oben wurde für diese Abnahme erfolgreich ausgeführt;
|
||||
ohne Umgebungsvariable oder bei abweichender Revision schlägt er fehl.
|
||||
|
||||
## Abnahme und Sollbilder
|
||||
|
||||
- `cargo test --workspace`: **481 bestanden, 0 fehlgeschlagen, 2 ignoriert**.
|
||||
Ignoriert sind der Golden-Generator und der separat ausgeführte Fremdtest.
|
||||
- Fremdtest: **1 bestanden**, sieben Programme jeweils zweimal.
|
||||
- `cargo run --manifest-path tests/terminalfrei/Cargo.toml --offline`: bestanden.
|
||||
- Clippy für Workspace, alle Targets/Features, `-D warnings`: bestanden.
|
||||
- `cargo fmt --all -- --check` und `git diff --check`: bestanden.
|
||||
- `openspec validate --all --strict`: **16 bestanden**, 15 Hauptspecs und der
|
||||
aktive Change, keine Fehler. Bestehende Hinweise zu langen Requirement-Texten
|
||||
sind rein informativ.
|
||||
|
||||
Die beiden neuen Sollausgaben wurden aus den erwarteten Zuständen festgelegt.
|
||||
`EVENT OFF` verwirft eingetretene Ereignisse; es wird ausdrücklich kein Nachholen
|
||||
beim erneuten ON erwartet. Der bestehende `formular.out` wurde fachlich geprüft:
|
||||
Nur die zehn Attributzellen der OK-Schaltfläche in Zeile 4, Spalten 24–33 wechseln
|
||||
auf Vordergrund 15/Hintergrund 1 (`f1`), weil sie den Eingabefokus behält. Die
|
||||
Zeichenebene und alle übrigen Zellen bleiben bytegleich. Der Golden-Generator
|
||||
wurde nicht ausgeführt.
|
||||
|
||||
## Abschluss der Reviewkorrekturen
|
||||
|
||||
- **V01:** Parent-Schlüssel enthalten den Arrayindex. Geometrie, Optionsgruppen, Menüzuordnung und Formular-Traversierung nutzen dieselbe Referenz. Container liegen bei Zeichnung und Trefferprüfung hinter ihren Kindern. Die ergänzte Gegenprobe traf vor der letzten Korrektur fälschlich `Group(1)` statt `Other`; danach sind Treffer und sichtbare Beschriftung korrekt. TBC4 bleibt unverändert, ungültige Parent-Zyklen und fehlende Arrayinstanzen werden abgewiesen.
|
||||
- **V02:** Die 291 festen Vorlagen enthalten unabhängige Sollziele; Forms werden gegen den abgesenkten Klassenmember geprüft. Der Inventartest liegt in `tb-cli`, damit `$INCLUDE` durch den echten Projektlader läuft. Falsche gültige Bindungen, falsche Konverterselektoren/Forms-Member sowie entfernte Absenkungen werden namentlich erkannt.
|
||||
- **V03:** Die gemeinsame Anweisungsauflösung weist auch Koordinaten mit Farbe/STEP, WINDOW SCREEN und PALETTE USING namentlich ab, nachdem mögliche Variablenzuweisungen erkannt wurden. Gleichnamige Arrays und SCREEN 0–13/LINE/PAINT/VIEW bleiben verfügbar.
|
||||
- **Ergänzende Prüfung:** ComboBox-Ausklapplisten schließen bei Fokuswechsel und Ausblenden; der neue Regressionstest besteht.
|
||||
|
||||
Alle fünf ursprünglichen Soll-Gegenproben bestehen. Der Golden-Generator wurde nicht ausgeführt; bei den Reviewkorrekturen wurden keine weiteren Sollbilder verändert.
|
||||
Reference in New Issue
Block a user