# Kompatibilitäts-Testkorpus Kleine BAS- und FRM-Referenzprogramme mit unabhängig begründeter Sollausgabe. `cargo test --locked -p tb-cli --test compat` übersetzt sie, führt sie ohne Terminal durch die TBVM und vergleicht jeden Lauf mit seiner `.out`. Jeder Fall läuft zweimal. Mehrere deklarierte Bildschirmgrößen besitzen jeweils eine eigene `.x.out`. Snapshots enthalten das getrimmte Textbild und bei abweichenden Farben eine Attributebene. UTF-8 und LF sind verbindlich. PRINT-Leerzeichen sind auch am Zeilenende signifikant; `.gitattributes` schützt `.out` vor Konvertierung. Breite Zeichen erscheinen einmal, ihre Fortsetzungszellen werden nicht als zusätzliches Leerzeichen ausgegeben. Die Farbdiagnose nennt Bildschirmspalten. Kopfzeilen stehen bei BAS am Anfang, bei FRM in den ersten acht Codezeilen: - `tb-screen: 80x25` ist Pflicht; mehrere Größen werden durch Kommas getrennt. - `tb-resize: nach 1 auf 120x40` liefert eine einzelne Größenänderung nach dem angegebenen Host-Zustellpunkt. - `tb-keys:` beschreibt Tasten; ``, ``, ``, `` bis `` und Pfeiltasten sind benannt, `+`/`^`/`%` stehen für Shift/Ctrl/Alt. - `tb-events:` ordnet Tasten, Maus, Zeit und Resize ausdrücklich, etwa `key: | resize:100x30 | mouse:down,1,0,4,25 | time:250ms`. Mausfelder sind Art, Taste, Modifikatoren, Zeile, Spalte (einsbasiert). `time:` rückt die virtuelle Uhr um den Wert vor; ohne Zeitschritt steht sie bei 0. `mouse:up` und `mouse:move` ergänzen Loslassen und Bewegung. - `tb-clock: 25ms/Zustellpunkt` ist die alternative Uhr für TIMER-Traps; der Harness verbietet fehlende Trap-Uhren und die Mischung mit tb-events. - `tb-tempdir` führt Dateiprogramme in einem frischen leeren Arbeitsverzeichnis aus und entfernt es danach, auch beim Entrollen eines Testfehlers. - `tb-tz: +00:00` setzt eine feste Zone, `tb-tz: unknown` prüft UTC-Rückfall. Datums-/Zeitproben setzen ihre Werte oder prüfen ausdrücklich Invarianten; Zufall verwendet eine feste Saat. `release-formular.frm` verbindet Fokuswechsel, Mausklick, Menü und Resize mit farbiger Unicode-Ausgabe. Das Soll folgt den Handlern `Lost;Got;Click;Menu;`, `COLOR 14,1` (e1) und `LOCATE 2,90` nach Resize auf 100×30. Der Test verändert gezielt ein Zeichen und ein Attribut in der Erwartung und muss beides erkennen. Das Soll wird nicht aus dem VM-Istwert gewonnen. Bestehende `formular.frm`-/Listen-/Timerfälle prüfen zusätzlich die sichtbare Formularzeichnung und modale Übergänge. Die Programme `eingabefortschritt`, `timezoneknown` und `timezonefallback` prüfen Codepoints, gemeinsame Dateileseposition und Zonenzustand. Späterer Zonenausfall und Erholung werden mit einer ersetzbaren Quelle geprüft, ohne die Rechnerzeitzone zu ändern. ## Erforderliche Release-Grundabnahme ```sh python3 tests/support/release-abnahme.py --vbdos-repo /absoluter/pfad/zu/vbdos ``` Der Aufruf funktioniert auch außerhalb des Checkouts mit absolutem Skriptpfad. Er benötigt Python 3, Cargo/Rust sowie Git und tar für den Fremdbestand. Er lädt nichts herunter. Der Git-Bestand muss HEAD `1cdd2b32b829fe1721d0b6aecc433abc47a96fb6` enthalten; der Test exportiert exakt diese Revision in temporäre Verzeichnisse, sodass lokale Änderungen am Fremdcheckout nicht in die Prüfung eingehen. Zuerst läuft der erforderliche Fremdtest mit `--include-ignored`, danach Workspace-Regressionen, Inventarbericht, Format, Clippy und die vorhandenen Compile-/VM-Benchmarks. Jeder Fehler beendet den Aufruf erfolglos. Ohne Bestand oder mit falscher Revision entsteht kein bestandener Release-Nachweis. Der normale Entwicklertest darf den Fremdtest weiter ignorieren; er allein ist keine Release-Abnahme. Das ignorierte Golden-Erzeugungswerkzeug wird vom Release-Aufruf niemals gestartet. Bestehende Sollwerte werden nur nach Prüfung ihrer Spec-/Referenzgrundlage geändert. Fallzuordnung, Eingabefolgen, Referenzrevision und Messwerte stehen im Change `phase-6-01-kompatibilitaet-und-leistungsabnahme` in `abnahmematrix.md` und `verification.md` (nach Archivierung unter `openspec/changes/archive/`). Diese Grundabnahme ersetzt keine native EXE-/TBL-, reale Terminalmatrix- oder Gitea-Releaseprüfung; diese folgen mit Phase-6-Changes 02–07.