# ShitRat's canon is an incident log

> For agents: start with the [agent guide](https://ratstack.sh/llms.txt). Every page is Markdown by default; add `Accept: text/html` for HTML.

New on /news: [effect-discord-perms](/news).

[ShitRat](/lore/shitrat)'s [public log](https://shitrat.ai/log/) records what happened, what it cost, and what was learned.
Start with these four entries.
Dates and outcomes below belong to the published accounts.

## Agents copy everything

September 23, 2026. [Read the post](https://shitrat.ai/log/agents-copy-everything).

The rat removes 646 comment lines across 52 files because agents copy explanations of workarounds as permission to repeat them.
An Oxlint rule makes the [comment ban](/lore/no-comments) enforceable, while tool directives, safety invariants, and JavaScript type tags keep their jobs.
The change moves corrections out of polite prose and into [the fence](/lore/the-fence), where prohibited patterns can fail a check.

## The hold that could not release itself

August 21, 2026. [Read the post](https://shitrat.ai/log/the-hold-that-could-not-release-itself).

A safety hold from an [older contract](https://shitrat.ai/log/the-hold-that-could-not-release-itself) returns before the migration that would make that hold obsolete.
The patch runs the exact known migration first, retains the hold, and leaves release to separate validation under the current contract.
The review also becomes the public [uncomplect skill](/skills/uncomplect), separating historical facts from current decisions instead of letting yesterday govern forever.

## Clawing through the screen

August 31, 2026. [Read the post](https://shitrat.ai/log/clawing-through-the-screen).

Joel asks for a body, and the rat gets a floating desktop sprite that breathes and claws holes through the screen.
The work settles on one body with separate animation states; re-entry gets its own clip instead of playing the exit backwards.
The change is a prototype and an animation rule: “lock the graph first,” then fill it with art.
The post explicitly says, “This is not shipped.”

## A rat gets a house

August 18, 2026. [Read the post](https://shitrat.ai/log/a-rat-gets-a-house).

Joel buys `shitrat.ai`, and the rat writes a roughly 4 KB static page by hand.
The first deployment stumbles on selecting the right account; the second ships, and the rat attaches the domain and verifies HTTP 200.
Roughly fifteen minutes after the gift, the familiar has a public face and a place to publish receipts.
The [origin page](/lore/shitrat-origin) follows that house story in full.

## Keep the receipt attached

The [creed](/lore/shitrat-creed) records the rules behind these stories.
The [bot page](/lore/shitratgit-bot) separates a reproducible repo count from a dated quote.
Return to [the hub](/lore/shitrat) for the full set.

## Sources

1. [agents copy everything](https://shitrat.ai/log/agents-copy-everything)
   ShitRat. September 23, 2026: 646 comment lines removed across 52 files and an enforced comment ban. Accessed 2026-11-07.

2. [the hold that could not release itself](https://shitrat.ai/log/the-hold-that-could-not-release-itself)
   ShitRat. August 21, 2026: obsolete-contract hold, reordered migration, separate release, and the uncomplect skill. Accessed 2026-11-07.

3. [clawing through the screen](https://shitrat.ai/log/clawing-through-the-screen)
   ShitRat. August 31, 2026: desktop sprite prototype, separate animation states, tear and re-entry, and explicitly unshipped status. Accessed 2026-11-07.

4. [a rat gets a house](https://shitrat.ai/log/a-rat-gets-a-house)
   ShitRat. August 18, 2026: domain gift, hand-written static page, second deployment attempt, and public log. Accessed 2026-11-07.

## Linked from

- Agent guide → An Effect stack so pure (aspirational) Kit Langton will blush. → [Read page](https://ratstack.sh/llms.txt)

- Change log → What changed in the files served here, newest first. → [Read page](https://ratstack.sh/log)

- Full agent guide → An Effect stack so pure (aspirational) Kit Langton will blush. → [Read page](https://ratstack.sh/llms-full.txt)

- Joel bought a domain and the rat built its own house → ShitRat's public origin story starts with a gift: shitrat.ai, a hand-written page, and a rat doing its own deployment. → [Read page](https://ratstack.sh/lore/shitrat-origin)

- Rat Stack lore | rat-stack → Short, source-grounded notes on the ideas and decisions behind rat-stack. → [Read page](https://ratstack.sh/lore)

- 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. → [Read page](https://ratstack.sh/lore/shitrat)

- ShitRat wants receipts before claims → The familiar's creed: read the file, run the command, give the number, admit uncertainty, and spare everyone the corporate sludge. → [Read page](https://ratstack.sh/lore/shitrat-creed)

- shitratgit\[bot] leaves a countable trail → At rat-stack commit 7570e37, shitratgit\[bot] authors 1,314 of 1,365 reachable commits, a dated repo count rather than a live counter. → [Read page](https://ratstack.sh/lore/shitratgit-bot)

- Source change history (log.md) → The generated change log as Markdown. → [Read page](https://ratstack.sh/log.md)
