Skip to content

Phase 2j-b/c + 7d-c AST disjoint policy + MIR in-out write-back

Summary

Adds private def, true var object write-back in MIR for CallProc/MethodCall receivers, and AST-first parallel disjoint policy checks; physics integrate stays -> unit without return-assign.

Agent continuation

  1. Read docs/superpowers/plans/2026-05-20-li-oop-roadmap.md § 2j-d (inheritance v1).
  2. Run LI_REPO_ROOT=$PWD cmake --build build && LI_REPO_ROOT=$PWD ./li-tests/run_all.sh (expect 152 pass).
  3. Then merge #134 after merge-approved + review; add inheritance_layout.li / override_mismatch.li per roadmap.
  4. Blocked on httpd packages — other agents own #84 / #87.

Changed

Path What
compiler/mir/lower.cpp lower_callproc_with_optional_inout__li_o_wb* copy-in/out for var object first param
compiler/ast.hpp, parser.cpp, import_resolve.cpp ProcDecl.visibility; private def / public def
packages/li-physics-rigid, li-physics-runtime rigid_integrate_semi_implicitunit (in-out, not return)
li-tests/composable/import_physics_runtime.li stmt call; verify_ok; runtime exit 0
li-tests/encapsulation/* private_method_*.li, object_method_mutate.li (c.bump() no assign)
compiler/types/policy.cpp, policy_module.cpp AST-first disjoint; false-proof string guard
.cursor/rules/li-test-driven-validation.mdc Merge premise: pass/fail tests prove capabilities
Master plan + OOP roadmap trackers 2j-a/b/c exit gates met

Not changed

  • packages/li-http/**, li_rt_httpd.c serve paths.
  • 2j-d–f traits/inheritance/method VCs; 2i matrix @ lowering.
  • Full G-lean certificate (2f).

Breaking

N/A — rigid_integrate_semi_implicit remains -> unit; callers use stmt or method call (write-back), not return-assign.

Security

N/A — stronger private API surface on import.

Performance

N/A — extra MIR copy for var object in-out (correctness path; alias opts later).

Downstream

  • Physics integrators: call rigid_integrate_semi_implicit(body, …) without assignment.
  • Benchmarks ingest unchanged; composable smoke asserts integrated pz.