Walking skeleton: one let? shape end-to-end
Goal
End-to-end minimal slice: parser accepts let? (Some(x), rest) = t; as a block statement, typeck routes it through the general None-propagation rule, canon desugars it to a two-arm match, and one evaluator spec test runs green (debug). Proves the pipeline seam before any breadth work.
Implementation Sketch
Scope contract: the approved proposal (compiler_repo/docs/ori_lang/proposals/approved/fallible-let-binding-proposal.md) - Design + Semantics + Spec & Grammar Impact sections govern this section verbatim; no scope invention. TDD: the failing test matrix for this section’s shapes lands before implementation; debug AND release verified at close.
Spec References
- compiler_repo/docs/ori_lang/proposals/approved/fallible-let-binding-proposal.md
- compiler_repo/docs/ori_lang/v2026/spec/16-control-flow.md (16.0.3, 16.5, 16.6, 16.7)
- compiler_repo/docs/ori_lang/v2026/spec/15-patterns.md; 13-variables.md; grammar.ebnf
Work Items
- Land the minimal slice across parser -> typeck -> canon -> evaluator with one green spec test pinning
let? (Some(x), rest) = pair;in an Option-returning function