From 937c5211e8754da50c13017830709f6fd65f1147 Mon Sep 17 00:00:00 2001 From: Brummel Date: Thu, 7 May 2026 11:18:29 +0200 Subject: [PATCH] =?UTF-8?q?JOURNAL:=20Iter=204=20abgeschlossen,=20Schulden?= =?UTF-8?q?=20pr=C3=A4zisiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- docs/JOURNAL.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/docs/JOURNAL.md b/docs/JOURNAL.md index a7c00b2..56a72b9 100644 --- a/docs/JOURNAL.md +++ b/docs/JOURNAL.md @@ -147,3 +147,49 @@ Modulsystem als Iteration 5: 2. **`ail diff `** — 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`. +- `c652b12` Iter 4b: `ail diff [--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 `".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.