Skip to content

docs(contract): document the 'advance/ack an edge only when the event is emitted' invariant #24

@apotema

Description

@apotema

Three independent backend agents (raylib #246, iOS #251, engine FIFO #610) made the same slip: advancing the per-slot 'previously seen' state even when the out-buffer was full, losing the transition forever. Document on the GamepadEvent/pollGamepadEvents/Source.pollEvents contract that an implementation must only advance/ack a connect/disconnect edge once it has actually written the event to out, so an undelivered edge re-fires on the next drain. Part of the controller-support epic labelle-toolkit/labelle-engine#609.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions