1. Engine semantics
- [x] 1.1 Update contact resolution so a surviving entity with both
YOUandWINmarks the level won after transformations and destruction. - [x] 1.2 Preserve
SINKthenDEFEATprecedence and ensure removed same-entityYOU+WINentities cannot win. - [x] 1.3 Confirm settled
won,destroyed,controlLost, and later-movement behavior remain deterministic.
2. Engine regression coverage
- [x] 2.1 Add fixtures for same-entity
YOU+WIN, distinct-entityYOU+WIN, and proof 03'sMIAU IS YOU AND WINrule. - [x] 2.2 Add SINK/DEFEAT precedence fixtures, including a same-entity
YOU+WINentity destroyed during contact. - [x] 2.3 Verify undo and reset restore the pre-win state and that dynamic rule changes still update the winning predicate.
- [x] 2.4 Run the full Node suite with the bundled CommonJS mods loaded and confirm existing rule changes, mod loading, and settled events remain green.
3. Browser acceptance
- [x] 3.1 Play proof 03 through the verified keyboard path and verify the settled win event opens the existing Win scene; retain shared touch/gamepad coverage in the browser suite.
- [x] 3.2 Verify the browser shows the same proof 03 win after a rule change, while reset and undo remain available and deterministic.
- [x] 3.3 Run the browser acceptance suite with the existing Workshop/Gift and mod-loading checks, and confirm no new console errors.
4. Verification and handoff
- [x] 4.1 Run the production build and record the focused regression result alongside the current 134 Node and 35 browser checks.
- [x] 4.2 Recheck the active stage integration against the settled
wonevent without changing the stage visual contract.