Thank you @RavinKumar - the versions are:
PyMC: 4.2.2
Aesara: 2.8.7
So I did find a fix and that is the observation that n_exclusive_id may also be constrained by providing its observed value as n_exclusive_id_by_source_assumption.sum()
So essential replacing
n_exclusive_id = pm.Binomial('n_exclusive_id',
n=n_unique_id_observed,
p=p_exclusive_id)
with
n_exclusive_id = pm.Binomial('n_exclusive_id',
n=n_unique_id_observed,
p=p_exclusive_id,
observed = n_exclusive_id_by_source_assumption.sum())
I guess I was expecting that providing this additional constraint to the model was not necessary as I thought the model would have converged to this value of n_exclusive_id_by_source_assumption.sum() for n_exclusive_id, on account of the specification that n_exclusive_id is the number of trials for n_exclusive_id_by_source.
However it appears that the initial value checks do not have any way to infer this implicit constraint and hence is unable to reconcile the initial (internally proposed) value for n_exclusive_id with the observed value provided for n_exclusive_id_by_source.
Been getting tripped up quite frequently with initial value checks - would really appreciate being pointed to a resource that will help me understand the overall motivation and desired impact of running the initial value checks.