Clause
← All documentation

Validation

Current baseline

Plan 11 step 1, 2026-10-03, commit b1a471f, Windows x64: clang-cl 23.1.2, LLVM SDK 23.1.2 (/MT, _ITERATOR_DEBUG_LEVEL=0), Lizard 1.24.0, clang-tidy 22.1.8, OTP pin 21776803ecd1 with oracle OTP 29.1.1 / ERTS 17.1.

CheckResult
Fresh combined Debug CTest125/125, zero skips (729 s serial; 85 s with -j 16)
Fast-mode CTest (debug-fast)122 tests, about 60 s
check-qualityPass; Lizard CCN 10, clang-tidy over 258 production units
Opt-in OTP audit tests14/14
regenerate.py --corpus all --check19/19 corpora reproduce
Foreign O0/O2 objects7 targets inspected (Linux x86/x64/ARM/AArch64, Windows x86/x64, Apple Silicon)

Running the gate

From an x64 Visual Studio developer shell with C:\Program Files\LLVM\bin on PATH (automatic SDK selection reuses thirdparty/):

cmake --preset debug --fresh -DBUILD_TESTING=ON -G Ninja -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
cmake --build build/debug
ctest --preset debug-fast                  # during development
ctest --preset debug -j 16                 # full mode, at feature completion
cmake --build build/debug --target check-quality      # changed files + dependents
cmake --build build/debug --target check-quality-all  # whole tree

Fixtures and provenance

Test design

Behavior is tested through the real CLI, emitted objects, linked native consumers and OTP goldens. Focused unit tests remain only where source cannot reach the state, each with its purpose stated in the test:

Filesystem capability cases (links, case aliases) report per-case skips; they never stand in for a whole-test pass.

Platform and sanitizer status

History

Condensed from the former per-step records (originals in Git history up to commit 2777c98). Unless noted: Windows x64, LLVM 23.1.2, pin 21776803ecd1, oracle OTP 29.1.1 / ERTS 17.1. Test counts are full CTest passes with zero skips.

