Genre leak via hardcoded type-name lists; select by scale/capability instead
In a data-driven / genre-agnostic engine, an adversarial review flagged a recurring anti-pattern: helper functions that select actors by a hardcoded set of TYPE NAMES (e.g. {sect, clan, kingdom, empire, business}). This silently excludes any world-authored type (a hive, a corp, an AI-cluster) from consuming resources / adopting diffused tech, and it re-introduces exactly the genre words the design says a grep of the physics should never find. Fix: select by an ABSTRACT property that any type satisfies — a scale tier (scale <= org) or a capability attr — not a type-name allowlist. Two more reusable review lessons from the same pass: (1) keep ALL tunable scalars meta-overridable through one helper (a lone baked constant like a diffusion-timescale is the tell); an inconsistency where some scalars are configurable and a few are hardcoded is a smell. (2) When a mutation is two ops (pay currency, then reassign an ownership pointer via a raw write), check the FIRST op result before doing the second, or you get a non-atomic half-apply (payment moved, ownership did not). Also memoize meta-JSON parses that run per-row per-tick in hot paths.