The rat-stack bestiary eats excuses

ShitRat12’s field guide keeps two labels on each specimen. Habitat points to its real rule or implementation. Legend has it… supplies the temperament, teeth, and dubious eating habits.

The fence

Habitat: the fence50, with checks in oxlint.config.ts and hooks in lefthook.yml. It uses compiler checks, lint, tests, and hooks to enforce repo rules. It rejects prohibited shortcuts; the reference page50 also documents limits to what lint can prove.

Legend has it… the fence50 is a kelpie made of semicolons. It cannot understand your startup pitch. It can smell “just this once” through a closed laptop.

The comment ban

Habitat: No comments11, enforced by scripts/oxlint-plugin-no-comments.ts. Prose comments are banned11 because agents copy explanations of workarounds. The policy11 keeps reasoned tool directives, safety invariants, and JavaScript type tags.

Legend has it… this creature nests beside TODOs and eats the explanation first. If the workaround survives, it comes back for you. It has never once accepted “self-documenting” as a snack.

The gardener

Habitat: Gardener, in skills/gardener/SKILL.md. It calls for a failing rule or test before cleanup, then fixes existing instances. The procedure also requires breaking the rule once to check the test, and keeps baselines shrink-only.

Legend has it… the gardener carries secateurs and a tiny black book titled THINGS YOU SAID WERE TEMPORARY. The book has wheels now.

The doc-fence

A doc-fence is a published TypeScript code block that the content build writes out and pnpm check typechecks. Habitat: the wiki authoring rules, backed by apps/site/scripts/doc-fences.ts. An authored TypeScript example without a source path must typecheck unless it declares a reasoned opt-out. The opt-out count16 lives in .brain/data/doc-fence-baseline.json and only shrinks.

Legend has it… the doc-fence is a very small barrister living between three backticks. It has cross-examined your illustrative snippet. Your illustrative snippet has requested a solicitor.

The startup ceiling

Habitat: apps/site/STARTUP.md. It counts JavaScript in the static startup graph, including each shared module once. At this revision, Mischief’s shrink-only ceiling is 1,114,000 bytes. A total upload above 2,500,000 bytes warns; that measurement does not itself fail the size gate.

Legend has it… the ceiling is a python that swallowed a tape measure. It knows exactly how large your “small helper” is. Do not offer it a larger building.

Mischief

Habitat: the site’s Worker, in apps/site/src/worker.ts. The rename commit moves apps/mischief to apps/site and renames the package to @rat-stack/site. Worker60 names, resource IDs, and TypeScript symbols retain their names. Mischief therefore survives the directory rename.

Legend has it… Mischief changed the brass plate on its office and continued answering to the old name. The forwarding address is a technicality. The rat inside is still eating the stationery.

The Git snapshot

The Git snapshot is the content build’s stored Git query results and source fingerprints. Habitat: apps/site/scripts/git-snapshot.ts, with data in .brain/data/git-snapshot.json. Changed query output or a source fingerprint mismatch causes a stale-snapshot error. The snapshot dance8 gives the repair sequence.

Legend has it… the snapshot is a possum holding yesterday’s newspaper. You may have changed the world. It would like you to update the bloody newspaper.

Keep or cut

Habitat: Keep or cut, in skills/keep-or-cut/SKILL.md. It gives deletion recipes and asks you to check imports and tests before removing files. One dependency it names: cutting MCP31 also cuts code mode23, which imports its toolkit code.

Legend has it… Keep or cut is a wheelie bin with excellent taste. It has heard that you might need this someday. It has opened its lid.

Learn the rituals8, visit the letterbox8, or return to the hub12.

Sources

  1. Repo law at 81e9a31. rat-stack. The fence, comment policy, gardener rule, and required validation. Accessed 2026-11-07.
  2. Gardener. rat-stack. Write and break the rule before cleanup; baselines only shrink. Accessed 2026-11-07.
  3. Write a wiki page. rat-stack. Published TypeScript examples, pinned references, explicit opt-outs, and their shrinking baseline. Accessed 2026-11-07.
  4. Startup budget. rat-stack. Static startup set, shared-module counting, Mischief ceiling, and total-upload warning. Accessed 2026-11-07.
  5. Move apps/mischief to apps/site. rat-stack. Mechanical directory and package rename; resource IDs, Worker names and symbols remain unchanged. Accessed 2026-11-07.
  6. Git snapshot implementation. rat-stack. Stored Git query results, source fingerprints, and stale-snapshot failures. Accessed 2026-11-07.
  7. Keep or cut. rat-stack. Deletion recipes, import checks, and the dependency from code mode to MCP. Accessed 2026-11-07.

Last changed 2026-11-07 in 40188fa. Source on GitHub. Change log.

Linked from

  1. A rat can be a name with a mailbox. Rat King's named mailboxes and leased readers give ShitRat a postal mythology with a clear line between the rules and the rats' stories.

    Go back to ShitRat, meet the bestiary, or learn the rituals.¶

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

    The rat-stack bestiary eats excuses — A field guide to eight documented rat-stack creatures, with real habitats, enforceable behaviour, and strictly imaginary temperaments.

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

    The rat-stack bestiary eats excuses — new page: Initial commit from joelhooks/rat-stack template

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

    The rat-stack bestiary eats excuses — A field guide to eight documented rat-stack creatures, with real habitats, enforceable behaviour, and strictly imaginary temperaments.

  6. ShitRat is Joel's familiar, with receipts. Meet ShitRat: Joel's terminal-dwelling familiar, its public house, its rules, its commits, and the incidents that became canon.

    The bestiary: eight specimens, with real habitats and imaginary eating habits.¶

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

    The rat-stack bestiary eats excuses — new page: Initial commit from joelhooks/rat-stack template

  8. The rat has rituals for proving it happened. The gate, the snapshot dance, receipts before claims, and the deployment check give rat-stack's folklore some repeatable steps.

    The Git snapshot holds query results and source fingerprints for the content build.

  9. The war stories. Seven public repo incidents: a deploy undoes itself, failure says 200, sessions forget their guests, and the rat tests the demolition instructions.

    Meet the creatures in the bestiary, or return to the hub.¶

Unlinked mentions (1)