DateMilestoneTestsQuality unitsNotes
2026-09-19Parser phase VI (macOS arm64, OTP 29.1 751f87b7, oracle 29.0.5)46full344/344 productions witnessed; 10-file corpus
2026-09-20Projects (macOS arm64)64fullDebug, compiler-only, ASan+UBSan
2026-09-28Test migration to CLI workflows74/75—Baseline 78/93; parser_hardening stack overflow later fixed with 8 MiB stack
2026-09-28Windows gate repair75fullLizard + clang-tidy clean
2026-09-29Compiler milestone steps 1–46103182Compiler-only 80, runtime-only 16, runtime ASan 16
2026-10-01PG1 semantic matrix and evidence104—Source hashes pinned
2026-10-01PG2 failure channel108—ABI rev 2
2026-10-01PG3 atoms109189ABI rev 3
2026-10-01PG4 scoped bindings11119126 legality cases
2026-10-02PG5 pattern semantics11319692 legality modules
2026-10-02PG6 immediate matching11419934 calls
2026-10-02PG7 immediate guards1192051,689 calls
2026-10-02PG8 guard control flow1202072,075 calls
2026-10-02PG9 ordered clauses1212081,020 calls
2026-10-02PG10 body matches1222091,666 calls
2026-10-02PG11 stable heap and roots123213ABI rev 4
2026-10-02PG12 tuples/lists/strings1252214,801 calls
2026-10-02PG13 arbitrary integers12723116,065 calls
2026-10-02PG14 floats12923814,436 calls
2026-10-02PG15 maps1312448,010 calls
2026-10-02PG15a OTP-free goldens11824414 corpora, 49,959 values; audits opt-in
2026-10-02PG16 bitstrings1202538,826 calls
2026-10-03PG17 tuple records1212571,025 outcomes, 29 semantic cases
2026-10-03PG18 guard catalog12225781 rows, 5,033 outcomes
2026-10-03PG19 binding facts123258822 outcomes, 976 dominance checks
2026-10-03PG20 closure12425819 corpora, 67,634 values, 1,969 seeded outcomes
2026-10-03OTP source audit125258Copied OTP files replaced by local fragments
2026-10-03Plan 11 step 1 baseline125258See current baseline
2026-10-03Plan 11 step 2 program fixtures126258Six OTP goldens; fast mode 123 tests; full -j 16 83 s
2026-10-03Plan 11 step 4 term printing128 fast2659,542 ~w/display goldens; 154 compiled display calls in all policies; clang-tidy run with one job (concurrent runs crashed the tool on unchanged units)
2026-10-04Plan 11 step 8 executable runner (phase B closed)138 (135 fast)272Cases demo, exits under eight policy/driver combinations; full -j 16 235 s
2026-10-04Plan 11 step 8I classic heap (phase C closed)144 (140 fast)276Full -j 16 370 s: 143/144, codegen_dependency timed out at 120 s under load and passed alone in 29 s; Lizard-all 0 warnings; tidy-all passed with one job after a silent two-job tool exit
2026-10-04Plan 11 step 9 case and begin146 (142 fast)114 changedFast 142/142; affected tests 7/7 in full mode; Lizard 0 warnings; tidy passed with one job after a silent two-job exit
2026-10-05Plan 11 step 10 if147 (143 fast)114 changedFast 143/143; affected tests 8/8 in full mode; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 11 source raises148 (144 fast)124 changedFast 144/144; affected tests 22/22 in full mode; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 12 catch Expr149 (145 fast)277Fast 145/145; affected tests 25/25 in full mode; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 13 try ... of ... catch150 (146 fast)189 changedFast 146/146; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 14 try ... after153 (149 fast)2 changedFast 149/149; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 15 stack traces and raise/3154 (150 fast)129 changedFast 150/150; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 16 maybe (phase D closed)155 (151 fast)277Fast 151/151; full -j 16 155/155 in 259 s; Lizard-all 0 warnings; tidy-all passed
2026-10-05Plan 11 step 18 recursive call graphs156 (152 fast)91 changedFast 152/152; affected tests 13/13 in full mode; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 19 explicit frames and tail calls157 (153 fast)278Fast and full CTest pass (with the step-20 case: 154/154, 158/158); clang-cl configure; Lizard 0 warnings; tidy passed
2026-10-05Plan 11 step 20 deep body recursion and stack budget158 (154 fast)278Fast 154/154; full 158/158; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 21 list comprehensions159 (155 fast)changedFast 155/155; affected tests full mode; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 22 binary and map comprehensions (phase E closed)160 (156 fast)allFast 156/156; full -j 12 160/160 in 275 s; Lizard-all 0 warnings; tidy-all passed after fixing four new-code findings
2026-10-06Plan 11 step 23 root inventory, SafePoint, live registers160 (156 fast)50 changedFast 156/156; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 26 collection from generated code161 (157 fast)63 changedFast 157/157; full -j 12 161/161 in 107 s; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 27 heap exhaustion after collection162 (158 fast)50 changedFast 158/158; full -j 12 162/162 in 108 s; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 27 correction: no default memory caps162 (158 fast)50 changedFull -j 12 158/162 in 120 s, 4 codegen_failure_* fixed by expecting out_of_memory, then 10/10 affected; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 27 follow-up: no binary or process-count caps, --max-atoms164 (160 fast)281Fast 160/160; full -j 12 164/164 in 105 s; Lizard 0 warnings; tidy-all passed
2026-10-06Plan 11 step 28 graph copies between heaps, shared off-heap buffers166 (162 fast)71 changedFast 162/162; full -j 12 166/166 in 130 s; Lizard 0 warnings; tidy passed
2026-10-07Plan 11 step 29 record updates167 (163 fast)38 changedFast 163/163; Lizard 0 warnings; tidy passed; records corpus reproduces under OTP
2026-10-07Plan 11 step 30 record_info/2168 (164 fast)42 changedFast 164/164; full -j 12 168/168 in 119 s; Lizard 0 warnings; tidy passed
2026-10-07Plan 11 step 31B native record cells and CLAUSE_record_v1 (ABI 6)169 (165 fast)283 changedFast 165/165; full -j 12 169/169 in 122 s; Lizard 0 warnings; tidy passed after two fixes
2026-10-07Plan 11 step 31C local native records170 (166 fast)285 changedFast 166/166; full -j 12 170/170 in 146 s; Lizard and tidy passed after complexity fixes
2026-10-07Plan 11 step 31D qualified and imported native records171 (167 fast)124 changedFast 167/167; full -j 12 171/171 in 129 s; Lizard 0 warnings; tidy passed after three fixes
2026-10-07Plan 11 step 31E anonymous native records (step 31 closed)172 (168 fast)33 changedFast 168/168; full -j 12 172/172 in 124 s; Lizard 0 warnings; tidy passed after one fix
2026-10-07Plan 11 step 32 function values fun F/A, fun M:F/A (ABI 7)173 (169 fast)289 changedFast 169/169; full -j 12 173/173 in 122 s; Lizard and tidy passed after complexity fixes
2026-10-07Plan 11 step 33 closures with captured variables175 (171 fast)134 changedFast 171/171; full -j 12 175/175 in 126 s; Lizard and tidy passed after complexity fixes
2026-10-07Plan 11 step 34 named funs176 (172 fast)132 changedFast 172/172; full -j 12 176/176 in 152 s; Lizard 0 warnings; tidy passed
2026-10-07Plan 11 step 35 dynamic calls M:F(Args), apply/2,3, runtime fun M:F/A (ABI 8)177 (173 fast)290 (analyzer config changed)Fast 173/173; full -j 12 177/177 in 142 s; Lizard 0 warnings and tidy passed after one complexity and three tidy fixes
2026-10-06Plan 11 step 27E ERTS big integer limit, error:system_limit165 (161 fast)157 changedFast 161/161; full -j 12 165/165 in 130 s; Lizard 0 warnings; tidy passed; 21 executable goldens reproduce under OTP
2026-10-06Plan 11 step 27D no map size or key-work caps164 (160 fast)13 changedFast 160/160; full -j 12 164/164 in 115 s; after a tidy fix in bit_order, 35 affected tests pass; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 27C tuple arity limit 16,777,215164 (160 fast)51 changedFast 160/160; full -j 12 164/164 in 121 s; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 27B no list length or comparison work caps164 (160 fast)4 changedFast 160/160; full -j 12 164/164 in 125 s; Lizard 0 warnings; tidy passed
2026-10-06Plan 11 step 27A runtime-wide memory limit and --max-heap/stack/memory164 (160 fast)49 changedFast 160/160; full -j 12 164/164 in 118 s; after a tidy fix in ProcessStack::grow, 42 affected tests pass; Lizard 0 warnings; tidy passed

PG = pattern/guard plan step (archived in .agents/00-finished.md).