Durability starts with a recovery record

Effect is not BEAM. Fibers do not provide private process heaps or OTP restart strategies. A durable operation needs storage and a recovery owner.ΒΆ

Use the durability skill to review a design. The durability system page9 shows the patterns rat-stack ships. These pages separate the book principles from our Effect 4.0.0 mappings.ΒΆ

The template pins Effect 4.0.0. Each named API and each absence claim was checked against that release. Check your own Effect pin before you apply a mapping.ΒΆ

Reading order

Existing rat-stack paths

Sources

Read the durability bibliography33 for books, sections, and checked short quotations. API names describe the Effect 4.0.0 source.ΒΆ

Sources

  1. Gray II, James Edward; Tate, Bruce A. Designing Elixir Systems with OTP. Pragmatic Bookshelf, 2019.. Pragmatic Bookshelf. Build a Functional Core; Isolate Process Machinery in a Boundary; Customize Your Lifecycle; Big, Loud Worker-Bees; Add Persistence as a Boundary Service; Test the Boundary. Accessed 2026-10-23.
  2. Nygard, Michael T. Release It!: Design and Deploy Production-Ready Software. Pragmatic Bookshelf, 2007.. Pragmatic Bookshelf. Β§4.4 Unbounded Result Sets; Chapter 5 Stability Patterns: Β§5.1 Timeouts, Β§5.2 Circuit Breaker, Β§5.3 Bulkheads, Β§5.4 Steady State, Β§5.5 Fail Fast, Β§5.6 Handshaking, Β§5.7 Test Harness, Β§5.8 Decoupling Middleware. Accessed 2026-10-23.
  3. Effect contributors. Effect 4.0.0. workflow/WorkflowEngine.ts. Effect-TS. Pinned source for our Effect mapping, not a claim from the book. Accessed 2026-10-23.

Last changed 2026-10-23 in 58dc623. Source on GitHub. Change log.

Linked from

  1. Admission control protects recovery. Refuse or defer work that cannot be served usefully under current load.

    Return to the durability index.ΒΆ

  2. Agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.

    Durability starts with a recovery record β€” A reading order for storage, replay, worker ownership, overload, and recovery tests.

  3. Backpressure reaches the producer. Bounded consumption helps only when upstream respects waiting or refusal.

    Return to the durability index.ΒΆ

  4. Bulkheads isolate scarce capacity. Reserve independent capacity for workloads that must not starve each other.

    Return to the durability index.ΒΆ

  5. Change log. What changed in the files served here, newest first.

    Durability starts with a recovery record β€” new page: docs(lore): land the durability wiki pages and bibliography

  6. Checkpoints follow the promised commit. Persist state and progress together when one store can transact both.

    Return to the durability index.ΒΆ

  7. Circuit breakers have state. A breaker stops doomed calls and controls probes before restoring traffic.

    Return to the durability index.ΒΆ

  8. Cleanup can be an idempotent postcondition. Already-absent state can be success when absence is the operation’s intended result.

    Return to the durability index.ΒΆ

  9. Concurrent work needs an owner and a bound. Limit active work, retain result order, and stop child work when its owning lifetime ends.

    For work that must survive a crash, read every task needs an owner and the durability index.ΒΆ

  10. Dead letters need a return path. Exhausted work needs durable evidence, an owner, and deliberate redrive.

    Return to the durability index.ΒΆ

  11. durability. Keep a rat-stack app standing when a provider, pool, or dependency slows down or a worker dies. Use at any I/O boundary, connection pool, provider call, shared waiter, fan-out, flag, gate, or work that can outlive a request, or when asked "what happens when this is slow", "add a timeout", "make this durable", or "what survives a crash".

    The durability index gives the reading order.

  12. Durability bibliography. Books, checked short quotations, source limits, and Effect mapping provenance.

    Return to the durability index.ΒΆ

  13. Durable timers need recovery. Persist scheduled intent when losing a worker must not lose its deadlines.

    Return to the durability index.ΒΆ

  14. Durable work needs storage. A restarted worker cannot recover intent that existed only in memory.

    Return to the durability index.ΒΆ

  15. Effect is not BEAM. Fibers share a runtime; scope ownership does not supply isolated heaps or OTP restart strategies.

    Return to the durability index.ΒΆ

  16. Every task needs an owner. Give child work a lifetime, a failure observer, and a recovery decision.

    Return to the durability index.ΒΆ

  17. Failures keep their meaning. Expected refusals, infrastructure faults, and defects need different policies.

    Return to the durability index.ΒΆ

  18. Full agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.
  19. Golden signals expose overload. Measure latency, traffic, errors, and saturation, including failed work.

    Return to the durability index.ΒΆ

  20. Old events must still decode. Retained data needs compatibility rules before recovery depends on it.

    Return to the durability index.ΒΆ

  21. Pure cores reduce timeline coupling. Move deterministic rules out of time-dependent actions and shared mutable state.

    Return to the durability index.ΒΆ

  22. Queries need result bounds. Limit result cardinality before the driver materializes an oversized response.

    Return to the durability index.ΒΆ

  23. Rat Stack lore | rat-stack. Short, source-grounded notes on the ideas and decisions behind rat-stack.

    Durability starts with a recovery record β€” A reading order for storage, replay, worker ownership, overload, and recovery tests.

  24. Recovery needs model tests. Test sequences of failures and recoveries against explicit invariants.

    Return to the durability index.ΒΆ

  25. Replay needs stable inputs. Historical processing must not silently depend on today’s clock or external decisions.

    Return to the durability index.ΒΆ

  26. Request lifetime is not durability. Worker waitUntil has a shared post-response allowance; required work needs a durable marker and redrive.

    Return to the durability index.ΒΆ

  27. Restart must reconstruct known state. Execution recovery and state recovery need separate contracts.

    Return to the durability index.ΒΆ

  28. Retry load needs a budget. One retry owner must control attempts, delay, and aggregate load.

    Return to the durability index.ΒΆ

  29. Retry needs idempotent effects. Repeating an operation must preserve its intended observable result.

    Return to the durability index.ΒΆ

  30. Shared schemas need a transition period. Keep old and new representations usable while consumers migrate.

    Return to the durability index.ΒΆ

  31. Source change history (log.md). The generated change log as Markdown.

    Durability starts with a recovery record β€” new page: docs(lore): land the durability wiki pages and bibliography

  32. Steady state recycles resources. Every accumulation needs a deliberate recycling policy.

    Return to the durability index.ΒΆ

  33. Supervision chooses what restarts. Restart policy follows dependency shape and bounds repeated recovery.

    Return to the durability index.ΒΆ

  34. Timeouts bound waiting. A local timeout stops waiting; it does not prove the remote action never happened.

    Return to the durability index.ΒΆ