Gary Bernhardt's Functional Core/Imperative Shell architecture separates code into pure business logic and stateful I/O handling. The article extends this concept to Deterministic Core/Non-Deterministic Shell, arguing that determinism rather than pure functionality is key to testability, and that non-deterministic operations like RNG, networking, and database calls should be isolated in the shell layer.