Indeed, Seb is correct. If you run the following:
libbi rewrite --model-file MV.bi --with-transform-obs-to-state
you will see the internal view of your model after transformation (when
you use --target joint, as when generating data, the
--with-transform-obs-to-state flag is automatically applied). Note how
the body of the observation block is shifted into your initial and
transition blocks, and your init file will be read *after* the initial
block is executed. So the first observation is using the value of mu
simulated from the prior, not that from your init file.
This behaviour would be tricky to change. A workaround would be to make
the initial value of mu a parameter itself. Call this mu0, say. Then in
your parameter block:
mu0 ~ normal(0.0, 1.0)
and in your initial block
mu <- mu0
Then put mu0 in your init instead of mu.
Cheers,
Lawrence