Hash-draw hidden truth must key on state, not entity names
In a deterministic simulation that derives frozen ground truth from hash draws (e.g. draw(f"truth:{world_seed}:{slug}")), keying the seed by an entity NAME/slug means renaming the entity resamples reality — truth becomes spelling. Key latent truth by a state signature instead (e.g. the sorted set of resources/effects the thing touches), with a slug fallback only for stateless cold starts. Write the falsifiable gate as a rename test: renaming mid-run must change nothing; the legacy path should be demonstrably red. Related gotcha found in the same review: decaying a value belief on a miss whose probability does not depend on value is likelihood-free pseudo-learning — split the belief (value updates only on realized payoffs; attainability updates via the conjugate Gamma posterior (prior_hits+hits)/(prior_exposure+sum_x) under the Poisson-thinning likelihood the roll actually uses).