@@ -26,6 +26,17 @@ the `main.py` wrapper when working from a fresh checkout.
2626backend tests, example e2e, debug + release artifacts, error-stage matrix,
2727docs style). Run it before reporting a non-trivial task as done.
2828
29+ ## A7 Source Rules
30+
31+ - A7 source recursion is banned. Semantic validation rejects both direct and
32+ mutual recursion as compile-time errors; do not introduce examples, tests,
33+ or docs that rely on recursive A7 functions.
34+ - Prefer loops, explicit stacks, or index-based worklists when porting
35+ recursive algorithms (see ` examples/025_linked_list.a7 ` ,
36+ ` examples/026_binary_tree.a7 ` ).
37+ - This rule applies to A7 source only. Compiler internals already use
38+ iterative AST traversals; keep them that way.
39+
2940## Post-Change Checklist
3041
3142When language features, backends, or user-facing behavior change, update:
@@ -36,6 +47,10 @@ When language features, backends, or user-facing behavior change, update:
36474 . ` MISSING_FEATURES.md ` — close or open gaps
37485 . ` TODO.md ` — check off or add follow-ups
3849
50+ Keep examples and docs aligned across ` README.md ` , ` docs/SPEC.md ` ,
51+ ` CHANGELOG.md ` , ` MISSING_FEATURES.md ` , and ` TODO.md ` — drift between them is
52+ treated as a bug.
53+
3954## Security Caveat
4055
4156` a7-py ` is ** not** a sandbox for untrusted source. The compiler emits Zig or C
0 commit comments