7.2 KiB
Verifikation vom 06.09.2026
Historischer Befundstand vor der Korrektur; der Inventartest liegt inzwischen in tb-cli.
Change: spezifikationsabgleich-und-regressionsnachweise.
Geprüft wurde der aktuelle Arbeitsbaum auf c8b92f06190d77714865e0018b090348f372d77e:
Proposal, Design, sieben Tasks, vier Delta-Specs mit sechs Requirements und
18 Szenarien, betroffene Hauptverträge, Code, Tests und Abschlussreport.
Ergebnis: drei offene Befunde. Die vorherige Aussage „keine offenen Befunde“ ist durch diese Nachprüfung überholt.
| Dimension | Ergebnis |
|---|---|
| Vollständigkeit | 7/7 Tasks formal abgehakt; die inhaltliche Abnahme ist wegen V01–V03 noch offen |
| Korrektheit | Bestehende Suite grün, fünf unabhängige Soll-Gegenproben schlagen fehl |
| Kohärenz | Bestehende Architektur und TBC-Version erhalten; Inventarnachweis und Import-Erhaltungszusage sind noch zu weitgehend |
| Befunde | 0 CRITICAL, 3 WARNING; davon V01 mit hoher, V02/V03 mit mittlerer Auswirkung |
V01 — Index des Elterncontainers geht beim FRM-Import verloren (hoch)
Fundstellen: frm.rs:87, frm.rs:122, frm.rs:131, forms.rs:269, forms.rs:531.
Der neue PARENT-Anfangswert erhält nur die Objekt-ID. Die Rekursion übergibt
ebenfalls nur Some(object); set_initial_at verwirft einen vorhandenen Index,
und der Getter ergänzt grundsätzlich None. Ein Kind von Group(1) bekommt
damit Group(0) als Parent. Die neue Regression prüft unterschiedliche
unindizierte Frames, aber kein Kind innerhalb eines Frame-Arrays.
Reproduktion: FRM mit Frame Group, Index = 0 und einem zweiten
Frame Group, Index = 1, darin TextBox Probe. Anschließend:
DIM p AS CONTROL
p = Probe.Parent
Form1.Hide
PRINT p.Index
END
Soll: 1. Ist: 0. Derselbe Fehler tritt nach tbc build und Löschen der
FRM-Quelle beim Ausführen der TBC-Datei auf. Beide Gegenproben schlagen fehl.
Das ist auch für den akzeptierten Fremdbestand relevant: graphics.frm
enthält indizierte Frames mit untergeordneten Controls.
Vertrag: Forms-Steuerelement-Arrays, vollständige Forms-Anfangsbeschreibungen im TBC sowie Task 2.4; der aktuelle Abschlussreport behauptet außerdem den Erhalt der Array-Eltern. Die neue PARENT-Unterstützung erfüllt diesen Erhalt noch nicht vollständig.
Behebung: Eltern als vollständige Objektreferenz einschließlich Arrayindex über Import, Anfangswerte, PARENT-Zugriff und davon abhängige Containerpfade führen. Einen indizierten Elterncontainer im Quell- und TBC-Rundlauf prüfen; den bestehenden Test mit gleichen Control-Namen in zwei Formularen erhalten.
V02 — Inventarprüfung akzeptiert ein falsches Laufzeitziel (mittel)
Fundstelle: inventar.rs:725.
pruefe_kompilat prüft lediglich, ob die im Kompilat vorkommenden Builtin-IDs
irgendwelche vorhandenen Bindungen haben und die Tabellenreferenzen gültig
sind. Es prüft nicht, ob das erzeugte Ziel dem untersuchten Inventareintrag
entspricht. Damit kann ein falsch abgesenktes Element weiterhin als
implementiert bestätigt werden.
Reproduktion: Die normale Probe PRINT TIMEZONEKNOWN wird kompiliert.
Anschließend ersetzt die Gegenprobe ausschließlich den erzeugten CallBuiltin
von TIMEZONEKNOWN (156) durch TIMER (54); beide haben null Argumente und eine
vorhandene Runtime-Bindung. Der bestehende Prüfer liefert weiterhin Ok(()).
Die Soll-Assertion, dass er diese Divergenz melden muss, schlägt fehl.
Vertrag: Delta sprachinventar, Requirement „Automatischer Abgleich
Inventar gegen Implementierung“, Task 2.1 und Design D1. Der Nachweis soll den
tatsächlichen Implementierungspfad des jeweiligen Elements prüfen, nicht nur
die Existenz eines beliebigen ausführbaren Ziels.
Behebung: Die erwartete Absenkung bzw. das beobachtbare Verhalten mit dem konkreten Inventareintrag verbinden. Neben Unsupported und fehlender Bindung auch eine gültige, aber falsche Zielbindung sowie eine verschwundene Absenkung negativ prüfen. Das betrifft auch Forms-Methoden/-Eigenschaften, deren bloßes Vorhandensein in gültigem Bytecode noch keinen passenden Dispatch beweist.
V03 — Weitere gültige Non-Feature-Syntaxformen liefern nur Syntaxfehler (mittel)
Fundstellen: parser.rs:199, inventar-quellen.tsv:148, inventar-quellen.tsv:153.
Der neue Parserpfad behandelt CIRCLE, WINDOW und IOCTL. Andere ausdrücklich verbotene Grafikformen erreichen weiterhin nicht die vorgeschriebene Feature-unavailable-Diagnose. Die festen Inventarvorlagen erfassen davon nur Syntaxvarianten, die der allgemeine Aufrufparser bereits versteht.
Reproduktionen mit tbc check:
PSET (1,1),2→Syntax errorin Spalte 11.DIM a%(15)gefolgt vonPALETTE USING a%(0)→Expected: expressionin Zeile 2, Spalte 9.
Beide sind gültige Syntaxformen ausgeschlossener Funktionen. Erwartet wird
jeweils die benannte Compile-Diagnose Feature unavailable, nicht ein
allgemeiner Syntaxfehler. Beide Soll-Gegenproben schlagen fehl.
Vertrag: Delta sprach-frontend, Requirement „Compile-Zeit-Abweisung
deklarierter Non-Features“ verlangt diese Diagnose für jede Verwendung;
Task 1.1 verlangt die benannte Abweisung weiterhin verbotener Formen.
Behebung: Die besondere Syntax der verbleibenden ausgeschlossenen Formen vor dem allgemeinen Aufrufparser erkennen oder bis zur Non-Feature-Diagnose parsen. Die CLI-/Inventarproben um Koordinaten mit Farbargument und PALETTE USING ergänzen; die erlaubte Grafikuntermenge weiter positiv prüfen.
Ausgeführte Prüfungen
cargo test --workspace: 476 bestanden, 0 fehlgeschlagen, 2 ignoriert.- Gesonderter Fremdtest mit dem dokumentierten Checkout und Commit: bestanden, sieben Einstiege jeweils zweimal, mit den festgelegten Menü-, Exit-, Dialog- und Spin-Zuständen.
openspec validate --all --strict: 16 bestanden, 0 Fehler; vorhandene Hinweise zu Textlängen sind informativ.git diff --check: bestanden.- Neue unabhängige Soll-Gegenproben: fünf fehlgeschlagen, zugeordnet zu den drei Befunden oben. Produktcode, bestehende Tests und Sollbilder wurden während dieses Reviews nicht geändert.
Die Gegenproben sind reproduzierbar und erzeugen Dateien nur in einem temporären Verzeichnis. Sie bauen die CLI, prüfen die vier CLI-Fälle und kompilieren für die Zielmutation eine temporäre Kopie des bestehenden Inventarprüfers:
python3 openspec/changes/archive/2026-09-06-spezifikationsabgleich-und-regressionsnachweise/review-probes.py
Der Aufruf liefert derzeit Status 1. Keine GUI, kein Emulator und kein Netzwerkzugriff sind erforderlich. Keine Verifikationsdimension wurde übersprungen. Die grünen bestehenden Tests und die sieben engen Fremdprogrammsequenzen widerlegen die zusätzlich reproduzierten Fehler nicht.
Abnahme: Noch nicht vollständig spezifikationskonform. V01–V03 vor der abschließenden Synchronisierung und Archivierung beheben und nachprüfen.