Просмотр исходного кода

docs: tagged session summary 2026-10-22

Whole-session record (corpus triage): the five fixed clusters (PIM/ISO
multi-index arrays, typed CHAR/enum subranges, ordinal FOR, ISO empty
string, typed libc prototypes + printf varargs), the triage buckets and
the printf policy choice, the three tagged states, and the next-session
list.  Final gates: suite 253/253, fixpoint OK 3,919,695 B, corpus
491/612, 0 crashes.
Eric Streit 1 день назад
Родитель
Сommit
c1e02fc65f
2 измененных файлов с 24 добавлено и 1 удалено
  1. 1 1
      docs/STATUS.md
  2. 23 0
      docs/summary_session-2026-10-22.md

+ 1 - 1
docs/STATUS.md

@@ -175,7 +175,7 @@ declarations still work (`t_fwdproc`, `t_fwdok`).
 ```sh
 cd compiler
 ./build.sh          # M2.atg -> scanner/parser/driver -> ./M2
-./run_tests.sh      # 249/249
+./run_tests.sh      # 253/253
 cd ..
 ./bootstrap/fixpoint.sh   # FIXPOINT OK (byte-identical stage2/stage3)
 ```

+ 23 - 0
docs/summary_session-2026-10-22.md

@@ -101,6 +101,29 @@ statement is still `233` (`t_bad_funstmt`).  Corpus **+6**:
 `varient` (`except5` now stops on ISO exceptions).  Regression
 `t_libc2`.
 
+## Commits
+
+Three tagged states, each green on all gates:
+
+| commit | tag | scope |
+| --- | --- | --- |
+| `aa4f49b` | `v3-corpus-triage` | multi-index arrays, typed subranges, ordinal `FOR` (+12) |
+| `f87bcc9` | `v3-empty-string` | ISO empty string as `CHAR` (+6) |
+| `c02fd41` | `v3-libc-prototypes` | typed libc prototypes, `printf` varargs (+6) |
+
+## Lessons
+
+- A corpus "bucket" can be misleading until each file's **first**
+  diagnostic is read: 48 files import `libc`, but most stop earlier on
+  declaration order, exceptions or sized types.  Only 6 were blocked by
+  the missing prototypes.
+- The `printf` decision was a policy choice, not a technical one: the
+  permissive external already made statement calls work.  Option 3
+  (function + allow discarding the result only for foreign C varargs)
+  keeps `t_bad_funstmt` and unlocks all 59 `printf` files.
+- `docs/gaps/README.md` is still the place to record *why* a case is
+  rejected; the new entries state the fix and the remaining carve-out.
+
 ## Remaining (for a next session)
 
 1. **A real `libc.def`** — the built-in prototype table covers the