--- status: historical created: 2026-09-12 archived: 2026-09-12 reason: "Record of the deliberate contract break taken when the two profile-roster patterns' Join verb stopped declaring an empty closed event." --- # Profile rosters: the Join verb's event opens `profile-roster-live-demo.tsx` and `shared-profile-roster/main.tsx` declared their Join verb as `handler` with `JoinEvent = Record`: an empty object with `additionalProperties: false`. That was a declaration that the verb takes nothing, written before the runner enforced it. The runner now does (`closedWorldEventRejection`, verb contract WS-C, C5): a payload with any undeclared field against a closed event schema fails the handling before the body runs. A rendered `