I think you’re misusing sample_posterior_predictive. This function doesn’t just generate draws from the posterior. Instead ,it generates draws from a target variable by replacing all other variables on which it depends with their posteriors. See this post for an explanation.
Also it looks like knot_exponent
has a Gamma prior, not a Beta prior, so the reported range isn’t unexpected?