JOURNAL: Iter 4 abgeschlossen, Schulden präzisiert

Architekt-Befund umgesetzt: Iter-4-Eintrag dokumentiert die drei
Sub-Commits (4a/4b/4c), den Test-Stand von 28, das Schließen der
Iter-2-Block-Tracking-Schuld und die zwei neuen Schulden
(single-shot check_module, hartkodiertes source_filename).
Iter-5-Plan steht: Modulsystem zuerst, Multi-Diagnose-Refactor danach.
This commit is contained in:
2026-05-07 11:18:29 +02:00
parent 74a20055c3
commit 937c5211e8
+46
View File
@@ -147,3 +147,49 @@ Modulsystem als Iteration 5:
2. **`ail diff <a> <b>`** — semantischer Modul-Diff via Hash-Vergleich
pro Def.
3. **IR-Snapshot-Tests** — Regressions-Schutz für die Codegen-Pipeline.
## 2026-05-07 — Iteration 4 fertig: LLM-Tooling-Konsolidierung
Drei Sub-Commits, jeder von einem `ailang-implementer`-Aufruf erzeugt
und stichprobenartig vom Orchestrator verifiziert:
- `93fe723` Iter 4a: `ail check --json` mit `Diagnostic`-Struct
(`severity`, `code`, `message`, `def`, `ctx`). Stabile Codes:
`unbound-var`, `type-mismatch`, `arity-mismatch`,
`non-exhaustive-match`, `unknown-ctor`, `unknown-ctor-in-pattern`,
`nested-ctor-pattern-not-allowed`, `duplicate-def`,
`unknown-effect-op`, `unknown-type`, `schema-mismatch`. API:
`check_module(&Module) -> Vec<Diagnostic>`.
- `c652b12` Iter 4b: `ail diff <a> <b> [--json]` als struktureller Top-
Level-Def-Diff via BLAKE3-Hash. Vier Kategorien (added/removed/
changed/unchanged), alphabetisch sortiert, Exit-Code 1 bei Diff.
- `74a2005` Iter 4c: IR-Snapshot-Tests in
`crates/ail/tests/snapshots/{sum,max3,hello,list}.ll`.
Normalisierung von `target triple`. Update via `UPDATE_SNAPSHOTS=1
cargo test ir_snapshot_`. Mismatch erzeugt `.actual`-Datei.
Test-Stand: 28 (vorher 19). 7 E2E + 4 IR-Snapshot + 9 ailang-check + 1
ailang-codegen + 7 ailang-core.
**Erledigt aus dem Schulden-Register:**
- Block-Tracking im Codegen ist seit Iter 2 kein Heuristik-Risiko mehr;
die explizite `current_block: String`-Spur wurde durch Iter 4c jetzt
zusätzlich von Snapshot-Tests gegen Regression geschützt. Schuld
geschlossen.
**Neue / präzisierte Schulden:**
1. `check_module` ist **single-shot** — der erste Fehler bricht ab, kein
Multi-Diagnose-Sammeln. Spec war so, aber das Format suggeriert
Vec-Semantik. Echter Multi-Diagnose-Refactor wird billiger, sobald
TIR existiert (zentraler Fehler-Akku durch separate Stufe). Nicht
jetzt fällig.
2. `source_filename` im IR ist hartkodiert auf `"<module>.ail"`. Solange
es nur ein Top-Level-Modul gibt, plattform-stabil. Mit Iter 5
(Modulsystem + Imports) wird der Pfad relevant — dort gleich beim
Bau pfad-unabhängig halten, sonst kippen die Snapshots.
**Plan Iteration 5:** Modulsystem mit Imports. Cross-Module-Hashing,
Import-Auflösung, mehrere `.ail.json`-Files in einem Build. Multi-
Diagnose-Refactor erst danach.