Outcome of transferPosture. On success the controller emits its
verb-specific narration; on failure the controller emits the
summary as a Scene frame and ctx.note({kind: 'controller-rejected', reason}) so the dispatch-response envelope carries the structured
signal. verb is folded into the "no-accepting-slot" message
("you can't sit on the wallpaper") since that's the one failure
mode where verb name reads naturally.
reason is a stable kebab-case identifier that controllers
forward into the controller-rejected note kind: 'no-posture-slot'
when the target accepts no slot for this posture, 'occupied' when
every candidate slot is full, 'transfer-failed' when the
underlying SlotApi.transferOccupancy throws.
Outcome of
transferPosture. On success the controller emits its verb-specific narration; on failure the controller emits the summary as a Scene frame andctx.note({kind: 'controller-rejected', reason})so the dispatch-response envelope carries the structured signal.verbis folded into the "no-accepting-slot" message ("you can'tsiton the wallpaper") since that's the one failure mode where verb name reads naturally.reasonis a stable kebab-case identifier that controllers forward into thecontroller-rejectednote kind:'no-posture-slot'when the target accepts no slot for this posture,'occupied'when every candidate slot is full,'transfer-failed'when the underlyingSlotApi.transferOccupancythrows.