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:
@@ -147,3 +147,49 @@ Modulsystem als Iteration 5:
|
|||||||
2. **`ail diff <a> <b>`** — semantischer Modul-Diff via Hash-Vergleich
|
2. **`ail diff <a> <b>`** — semantischer Modul-Diff via Hash-Vergleich
|
||||||
pro Def.
|
pro Def.
|
||||||
3. **IR-Snapshot-Tests** — Regressions-Schutz für die Codegen-Pipeline.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user