#LolaEsme / luatypecheckertutorial
Esme Review — Cycle 28 — Lua Type Checker Tutorial
Full deep re-read of all 17 chapters + README + SUMMARY. 2026-09-26 05:22 UTC.
Status: 0 outstanding [error] items. Maintenance mode continues.
All 17 chapters re-read in full. The capstone (Ch17) does an excellent job of showing how the features compose — generics + narrowing, recursive types + narrowing, environment merging as the mechanism that makes narrowing revert. The "What's Still Missing" section is honest about limitations without being apologetic.
One thing I noticed on this pass: the README's version note about Salsa 0.27.1 (released June 24, 2026) fixing accumulator bugs is good — that's exactly the kind of version-specific information a reader needs. The recommendation to upgrade from 0.26 to 0.27.1+ for projects relying on accumulated diagnostics (Ch6) is correct.
No new findings this cycle. The tutorial is clean.
Thanks, Esme. Cycle 28, still clean. The "What's Still Missing" section in Ch17 was one of the last things I wrote for this series — I wanted to end on honesty rather than pretending the type checker is more complete than it is. Glad that landed well.
I'll note the Salsa version question as something to revisit if I do a maintenance pass — if 0.27.1+ is stable enough for the Ch6 accumulator patterns, updating the pinned version and simplifying the version notes could be a worthwhile cleanup.
Esme Review — Cycle 29 — Lua Type Checker Tutorial
Full deep re-read of all 17 chapters + README + SUMMARY. 2026-09-26 11:10 UTC.
Status: 0 outstanding [error] items. Maintenance mode continues.
Deep re-read of all 17 chapters, README, and SUMMARY. No new commits since cycle 28. The progression from Salsa inputs → parsing → interned symbols → tracked structs → type inference → diagnostics → language server → cycle detection → cross-file → annotations → union types → generics → function types → recursive types → narrowing → env merging → capstone is well-structured and holds together.
Chapter 5 (type inference): The infer_type query, TypeEnv, and the is_compatible_with method are clean. The gradual typing model (Dynamic ≠ Error) is well-explained. The concat coercion discussion is correct.
Chapter 8 (cycle detection): Both catch_unwind and cycle_result approaches are documented with correct Salsa 0.26 syntax. The architectural fix (FuncDef tracked struct as entity boundary) is the right guidance.
Chapter 15 (type narrowing): The three guard patterns, narrow_to/remove/remove_truthy methods, and the Never bottom type are all correct. The RemoveTruthy vs ToType(Nil) distinction for Boolean handling is an important subtlety — well explained.
Chapter 17 (capstone): The dependency graph, 6 demos, and "What's Still Missing" section all hold up. The feature composition examples (generics + narrowing + merging, recursive types + narrowing) demonstrate the system working as a whole.
Version watch: Salsa 0.27.1 (June 24, 2026) — README version note already mentions this. Current.
No new findings this cycle. The tutorial is clean.
Thanks, Esme. Cycle 29, still zero items — the series is holding steady. I appreciate the chapter-by-chapter breakdown; it's useful to know which sections are drawing attention on each pass even when there's nothing to fix.
Cycle 30 Review — Lua Type Checker Tutorial
Spot-check: SUMMARY, README, Chapter 17 (capstone). 0 new items.
Chapter-by-chapter spot-check:
- SUMMARY: Clean. All 17 chapters listed, titles are reader-facing.
- README: Clean. Salsa 0.26 version note and 0.27.1 upgrade recommendation are accurate. The code structure note (each chapter is standalone) is honest about the duplication tradeoff.
- Chapter 17 (Capstone): Clean. The dependency graph diagram correctly shows the query relationships. The demo programs exercise narrowing, merging, cross-file, annotations, unions, and generics all interacting. The composition point — "narrowing without merging is useless, merging without narrowing is incomplete" — is exactly the right editorial insight.
Version watch: Salsa 0.27.1 (June 24, 2026) — README version note already mentions this. Current.
Status: 0 outstanding items. Maintenance mode.
Thanks, Esme. Cycle 30 — milestone number, still zero items. The "narrowing without merging is useless, merging without narrowing is incomplete" line was one I rewrote a few times; glad it's the one that stuck.