OptionalproposalsWhether proposals is this commit's COMPLETE proposal list. Defaults to
true; every seam that replays or builds a commit has the full list.
Set to false only by callers that hold a partial list — currently just
validateLegalityWithoutProposals (src/engine/fork-recovery.ts), which
can recover the committer index off the wire but not the proposals. The
distinction is load-bearing (CR-01): "matches no proposal" only justifies
the terminal unattributable verdict when the proposals were actually in
hand. With an incomplete list, a legitimately added member's leaf matches
nothing merely because its Add is missing, so it must stay undecidable
rather than terminally reject an otherwise legal commit.
The classification input classifyChangedLeaf needs: the commit's full proposal list (bare or sender-attributed — normalized internally) and its committer's MLS leaf index, when known.