-
-
Notifications
You must be signed in to change notification settings - Fork 0
tracking: ADR-022 Polonius origin/region variables — implementation M1–M4 (lib/borrow_polonius/) #553
Copy link
Copy link
Open
Labels
choreRoutine maintenance with no behaviour changeRoutine maintenance with no behaviour changefeeds:valence-shellFeeds valence-shell's proofs/engineering (D127): judge progress by what it contributes thereFeeds valence-shell's proofs/engineering (D127): judge progress by what it contributes theremeta:umbrellaParent issue aggregating child issuesParent issue aggregating child issuespriority:p3Low - nice to haveLow - nice to havescope:repoConfined to this repositoryConfined to this repository
Description
Activity
Metadata
Metadata
Assignees
Labels
choreRoutine maintenance with no behaviour changeRoutine maintenance with no behaviour changefeeds:valence-shellFeeds valence-shell's proofs/engineering (D127): judge progress by what it contributes thereFeeds valence-shell's proofs/engineering (D127): judge progress by what it contributes theremeta:umbrellaParent issue aggregating child issuesParent issue aggregating child issuespriority:p3Low - nice to haveLow - nice to havescope:repoConfined to this repositoryConfined to this repository
Why this issue exists
ADR-022 (docs/decisions/0022-polonius-origin-variables.adoc, merged via PR #407, 2026-05-27) is the declared residual behind the CORE-01 closure (#177 / PR #473) — yet as of 2026-06-11 it had no open tracking issue,
lib/borrow_polonius/does not exist on main, and the M1 sketch existed only as a local unpushed branch. This issue is the tracking record.Current state
lib/borrow_polonius/, surface syntax elided for v1, M1–M4 gates) — but the ADR'sStatus::field still readsProposed(0022:9; also META.a2ml). Flip the field or note the ratification inline.lib/(ast.ml:60-62TyRef/TyMutare bare constructors).core-01/polonius-m1-sketch(b28757c, "M1 of ADR-022 — origin_var option on TyRef/TyMut + b_origin") — pushed 2026-06-11 from the previously-local-only branch noted in SESSION-HANDOFF-2026-05-27.adoc:24-26.Scope (from ADR-022)
origin_var optiononTyRef/TyMut, behaviour-neutral.lib/borrow.mlincludingstate.moved/ref_bindings/callee_owned_params/merge_arm_results.Why this is soundness, not precision
ADR-022's own context section concedes the lexical checker cannot reason about cross-function borrows (
callee_owned_paramsis a name-set heuristic, "not a constraint discharge") and loop soundness is a 2-iteration heuristic. A probe-verified false negative now demonstrates the gap is live — see the companion soundness issue (filed same day). The ADR's "residual = precision" framing should be corrected to "residual = soundness".Related
lib/borrow.ml:1756-1768"Still deferred" trailer (includes the quantity-checker integration note for captured linears).Filed from the 2026-06-11 whole-picture survey.