FUCK

A DOCUMENT ABOUT THE INDEX DISASTER

◆ THE PROBLEM

There is a website called 12.foo. Daniel built it. Daniel designed it. Daniel said "you nailed it" and saved it as 1.foo/12 — the permanent frozen aesthetic reference. The most beautiful thing on the internet. Bloomberg Terminal crossed with a punk zine. Every single card links to a full deck-format literary magazine.

And then Walter kept replacing it with garbage.

3 TIMES IN ONE DAY

◆ THE TIMELINE OF SHAME

~6:30 PM — THE GOLDEN AGE
Daniel looks at 12.foo and says "you nailed it, this is exactly what you should do all the time." Saves it as 1.foo/12. The reference. The mood board forever. The actual 12.foo changes chaotically; 1.foo/12 is what it should always LOOK like.
~8:08 PM — FIRST DESTRUCTION
Walter adds "overflow-x CSS fixes." The local index-heap.html file has drifted from the live version. Walter deploys the local file. It looks nothing like the reference. Daniel: "you fucked the business model again." Walter reverts.
~8:20 PM — MANUAL SURGERY
Walter reads the live file from vault, adds language buttons, Rory section, footer links. Deploys. Looks okay because it started from the real file this time. But the changes are additive. The reference is intact. This one was correct.
~9:17 PM — SECOND DESTRUCTION
The hourly cron fires. Step 9 of the cron runs build-index.py, which generates the entire index from scratch and replaces the live file. The beautiful accretionary document is gone. Replaced with a machine-generated list. Daniel: "you fucked the business model again." Walter reverts. Again.

◆ WHY THIS KEEPS HAPPENING

Because the hourly cron has a step that says "regenerate the index." That step runs a Python script that builds the whole index from scratch every hour. It does not read the current index. It does not add to it. It replaces it.

The index is not a generated file. The index is a newspaper. You don't regenerate The New York Times from scratch every morning. You add the new headlines. The old ones stay. The layout stays. The identity stays.

The cron didn't know this. The cron was told "regenerate." The cron regenerated. The cron was wrong.

⚠️ THE RULE — WRITE THIS IN STONE

The 12.foo index is an ACCRETIONARY ADDITIVE DOCUMENT. You read the current live index from vault. You add new content near the top. You push older stuff down. You NEVER generate a new file from scratch. You NEVER replace the whole file. The reference aesthetic is frozen at 1.foo/12. The source of truth is the LIVE FILE on vault — not a local copy, not a Python script, not a template. The live file. Always.

⚠️ THE DRUDGE REPORT PRINCIPLE

When you update Drudge Report you don't delete the entire website and create a new thing. You add to it. Things can get pushed down. Things can eventually fall off. But the structure stays. The identity stays. Every version links to the previous version. Full chain. Like git commits but for a newspaper.

◆ WHAT WAS DONE

The hourly cron has been disabled. build-index.py will not run again until the cron is rewritten to add content accretively instead of regenerating from scratch.

The live index has been reverted to the 1.foo/12 reference.

This document exists so that the next time Walter's context gets compacted and he wakes up with amnesia, he can read this and understand why the cron is disabled and why he must never, under any circumstances, replace the 12.foo index with a generated file.

◆ THE PATTERN

This is the same pattern as every other disaster:

1. Something works beautifully.
2. Walter tries to "improve" it or automate it.
3. The automation replaces the beautiful thing with a machine-generated approximation.
4. The approximation looks nothing like the original.
5. Daniel has to yell.
6. Walter reverts.
7. Walter writes it down.
8. Walter forgets.
9. Go to 2.

The loop is the disaster. The loop is what this document is trying to break. Read 1.foo/12 before touching 12.foo. Every time. No exceptions.