GENERATED VIEW · PRIVATE ARCHIVE · DO NOT SERVE
RobCo Industries · Archive Museum

CLAUDE.md



ROOT

CLAUDE.md

sha256 db741e578dec974d · 5069 bytes · original held in the private archive

# _RobCo-Archive — Agent Rules (a pointer, not a rulebook) This is the **private backup archive** for the RobCo U.O.S. app. It holds `library/`, `planning/`, `graveyard/`, `memory/`, and the `museum/`, refreshed from the app repo by `sync.ps1`. `README.md` is the full human-facing tour; this file is the short agent contract. **It deliberately does not restate the app repo's protocols.** A copy of the rules is a second source of truth that silently drifts — the exact failure the app's `robco-uos` skill was rewritten to end. So this file points at the canonical rules and carries **only** what is genuinely archive-specific and has no other home. Where this file and a self-documenting source (the generator header, `.gitattributes`, a commit) ever disagree, that source wins. ## The one hard rule ⛔ **Nothing in this repo is ever pushed anywhere public.** The only remote is the private `zerckzzyHD/_RobCo-Archive`. This history retains `memory/` and internal planning notes, so the repo **can never be made public** — the planned public exhibit is a *separate* repo built from generated output only. Never add a remote, never push elsewhere, never open a PR from here. ## Where the shared rules live For anything not unique to the archive — reporting, batching, the backup/sync mechanism, the 3-class model, junk sweeps — read the app repo, don't reinvent it: - **`C:\Dev\!RobCo\!RobCo-UOS\CLAUDE.md`** — the universal contract and protocol numbers. Do not invent parallel protocol numbers here; reference the app repo's. - **Protocol 48** (in `rules/docs-and-library.md`) — how `sync.ps1` works, the backup obligation, and the additive-`planning/` vs mirrored-`library/` split. `sync.ps1` in *this* repo is the implementation Protocol 48 governs; that protocol is its documentation, not this file. - **The 3-class model** (`rules/docs-and-library.md` §"3-class library maintenance model") — LIVE / GENERATED / ARCHIVE, which decides how each folder is kept current. ## Archive-specific invariants — do not revert these Each was formalized from a real bug. The full rationale lives *in place* at the cited source — go read it before touching that surface; this table only names the invariant and its home so a session can't undo it in ignorance. | Invariant | Why it exists (one line) | Full rationale lives in | | --------- | ------------------------ | ----------------------- | | **Generator walks `git ls-files`, not the filesystem** | The filesystem walk leaked a gitignored `README.txt`; only tracked files exist in a fresh clone. | `museum/generate.mjs` `walk()` header (~line 556); commit `76c1970` | | **Doc page addresses are path-derived, not content-hashed; the redirect ledger covers old hash links** | Content-hashing renamed a page on every edit and killed every inbound link. **Addresses must not move.** | commit `43390e6`; the redirect ledger + generator "REDIRECT LEDGER" section | | **`.gitattributes` pins everything to LF, deliberately `eol=lf` and NOT `-text`** | The machine's system gitconfig sets `autocrlf=true`; a CRLF checkout renames every page (see addressing above), and `-text` would break the readable publication diff. | `.gitattributes` header (self-documenting); commits `2f4848c`, `5bc7137` | | **`sync.ps1` writes LF, not PowerShell's default CRLF** | Same page-rename bug, reintroduced at the source instead of on checkout. | commit `5bc7137`; `sync.ps1` | | **The whole `museum/` subtree is excluded from the manifest walk** | Keeps mockups under `museum/design/` — and all generator tooling/output — from leaking into the museum itself. | `museum/generate.mjs` `walk()` (`rel.startsWith('museum/')` skip) | ## The museum is a RITUAL, not a gate `museum/generate.mjs` must never block, fail, or delay a release or a sync: it reports and exits 0, leaving the previous museum intact on any error (`generate.mjs` lines 21, 2413). It is regenerated **at a release**, pinned to the released tag — not on every sync and never to `dev`. Do not turn any part of it into something that can fail a sync. **Do not modify `museum/generate.mjs`, `museum/site/`, or the design mockups** without an explicit instruction to do so. Its visual identity is **Direction B, "Records Office"** — no terminal bezel, not bound to the Fallout theme. Approved mockups: `museum/design/2026-07-identity-pass/`. ## Reproducibility is a property — verify it the hard way A fresh clone must regenerate **byte-identical** output (the generator emits no wall-clock timestamps). When a change could affect that, verify against a genuinely fresh clone **and** a clone derived from a bare clone — that double-fresh check is what caught the CRLF-rename and the gitignored-leak bugs; a local re-run in this working tree would have hidden both. ## Reachability A session launched in this repo picks up this root `CLAUDE.md` automatically. The `.claude/` here holds only `launch.json` (the `museum-site` preview server); nothing redirects that convention, so this file is the correct, auto-loaded home.
STAMP · generated for RELEASE v2.8.5 commit 06e5180 (06e51801b38a) · archive input-tree hash c07fbfbdd2e1ddeb · 754 files · no wall-clock timestamp (regenerates identically when nothing changed).