Projektmodule und vollständiges TBC-Kompilat umsetzen und Change archivieren
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Verifikation: projektmodule-und-kompilat
|
||||
|
||||
Stand: 05.09.2026, Arbeitsbaum auf Basis von `58b1f62`.
|
||||
**Keine offenen Befunde: 0 CRITICAL, 0 WARNING, 0 SUGGESTION.**
|
||||
|
||||
Die sechs Befunde des [ersten Reviews](review-initial.md) sind behoben.
|
||||
Weitere bei der Nachprüfung reproduzierte Abweichungen wurden ebenfalls
|
||||
korrigiert und mit Regressionen abgesichert. Der Change ist abnahmebereit.
|
||||
|
||||
| Dimension | Ergebnis |
|
||||
| --- | --- |
|
||||
| Vollständigkeit | 12/12 Tasks umgesetzt; alle 7 Requirements und 21 Delta-Szenarien abgeglichen. |
|
||||
| Korrektheit | 453 Workspace-Tests bestanden, 0 fehlgeschlagen, 1 vorhandener Golden-Generator ignoriert. Die 7 unveränderten ursprünglichen Review-Proben bestehen auch im unabhängigen temporären Treiber. |
|
||||
| Kohärenz | D1–D4 erfüllt: physische Quellorte, getrennte Scopes, selbstständiges TBC 4 und dokumentierte Inline-Instruktionen. |
|
||||
|
||||
## Geschlossene Befunde
|
||||
|
||||
| Befund | Korrektur und Nachweis |
|
||||
| --- | --- |
|
||||
| V1: Zweig-/Schleifenorte | Parser und HIR erhalten ELSEIF-, CASE-, NEXT-, LOOP- und WEND-Positionen. Codegen emittiert die tatsächlichen Anweisungsgrenzen. Fehler, Breakpoints, WHILE-Rücksprung, LOOP-RESUME, NEXT-RESUME NEXT und Include-Enden in Zeile 42/Spalte 3 sind geprüft. Numerische ERL-Labels bleiben getrennt. |
|
||||
| V2: Importkontext | Exportierte Signaturen erhalten die DEFtype-Typen ihres Ursprungs. Konstanten werden dort gefaltet, einschließlich transitiver Abhängigkeiten über drei Module. TYPE-Abhängigkeiten werden geordnet und bei abweichenden lokalen Layouts intern qualifiziert. Echte lokale Duplikate bleiben Fehler. |
|
||||
| V3: `$FORM`-Identitäten | FRM- und `$FORM`-Objekte stehen vor jeder Modulübersetzung in einem gemeinsamen Katalog. Getrennte Captions, gegenseitige Referenzen und unterschiedliche Form_Load-Bindungen sind auch für gemischte FRM/BAS-Projekte nach TBC-Rundlauf geprüft. |
|
||||
| V4: COMMON | HIR übergibt Block, vollständigen Variablenschlüssel, Elementtyp und Arraygrenzen an den Linker. Typen, Ränge und bekannte Grenzen werden geprüft. `CommonArr` initialisiert einmal und prüft spätere dynamische Grenzen ohne Zurücksetzen des Handles oder der Werte. Offene Arraydeklarationen und gerundete Grenzen bleiben unterstützt. |
|
||||
| V5: LOAD/UNLOAD | Beide Anweisungen verwenden dieselbe explizite Containerauflösung und Indexprüfung wie andere Objektzugriffe. `Form2!Text1(3)` wird geladen, beschrieben, gelesen und entladen, auch wenn Form1 ebenfalls Text1 besitzt. |
|
||||
| V6: Diagnosen | Der Linker gibt strukturierte Diagnosen an den ursprünglichen Deklarationen zurück; Source-ID, Datei, Zeile und Spalte bleiben erhalten. Signaturkonflikte, COMMON-Konflikte im Include sowie doppelte Module sind geprüft. |
|
||||
|
||||
Die erweiterten Proben fanden zusätzlich folgende inzwischen behobene
|
||||
Abweichungen: transitive Konstantenimports, fremde TYPE-Layouts bei lokal
|
||||
abweichenden Definitionen, prozedurübergreifendes Durchsickern von DEFtype,
|
||||
Verwechslung typisierter Debuggernamen, Verwechslung von Formnamen mit
|
||||
suffixdeklarierten Variablen und fehlende Literalpositionen in Diagnosen.
|
||||
Letzteres ist durch `CALL F("wrong")` in `args.bi:42:10` abgesichert.
|
||||
Auch Konflikte erst in der dritten COMMON-Deklaration werden erkannt.
|
||||
|
||||
Die [16 dauerhaften Regressionstests](../../../../crates/tb-vm/tests/project_regressions.rs)
|
||||
enthalten die sieben ursprünglichen Proben mit unveränderten Erwartungen
|
||||
sowie neun ergänzende Tests mit mehreren verwandten Fällen. Die ursprüngliche
|
||||
[Probe-Datei](review-probes.rs) wurde nicht geändert. Es wurden keine Goldens
|
||||
neu erzeugt und keine Fehlererwartungen abgeschwächt.
|
||||
|
||||
## Abgleich aller Requirements und Szenarien
|
||||
|
||||
| Requirement | Szenarien / Nachweise |
|
||||
| --- | --- |
|
||||
| Monomorpher Opcode-Satz | Gemischter Ausdruck und aufgelöste Namen: vorhandene HIR-/Codegentests; numerische Projektverknüpfung. Alle 153 Opcode-Kennungen, Operandenfolgen und Encodingbreiten gegen die Dokumentation geprüft. |
|
||||
| TBC-Container | Bytegleicher Roundtrip; klare Ablehnung alter/unbekannter Versionen; vollständige Formularwerte und Designarrays. CLI-Projekttests entfernen sämtliche BAS-/BI-/FRM-/MAK-Quellen und führen das TBC selbstständig aus. |
|
||||
| Quellorte | Fehler in physischer Zeile 42; Fehler in lib.bas:2; verschachtelte Includes; zusätzliche ausführbare Zweig-/Schleifengrenzen und Initialisierungen. |
|
||||
| Benannte Objekte | Eigenschaften lesen/schreiben; keine Standardeigenschaft; Check1.Value=3 erzeugt Fehler 5; voneinander unabhängige Werte gleichnamiger Controls. Zwei FRM- und gemischte FRM/`$FORM`-Projekte geprüft. |
|
||||
| Diagnostik | 1-basierte Datei-/Zeilen-/Spaltenangaben in Lexer, Parser, Semantik und Linker; Include-Fehler einschließlich Literalargumenten. |
|
||||
| Objektgrammatik/-semantik | Unbekanntes Objekt und unbekannte Eigenschaft benennen; Eigenschaftstyp prüfen; TYPEOF; expliziter Form1/Form2-Container bei gleichnamigen Controls. Qualifiziertes LOAD/UNLOAD nutzt dieselbe Auflösung. |
|
||||
| Unterbrechung/Inspektion | Modulbezogener Breakpoint; scalar-, array- und UDT-Inspektion; Fortsetzen und Einzelschritt. Gleiche physische Zeile in MAIN und LIB bleibt getrennt, explizite Typ-Suffixe unterscheiden Variablen. ERR/ERL bleiben 6/200. |
|
||||
|
||||
Die konkreten ursprünglichen Szenario-/Testnamen und weitere Containerproben
|
||||
stehen im [Implementierungsnachweis](verification.md), den
|
||||
[VM-Projekttests](../../../../crates/tb-vm/tests/project.rs) und den
|
||||
[CLI-Projekttests](../../../../crates/tb-cli/tests/project.rs).
|
||||
|
||||
## Abschließende Prüfläufe
|
||||
|
||||
- `cargo test --workspace`: **453 bestanden, 0 fehlgeschlagen, 1 ignoriert**.
|
||||
- Unabhängiger Treiber aus [review-initial.md](review-initial.md): **7 bestanden**.
|
||||
- `cargo clippy --workspace --all-targets --all-features -- -D warnings`: bestanden.
|
||||
- `cargo fmt --all -- --check`: bestanden.
|
||||
- `cargo bench -p tb-vm --bench compile`: 508 Zeilen **0,56 ms** (Budget 50 ms);
|
||||
49.760 Zeilen in 20 verbundenen Modulen **77 ms** (Budget 1000 ms).
|
||||
- Formatabgleich: **153/153 Opcodes**, Operandentypen und Gesamtbreiten;
|
||||
**9/9 Abschnittskennungen** stimmen zwischen Writer, Reader und Dokumentation überein.
|
||||
- `openspec validate projektmodule-und-kompilat --strict`: bestanden.
|
||||
- `git diff --check`: bestanden.
|
||||
|
||||
Die Verifikation prüft den aktuellen Code und die gesamten Change-Artefakte
|
||||
lokal und headless auf macOS. Ein neuer interaktiver Originalsystemvergleich
|
||||
oder eine Windows-/Linux-Testmatrix war nicht Teil dieses Prüflaufs.
|
||||
Die vier betroffenen Hauptspecs wurden am 05.09.2026 synchronisiert und
|
||||
mit `openspec validate --specs --strict` validiert (15/15 bestanden).
|
||||
Alle sieben Delta-Requirements stimmen vollständig mit den Hauptspecs
|
||||
überein; alle zuvor vorhandenen Szenarien und unberührten Requirements
|
||||
bleiben erhalten. Der Change ist unter
|
||||
`openspec/changes/archive/2026-09-05-projektmodule-und-kompilat` archiviert.
|
||||
Reference in New Issue
Block a user