A clean playground

Every package must do useful work and stay easy to add and remove. This is the house rule behind the “clean playground” name. A cartridge38 is a package for one job, with the resources that job needs. It must stay self-contained and easy to delete.

Everything built here must do real work. VISION.md rejects toy examples that exist only to demonstrate a pattern.

rat-stack is a reference that other projects copy and maintain as source.

Its example CLI inspects real files. Its database cartridge11 owns a RunLog service and Layers for two database implementations.

A service is a named interface for a job. A Layer describes how to build services and supply their dependencies. The website’s search and read capabilities28, named actions with shared contracts and handlers, serve the public repo. Each piece does real work.

The clean-playground test asks what remains when one package is removed. Removal must leave other packages’ import paths unchanged, keep resource connections contained, and pass all required checks, tests, and builds.

VISION.md describes the cartridge test. AGENTS.md assigns each package one job and sets the required checks.

Analytics18 supplies another working package, with an explicit removal checklist. Interest signup14 keeps delivery in an adapter package30 outside core. One-line infrastructure removal remains unproven for that adapter.

See cartridges38 for the infrastructure example and the fence50, the compiler checks, lint rules, tests, and hooks that enforce these rules.

Sources

  1. rat-stack/VISION.md at main · joelhooks/rat-stack · GitHub. GitHub joelhooks/rat-stack. Product vision; used for the cartridge test and rejection of toy examples. Accessed 2026-10-01.
  2. rat-stack/.brain/projects/layer-startups.svx at main · joelhooks/rat-stack · GitHub. GitHub joelhooks/rat-stack. Layer-startup decision; used for the self-contained construction boundary. Accessed 2026-10-01.

Last changed 2026-10-07 in e73c9d9. Source on GitHub. Change log.

Linked from

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

    A clean playground — rat-stack does real work with packages that stay easy to add and remove.

  2. Cartridges. A cartridge owns one job and brings the infrastructure its service needs.

    See one capability, every surface for the shared contract and a clean playground for the house rule behind these boundaries.¶

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

    A clean playground — new page: Initial commit from joelhooks/rat-stack template

  4. Effect keeps the surfaces on one contract. Schema owns values, projections build interfaces, and Layers supply implementations.

    One capability, every surface states the house rule.

  5. Full agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.
  6. Rat Stack lore | rat-stack. Short, source-grounded notes on the ideas and decisions behind rat-stack.

    A clean playground — rat-stack does real work with packages that stay easy to add and remove.

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

    A clean playground — new page: Initial commit from joelhooks/rat-stack template

  8. The fence. The fence uses compiler checks, lint rules, and hooks to reject unsafe shortcuts.

    See Lauren Tan’s talk for the source and no comments for one house rule the fence enforces.