Debate framed in Joel Drapper's talk: static type checking (Sorbet, RBS+Steep) requires complete annotation or inference over the whole system, is hard to combine with metaprogramming, and roughly doubles the code written — bugs scale with lines of code, so more annotations means more surface area. Runtime types (e.g. via Literal) enforce at object boundaries, are always compatible with existing code, require no migration, work with metaprogramming, fail fast with great error messages, and give ~80% of the safety for a fraction of the effort — the 'Goldilocks' middle ground.