It is something I am still trying to understand intuitively, but it seems the consensus is that we should treat our data as being completely deterministic, and any other type of noise should be explicitly modeled outside the likelihood.
Within the PyMC3 API in particular, the Deterministic should definitely not be used for observed, it is just an edge case that is not checked for.
Does this achieve the same goal?
alpha = pm.Exponential('alpha', 0.2)
beta = pm.Exponential('beta', 0.2)
latent_raw = pm.Beta('latent_raw', alpha=alpha, beta=beta)
wpp = pm.Normal('wpp', mu=latent_raw, sigma=0.0001, observed=raw_observed)