- rewrite every built-in as EventXxx implements BuiltInFunction<P, E>
(setBlock/moveBlock/deleteBlock/moveHero/moveHeroStep/touchFront/
insertEvents/insertEvent), matching the EventSetBlock reference style
- move shared helpers to event/utils.ts (getPossibleMap, getPossibleLayer,
getEventExecutor, enter/exitEventInsert); utils is not exported via index
- move per-class helpers into private methods (EventTouchFront and
EventInsertEvents collectInvocations)
- use IObjectMover.push for move sequences instead of manual step calls
- registrations.ts: one createEventRegistrations() writing the eight entries
in order, categories separated by single-line comments
- remove EventBuiltinName; classes own short string names
- update event tests; core.ts uses createEventRegistrations
- Convert map, hero, event, and registration-assembly function JSDoc
into multiline form for every touched declaration
- Preserve export-only barrels, class-owned registration order, direct
Statement[] insertion, hero front-touch ownership, and Chinese event
test comments
- Assert the real eight-entry class registry, fresh per-group instances,
and the three-map/three-hero/two-control ownership split
- Prove every class owns its stable name and function, classes originate
from their owning modules, and hero owns the front-touch registration
- Verify both event barrels stay export-only while prior public event
symbols remain reachable from the data-state root index
- Add event/registrations.ts as the sole direct-construction assembler for
the eight class-based registrations in stable map/hero/control order
- Reduce event/index.ts and data-state/src/index.ts to export-only barrels
that re-export the four public registration creators
- Point CoreState at event/registrations and record the ownership and
public-export boundaries in the event contract
- Replace generic per-invocation registration factories with explicit
SetBlock/MoveBlock/DeleteBlock, MoveHero/MoveHeroStep/TouchFront, and
InsertEvents/InsertEvent registration classes
- Move eventTouchFront, invocation collection, and target resolution into
the hero event layer while keeping awaited OnTouch behavior
- Keep map and control modules limited to their own registration ownership
- Exercise eventInsertEvent with an inline Statement[] body
- Prove the body mutates the event layer without an event-store id
- Document the superseding direct-body event contract
- Accept anon-tokyo Statement[] bodies for eventInsertEvent
- Execute bodies through the existing interpreter without event-store lookup
- Preserve eventInsertEvents as the ordered id-sequence path
- Keep the barrel limited to registration assembly and exports
- Give map, hero, and control modules typed registration builders without hot-path shape validation