Phase 6 of RFC-PLUGIN-EVENTS. Tracker: flow-codegen#11.
Scope
Cross-repo cleanup once phases 1-5 are stable: convert every in-tree flow to the new form, deprecate then remove labelle-box2d's raw callback slots, and delete flow-codegen's legacy OnEvent codegen.
- Convert in-tree flows. Run the phase-3
legacy_onevent_to_name converter on every .flow.jsonc in the toolkit — bouncing-ball, flying-platform-labelle, bakery-game (and any other shipped game with OnEvent flows). Commit per-repo.
- labelle-box2d deprecation. Mark the
pub var on_collision_begin / on_collision_end / on_collision_hit / on_sensor_enter / on_sensor_exit slots (labelle-box2d/src/root.zig:90-95) deprecated. After a deprecation window (one release), remove them entirely and drop the raw-slot calls from processContacts / processSensorEvents (they become game.emit-only — the dual-emit code added in phase 2 becomes the only emit).
- flow-codegen legacy deletion. Drop the v1
renderEventEntry legacy path (codegen.zig:517-575 — the setup() + flowEvent + slot-assign codegen). Remove the legacy module/callback/params fields from flow_io.Event.OnEvent. Update / delete tests pinning the legacy form.
This is cross-repo. The legacy renderEventEntry deletion is the most concrete artifact; the box2d deprecation can be split into its own follow-up sub-ticket if a longer deprecation window is wanted.
Success criteria
- No
.flow.jsonc in the toolkit uses the legacy module+callback+params form.
labelle-box2d exposes only pub const Events — the pub var on_collision_* slots are gone.
flow-codegen's renderEventEntry is single-path (new-form only); the legacy code-path is deleted; the test suite is green.
Blocked on
References
- RFC: Migration, Phased plan §6.
Phase 6 of RFC-PLUGIN-EVENTS. Tracker: flow-codegen#11.
Scope
Cross-repo cleanup once phases 1-5 are stable: convert every in-tree flow to the new form, deprecate then remove
labelle-box2d's raw callback slots, and delete flow-codegen's legacyOnEventcodegen.legacy_onevent_to_nameconverter on every.flow.jsoncin the toolkit —bouncing-ball,flying-platform-labelle,bakery-game(and any other shipped game withOnEventflows). Commit per-repo.pub var on_collision_begin/on_collision_end/on_collision_hit/on_sensor_enter/on_sensor_exitslots (labelle-box2d/src/root.zig:90-95) deprecated. After a deprecation window (one release), remove them entirely and drop the raw-slot calls fromprocessContacts/processSensorEvents(they becomegame.emit-only — the dual-emit code added in phase 2 becomes the only emit).renderEventEntrylegacy path (codegen.zig:517-575— thesetup()+flowEvent+ slot-assign codegen). Remove the legacymodule/callback/paramsfields fromflow_io.Event.OnEvent. Update / delete tests pinning the legacy form.This is cross-repo. The legacy
renderEventEntrydeletion is the most concrete artifact; the box2d deprecation can be split into its own follow-up sub-ticket if a longer deprecation window is wanted.Success criteria
.flow.jsoncin the toolkit uses the legacymodule+callback+paramsform.labelle-box2dexposes onlypub const Events— thepub var on_collision_*slots are gone.flow-codegen'srenderEventEntryis single-path (new-form only); the legacy code-path is deleted; the test suite is green.Blocked on
References