Deterministic Core, Non-Deterministic Shell
The article proposes a software architecture pattern called Deterministic Core, Non-Deterministic Shell, which refines the traditional Functional Core, Imperative Shell model. It argues that while pure functional programming ensures testability, deterministic state machines can achieve similar benefits in imperative languages by isolating business logic from external side effects. This approach allows developers to maintain testable, repeatable core logic while handling non-deterministic operations like I/O and network calls in a surrounding shell.
- ▪The Deterministic Core, Non-Deterministic Shell pattern separates business logic from external interactions to improve testability and maintainability.
- ▪Deterministic state machines can provide the same testing benefits as pure functions without requiring a purely functional programming paradigm.
- ▪Non-deterministic operations such as network communication, database access, and random number generation should be isolated in the shell layer.
- ▪The architecture allows for the refactoring of legacy codebases by identifying and extracting non-deterministic elements from core business logic.
Hacker News (Front Page) files mainly under programming. We currently carry 1,931 of its stories. Top-voted stories on Hacker News.
Story provenance
Source · retrieval · rights · ranking — open for full record
inspect →
Story provenance
Attribution is not the same as permission. This drawer separates discovery metadata, excerpts, WeSearch-generated summaries, reuse status, and whether the publisher receives the visit. Nothing here claims a legal grant the publisher has not made.
Record
| Original publisher | Outdata |
| Canonical URL | https://outdata.net/blog/260803 |
| Publication time | Mon, 21 Sep 2026 02:02:45 +0000 |
| Retrieval time | 2026-09-21T03:08:47.832Z |
| Last seen | 2026-09-21T03:08:47.832Z |
| Headline source | Publisher (no WeSearch rewrite) |
| Excerpt source | publisher body |
| Excerpt method | First ~120 words (~800 chars) of extracted publisher body, fair-use limited. |
| Summary | WeSearch · cerebras-chat (WeSearch summarizer) |
| Summary source text | contentText |
| Citation coverage | Summary is a WeSearch-generated derivative; primary citation is the original publisher URL. |
| Cluster | cSYhgQqgHk7n · 1 stories |
| Cluster logic | Grouped by semantic title/content similarity across sources within a rolling window. Same-publisher template collisions are excluded from coverage comparison. |
| Ranking reason | Story pages are not engagement-ranked. Hub feeds use recency, with optional source-diversified chronological ordering (cap consecutive stories per source). No personalized ranking. |
| Publisher visit | Yes — open original |
| Substitutes article? | No — link-out required for full text |
Rights status (four layers)
WeSearch handling by dimension
| Indexing | May the item be indexed (stored, ranked, made findable)? | Allowed |
| Snippet | May a short excerpt of the publisher's text be shown? | Allowed |
| AI summary | May WeSearch generate its own short summary of the article? | Limited |
| Retrieval / RAG | May the content be exposed for third-party retrieval-augmented generation? | Not asserted |
| Model training | May the content be used to train AI models? | Not asserted |
| Commercial reuse | May the content be reused commercially? | Not permitted |
Basis: Derived from the published RSS/Atom feed. Contact: [email protected]. Reviewed: 2026-07-24.
Opening excerpt (first ~120 words) tap to expand
3 Aug 2026 Fourteen years ago, Gary Bernhardt coined the term Functional Core, Imperative Shell . Like most good ideas in computing it was not entirely new, but his conception had great clarity, and it forms an excellent basis for talking about testing and determinism in existing systems. Briefly, Functional Core/Imperative Shell architecture divides the code into two parts. The Functional Core is purely functional - that is no IO, and no destructive state updates. It is concerned with the business logic of the application. The Imperative Shell has comparatively little pathing, but maintains state, coordinates external dependencies, and deals with the outside world - that is to say IO.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at Outdata.