# Session save — to be continued Date: 2026-10-02. HEAD: `7dbd516` (`express-draft-v1`). Tree clean. ## Where we are `src/compiler/` holds the re-read compiler: `COMPILER/SCANNER/ERRORS/CODEGEN` fully renamed + verified clean of numbered identifiers; `SYMTAB.MOD` draft v1 (988 lines, 27 FIXMEs); `EXPRESS.MOD` draft v1 (1489 lines, 137 FIXMEs, 20 FORWARD work-list helpers); `SYMTAB.DEF` expanded (words 10–27); `FRONTEND.md` export map incl. newly found EXPRESS internals; `docs/compiler/` analysis. ## How we work * Upstream dirs git-ignored; only `docs/`, `src/`, `SUMMARY.md`, `SESSION.md` versioned. * Decompile in parallel background workers (3–4 groups per module), each returns Modula-2 with `{/* offset */}` comments; assemble + normalize via script (`Compiler.word6–26`, `Scanner.word2–12`, `Doubles.proc5–11` mappings); verify with `grep -nE '\b(param|local|global|proc|PROC)[0-9]+\b'`. * Drafts are unverified by design: MCD `unassemble.c` diff still pending for all. * Commit per step, tag per milestone (`*-v1`). ## Next steps (in order) 1. `STATEMEN` bodies (`statement.txt`, 1793 lines): `ParseStatement` dispatch, `GuardedStatSeq`, `ParseFor/ParseCase/ParseIf/...`, block tails — 2 workers. 2. Pass1 bodies (`pass1.txt`, 2975 lines): `~ParseType` (02e6), `ParseRecord`, formals, decls, module heads, `WriteSym` — 3–4 workers. 3. Resolve `SYMTAB.MOD` FIXMEs (AllocSym arity, D-group sketches, LSL) and `EXPRESS.MOD` FORWARDs (CentralError/PushOperand/EmitOp/BoolCondHelper/...). 4. `GENZ80` native backend (untouched so far). 5. Recompile + `unassemble.c` MCD diff verification for every draft. 6. Refresh `SUMMARY.md` + retag when milestones land.