Skip to content

Build log: syntax becomes a lesson

Week of July 19, 2026 · Milestone M4 complete

Codemble can now teach the Python constructs already present in a learner’s project. The adapter detects eight concept families with the standard-library AST: decorators, comprehensions, generators, context managers, async/await, dunder methods, exception handling, and type hints.

Every annotation belongs to one lexical structure. A parent module does not inherit syntax found only inside a child function or class. Each annotation carries its real line span and source snippet in deterministic graph schema 2. That evidence flows through two model-free views:

  • the Python Lens maps only detected concept IDs to concise teaching notes and links every note to its exact file:line
  • the star chart aggregates encountered concepts, records structures studied during the current session, and reserves Understood for check-derived state

Viewing source is not treated as mastery. That distinction is visible in the UI: opening a structure increments Studied for its concepts while Understood stays dark until the next milestone’s graph-only checks pass.

Acceptance evidence: exact concept ownership and Lens/source equality are covered by tests; a fixture with all eight concept families was exercised in the production UI; the chart updated only the studied structure; desktop and 320 px browser checks showed no overflow or console errors; Python, Ruff, Vite, Astro, and docs gates are green.

M5 is next: graph-only checks, permanent illumination, and file-scoped progress invalidation.