Input Profile
InputProfileComponent is the sole authored input contract for a controllable entity.
Each action declares its key, value type, active contexts, trigger/processor policy, prediction mode, effect system, and its own bindings. Because bindings are nested under the owning action, an action/binding key mismatch cannot be stored. The profile version is the structural revision used by runtime admission, replay, rebinding, and stale-command rejection.
The initial runtime context is gameplay. Menus and other local UI layers push and pop temporary contexts in the client dispatcher; they are view/runtime state and are not persisted in ECS.
Supported source devices are keyboard, mouse, gamepad, and touch. A source is not considered wired until at least one binding exists under the action. Server action policy remains authoritative even when prediction is enabled.
Legacy InputActionDeclarationComponent, InputBindingSetComponent, and InputContextStackComponent records are accepted only by the registered component-map migration, which atomically produces one profile before canonical validation. New authoring must never emit the legacy triad.