iter revert: back out the Iteration-discipline milestone (it.1 + it.2)

One forward iteration; main never rewound. 1ff7e81 (the pre-9973546
commit) is the per-region byte oracle — every reverted source/test
file is byte-identical to it; crates/ailang-check/src/lib.rs fully so.

Root cause being corrected: the Iteration-discipline milestone was an
over-escalation of fieldtest finding F1 (a [friction] item whose own
minimal recommendation was a DESIGN.md note). Its totality dichotomy
made the maximally-LLM-natural build(d:Int)=Node(1,build(d-1),
build(d-1)) inexpressible (it.3 BLOCKED); the only in-thesis escape
(A1/it.2b) conceded the language's first documented-unenforced
totality precondition — a purity-pillar dilution the user rejected in
favour of a full revert + rebuild.

Removed: Term::Loop/Term::Recur/LoopBinder; the verify_structural_
recursion guardedness pass + term_contains_loop + Diverge-injection +
the transitively-it.2 module_fns plumbing; the five Recur*/
NonStructuralRecursion CheckError variants (+ code() + the 3 dedicated
ctx() arms); the it.1 codegen loop-header/phi/back-edge + parallel
block_terminated setter; all Loop/Recur walker arms; 16 it.1/it.2
fixtures; 2 pin files; bench/it3-oracle/. Restored: 2 RC fixtures to
1ff7e81 content.

Surgically kept (not in 1ff7e81, landed with the milestone but
independently sound): feature-acceptance clause 3 in DESIGN.md and
skills/brainstorm/SKILL.md, with its worked example de-claimed from
"shipped" to hypothetical-illustration form; the F3 P2 todo.
bench/orchestrator-stats/2026-05-15-iter-it.{1,2,3}.json kept as
historical record (like journals/plans).

Sole net addition: an honest F1/F4 documented-idiom note in DESIGN.md
(the tail-recursive accumulator fallback; examples/mut_counter.ail),
guarded by a doc-presence test — "a documentation note is not a
reshape", asserts nothing at the typecheck level.

Roadmap: the Iteration-discipline block + blocking-fork section
removed; the genuine total-Int-recursion ambition preserved as a
deferred P2 milestone sequenced behind a future Nat/refinement-types
milestone (not abandoned — correctly sequenced after the type
machinery it needs). 2026-05-15-iteration-discipline.md carries a
superseded header; it.1/it.2/it.3 journals + plans stay as history.

Correctness gate PRISTINE: 164 surviving 1ff7e81-era fixtures
ail check/ail run byte-identical to pre-milestone behaviour (verified
against a 1ff7e81 worktree reference compiler, zero drift);
cargo test --workspace 600/0; zero residual it.1/it.2 production
surface.

Spec docs/specs/2026-05-16-iteration-discipline-revert.md (b3853bf),
plan docs/plans/2026-05-16-iter-revert.md (abf0013).
This commit is contained in:
2026-05-16 01:28:47 +02:00
parent abf00131c1
commit 37ac704bf3
93 changed files with 307 additions and 5014 deletions
-41
View File
@@ -1,41 +0,0 @@
stem class migration runnable rec_fns note
bench_closure_chain a loop main run_loop:loop
bench_compute_collatz a loop main collatz_steps:loop,sum_steps_loop:loop
bench_compute_intsum a loop main intsum_loop:loop
bench_hof_pipeline a plaincall main build_n:structural,fold_with_fn:structural
bench_latency_explicit a BLOCKED main build_tree:BLOCKED,cons_n_acc:structural,sum_list_acc:structural,loop:structural BLOCKED:build_tree
bench_latency_implicit a BLOCKED main build_tree:BLOCKED,sum_tree:structural,cons_n_acc:structural,sum_list_acc:structural,loop:structural BLOCKED:build_tree
bench_list_sum a plaincall main cons_n_acc:structural,sum_acc:structural
bench_list_sum_explicit a plaincall main cons_n_acc:structural,sum_acc:structural
bench_mono_dispatch a plaincall-or-loop ? (self-rec via loop/letrec only)
bench_tree_walk b BLOCKED main build_tree:BLOCKED,sum_tree:structural BLOCKED:build_tree
borrow_own_demo c already-structural main list_length:structural,sum_list:structural
ct_1_ordering_signum a plaincall main drain:structural
escape_local_demo b loop main count:loop
fieldtest/floats_1_newton_sqrt a loop main newton_iter:loop
fieldtest/floats_2_average_int_list a plaincall main sum_acc:structural,count_acc:structural
fieldtest/forma_1_factorial a loop main fact_acc:loop
gc_stress b loop+structural main build:loop,sum_list:structural
list c already-structural main sum_list:structural
list_map c already-structural main map_int:structural,print_list:structural
list_map_poly a plaincall main map:structural,print_list:structural
mut_counter a loop main sum_helper:loop
mut_sum_floats a loop main sum_helper:loop
pat_extract_partial_drop c already-structural main sum_list:structural
rc_drop_iterative_long_list a plaincall main cons_n_acc:structural
rc_let_alias_implicit_param a BLOCKED main build:BLOCKED,loop:structural BLOCKED:build
rc_let_owned_app_leak b BLOCKED main build:BLOCKED BLOCKED:build
rc_list_drop c already-structural main sum_list:structural
rc_pin_recurse_implicit a BLOCKED main build:BLOCKED,loop:structural BLOCKED:build
rc_tail_sum_explicit_leak a plaincall main cons_n_acc:structural,sum_acc:structural
reuse_as_demo c already-structural main map_inc:structural,sum_list:structural
sort a plaincall main insert:structural,sort:structural,print_list:structural
std_either_list c already-structural checkonly lefts:structural,rights:structural,partition_eithers:structural
std_list a plaincall checkonly fold_left:structural,fold_right:structural,append:structural,map:structural,filter:structural,take:structural,drop:structural
std_list_stress b loop main build:loop
struct_rec_foldl_sum c already-structural checkonly go:structural
struct_rec_list_len c already-structural checkonly len:structural
struct_rec_sum_e2e c already-structural main sum:structural
struct_rec_tree_forest c already-structural checkonly forest_size:structural
sum b loop main sum:loop
test_mono_recursive_fn_bug a loop main loop:loop
1 stem class migration runnable rec_fns note
2 bench_closure_chain a loop main run_loop:loop
3 bench_compute_collatz a loop main collatz_steps:loop,sum_steps_loop:loop
4 bench_compute_intsum a loop main intsum_loop:loop
5 bench_hof_pipeline a plaincall main build_n:structural,fold_with_fn:structural
6 bench_latency_explicit a BLOCKED main build_tree:BLOCKED,cons_n_acc:structural,sum_list_acc:structural,loop:structural BLOCKED:build_tree
7 bench_latency_implicit a BLOCKED main build_tree:BLOCKED,sum_tree:structural,cons_n_acc:structural,sum_list_acc:structural,loop:structural BLOCKED:build_tree
8 bench_list_sum a plaincall main cons_n_acc:structural,sum_acc:structural
9 bench_list_sum_explicit a plaincall main cons_n_acc:structural,sum_acc:structural
10 bench_mono_dispatch a plaincall-or-loop ? (self-rec via loop/letrec only)
11 bench_tree_walk b BLOCKED main build_tree:BLOCKED,sum_tree:structural BLOCKED:build_tree
12 borrow_own_demo c already-structural main list_length:structural,sum_list:structural
13 ct_1_ordering_signum a plaincall main drain:structural
14 escape_local_demo b loop main count:loop
15 fieldtest/floats_1_newton_sqrt a loop main newton_iter:loop
16 fieldtest/floats_2_average_int_list a plaincall main sum_acc:structural,count_acc:structural
17 fieldtest/forma_1_factorial a loop main fact_acc:loop
18 gc_stress b loop+structural main build:loop,sum_list:structural
19 list c already-structural main sum_list:structural
20 list_map c already-structural main map_int:structural,print_list:structural
21 list_map_poly a plaincall main map:structural,print_list:structural
22 mut_counter a loop main sum_helper:loop
23 mut_sum_floats a loop main sum_helper:loop
24 pat_extract_partial_drop c already-structural main sum_list:structural
25 rc_drop_iterative_long_list a plaincall main cons_n_acc:structural
26 rc_let_alias_implicit_param a BLOCKED main build:BLOCKED,loop:structural BLOCKED:build
27 rc_let_owned_app_leak b BLOCKED main build:BLOCKED BLOCKED:build
28 rc_list_drop c already-structural main sum_list:structural
29 rc_pin_recurse_implicit a BLOCKED main build:BLOCKED,loop:structural BLOCKED:build
30 rc_tail_sum_explicit_leak a plaincall main cons_n_acc:structural,sum_acc:structural
31 reuse_as_demo c already-structural main map_inc:structural,sum_list:structural
32 sort a plaincall main insert:structural,sort:structural,print_list:structural
33 std_either_list c already-structural checkonly lefts:structural,rights:structural,partition_eithers:structural
34 std_list a plaincall checkonly fold_left:structural,fold_right:structural,append:structural,map:structural,filter:structural,take:structural,drop:structural
35 std_list_stress b loop main build:loop
36 struct_rec_foldl_sum c already-structural checkonly go:structural
37 struct_rec_list_len c already-structural checkonly len:structural
38 struct_rec_sum_e2e c already-structural main sum:structural
39 struct_rec_tree_forest c already-structural checkonly forest_size:structural
40 sum b loop main sum:loop
41 test_mono_recursive_fn_bug a loop main loop:loop
-3
View File
@@ -1,3 +0,0 @@
49995000
4999950000
124999750000
@@ -1,3 +0,0 @@
849666
10753840
62134795
@@ -1,3 +0,0 @@
3500003500000
350000035000000
8750000175000000
-3
View File
@@ -1,3 +0,0 @@
5000050000
500000500000
4500001500000
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-3
View File
@@ -1,3 +0,0 @@
4999950000
499999500000
4499998500000
@@ -1,3 +0,0 @@
4999950000
499999500000
4499998500000
-1
View File
@@ -1 +0,0 @@
-2551317978420243992
-3
View File
@@ -1,3 +0,0 @@
65535
262143
1048575
-2
View File
@@ -1,2 +0,0 @@
3
6
@@ -1,5 +0,0 @@
-1
0
1
-1
1
-4
View File
@@ -1,4 +0,0 @@
42
42
5
0
@@ -1 +0,0 @@
1.41421
@@ -1 +0,0 @@
3.2
@@ -1,2 +0,0 @@
120
3628800
-1
View File
@@ -1 +0,0 @@
1275
-1
View File
@@ -1 +0,0 @@
42
-3
View File
@@ -1,3 +0,0 @@
2
4
6
-3
View File
@@ -1,3 +0,0 @@
2
3
4
-1
View File
@@ -1 +0,0 @@
55
-1
View File
@@ -1 +0,0 @@
55
@@ -1 +0,0 @@
6
@@ -1 +0,0 @@
1
@@ -1 +0,0 @@
0
@@ -1 +0,0 @@
1
-1
View File
@@ -1 +0,0 @@
15
@@ -1 +0,0 @@
0
@@ -1 +0,0 @@
4950
-1
View File
@@ -1 +0,0 @@
9
-11
View File
@@ -1,11 +0,0 @@
1
1
2
3
3
4
5
5
5
6
9
-1
View File
@@ -1 +0,0 @@
ok (53 symbols across 6 modules)
-1
View File
@@ -1 +0,0 @@
ok (38 symbols across 3 modules)
-2
View File
@@ -1,2 +0,0 @@
500500
500500
@@ -1 +0,0 @@
ok (22 symbols across 2 modules)
-1
View File
@@ -1 +0,0 @@
ok (22 symbols across 2 modules)
-1
View File
@@ -1 +0,0 @@
15
@@ -1 +0,0 @@
ok (24 symbols across 2 modules)
-1
View File
@@ -1 +0,0 @@
55
@@ -1 +0,0 @@
15
@@ -0,0 +1,34 @@
{
"iter_id": "revert",
"date": "2026-05-16",
"mode": "standard",
"outcome": "DONE",
"tasks_total": 11,
"tasks_completed": 11,
"reloops_per_task": {
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0
},
"review_loops_spec": 0,
"review_loops_quality": 0,
"blocked_reason": null,
"notes": {
"self_caught_implementer_corrections": 1,
"self_caught_detail": "Task 4: a scripted line-range delete also removed verify_tail_positions' match/fn closing braces; caught by the disciplined full-file oracle diff in the implementer phase and fixed forward within the same task (not a spec/quality re-loop).",
"stop_gates_cleared": ["task3-step1-helper-provenance", "task8-step1-fixture-split"],
"concerns": 2,
"concern_detail": "Task 3 plan file-map under-enumerated the module_fns signature threading (resolved via oracle authority, no bounce); Task 9 Step-6 single-line grep heuristic returned 0 due to verbatim-text line-wrap (substantive clause-3 retention positively verified otherwise).",
"behavioural_equivalence": "164 surviving fixtures, fail=0, zero check/run drift vs 1ff7e81 — pristine",
"workspace_tests": "600 passed, 0 failed",
"main_head_moved": false
}
}