According to the Functional Mock-up Interface 2.0.4 standard page 50, fmi2SetXXX for causality = "input" can be called during initialization (after calling fmi2EnterInitializationMode) but not before.
However, in fmusim the inputs are applied before, e.g. or ME:
https://github.com/modelica/Reference-FMUs/blob/18adfad01bd939b388313c83c0465c84c11febac/fmusim/fmusim_fmi2_me.c#L49C1-L76C45