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

README.md



ROOT

README.md

sha256 cdde22254bfaec24 · 10045 bytes · original held in the private archive

# RobCo U.O.S. — Local Artifact Archive (PRIVATE) **This is the PRIVATE companion backup to the PUBLIC repo [`zerckzzyHD/Robco-UOS`](https://github.com/zerckzzyHD/Robco-UOS).** It durably backs up the project artifacts that live **only on the owner's machine** — they are gitignored (or entirely outside) the public repo, so without this archive they exist in exactly one place and one disk failure loses them. This repo is deliberately **private** and must stay that way: some of these docs are internal working notes never meant for public release. ## Corresponds to public repo commit > **`ce368bd`** - last synced **2026-07-24** Each sync stamps this line with the public repo's current `HEAD` at the moment of the sync, so you can always tell which state of the code this archive matches. ## What's in here | Folder | Files | What it is | | ----------- | ----- | ---------- | | `library/` | 5 | Deep Claude-facing reference docs — `BRAIN_DUMP.md`, `CODE_MAP.md`, `TEST_CATALOG.md`, `PROMPT_MULTI_AI_REMAKE.md`, `MANIFEST.txt` (gitignored in the public repo). **Mirrored** (see below). | | `planning/` | 580 | Every audit, plan, synthesis, slate, and design mockup — the full planning history and mockup image set (outside the public repo). **Additive-only** (see below). | | `memory/` | many | The orchestrator's persistent memory — **all** discovered stores, one per subfolder (see below). `memory/_CAPTURE_MANIFEST.txt` records which stores were captured and how many files came from each. | | `graveyard/`| 6 | Ideas tried or proposed and deliberately ruled out, one `<slug>/record.md` each, pointing at the original in-archive decision record. Read through the museum's GRAVEYARD room. | | `museum/` | — | The archive museum — a generated, browsable view of everything above. **Entry point: [`museum/site/index.html`](museum/site/index.html)** (see below). | ## The archive museum **Open [`museum/site/index.html`](museum/site/index.html).** Not `museum/index.html` — that path has never existed; if anyone reports the museum "missing", this is the correction. It is a generated, browsable view of this archive: a lobby, one room per release, the standing tools, the graveyard, a growth exhibit and full-text search over every document. It is a plain static site — no build step, no dependencies, no server. Double-click the file, or read it on GitHub through the rendered file view. - **Generator:** `museum/generate.mjs`, Node built-ins only. It walks this archive once into a single manifest and renders every page from that one manifest. - **Regenerated AT A RELEASE, not on every sync**, and **pinned to the released state** — never to `dev` and never to whatever is checked out. The pinned release is recorded in `museum/release-pin.json` and advanced only by the release ritual: ```powershell node museum/generate.mjs --release # pin to the newest shipped tag and rebuild node museum/generate.mjs --release=v2.8.5 # pin to a specific shipped tag ``` The pin must name a tag that already exists — a version that has not been tagged has not shipped, and the museum will not render it as a release. Because the museum tracks releases rather than a moving branch, it is **current by definition between releases**. That is what makes its NOT CURRENT notice worth reading: it can only mean *a release shipped and nobody regenerated the museum*. `sync.ps1` no longer regenerates; it runs `node museum/generate.mjs --check`, which reports that one condition and builds nothing. It remains a **ritual, never a gate**: any failure inside it leaves the previous museum intact, leaves the pin unadvanced, exits 0, and cannot block a sync or a release. - **Release measurements are frozen, in `museum/release-measurements.json`.** Line count, file count and the **test count** are measured from each release tag once and never updated. The test count is measured by exporting the tag and running the runner that tag's own `package.json` declares — it is never copied from the changelog. (Measuring a *released* count is not the retired count-sync protocol returning: that retired the obligation to keep a **live** number in step across many files, and explicitly kept frozen per-release counts as history. This is that, measured rather than typed.) - **`museum/site/` is committed.** It is regenerable output, but the owner reads this archive through GitHub on a phone, so output living on one disk defeated the point. Only `museum/.cache/` and `museum/.build-tmp/` are ignored. - **`museum/accounts/<version>.md` is the only hand-written content** in the whole museum — one frozen prose account per release. A missing account renders "ACCOUNT NOT FILED"; nothing is ever written in its place. - **No wall-clock timestamp** anywhere in the output, so an unchanged archive regenerates byte-identically and a sync produces no spurious diff. ### How `memory/` is laid out There is more than one memory store on this machine, in two ecosystems, so the sync backs up **every** one it finds into its own clearly-named subfolder rather than guessing which is canonical: - `memory/project-<project-slug>/` — a CLI project's memory (`~\.claude\projects\<slug>\memory`). This is the store the project's orchestrator actually reads and writes; the important one is `project-C--Dev--GEM-Website-version`. - `memory/localmode-<guid>/` — a desktop local-agent-mode session's memory. Empty stores are skipped (and reported); the sync fails loudly rather than push a backup with no memory at all. `_CAPTURE_MANIFEST.txt` is the at-a-glance record of what landed, so a run that ever captures the wrong or empty store is visible in the tree instead of hidden behind "sync complete". Nothing here contains credentials — it was secret-scanned before the first push, and re-scanned 2026-07-18 (no API keys, tokens, private keys, `.env` files, or service-account JSON). The only key-shaped strings in the public app are the client-side Firebase/reCAPTCHA IDs that already ship publicly, and none of those appear in these docs. The ~172MB snapshot **zip** and its `README.txt` also sit in this working folder but are **not** committed (`.gitignore`) — the zip exceeds GitHub's 100MB per-file limit, and the three folders above already hold the same content in a browsable, diff-able form. ## Additive vs mirrored — what can and can't be deleted from this backup Not every folder is treated the same way, and the difference is deliberate. It follows the main project's own **3-class model** for local-only docs (`CLAUDE.md`): LIVE (actively maintained), GENERATED (produced by a script), and ARCHIVE (frozen point-in-time snapshots). The class decides how the sync keeps each folder current, and the decision is made at the **folder level** because that is the only place it can be made reliably: - **`planning/` → ARCHIVE-class → additive-only.** The audits, plans, mockups, and slates under `planning/` are frozen snapshots. Once a file is captured here it is kept **forever** — even after the owner deletes it from his working `planning/` folder. This is the whole point of the archive: he can clear `planning/` once an audit or mockup has served its purpose **without losing the record**. New and changed files are still copied and updated on every sync; the only thing additive-only removes is the *deletion* step. (Under the hood: `robocopy /E`, no `/PURGE`.) - **`library/` → LIVE/GENERATED → mirrored.** These docs are actively maintained, so an updated version **replaces** the old one rather than piling up stale copies. Git history already preserves every prior version, so nothing is lost. (Under the hood: `robocopy /MIR`, which purges backup files that are gone from the source.) - **`memory/` → live agent state → mirrored** per store. A deleted memory file is an intentional consolidation, and git history preserves it, so this folder tracks the source rather than accumulating. **The safe direction is "never delete."** A wrong call that keeps too much is harmless; a wrong call that deletes is exactly the loss this archive exists to prevent. So if a new synced source is ever added and its class is unclear, it should be treated as additive. **It's visible, not something you have to trust.** Every sync writes [`ARCHIVE_RETAINED.md`](ARCHIVE_RETAINED.md) listing the `planning/` files that are in this backup but no longer in the owner's working folder — the additive set, made browsable — and prints a `N archive artifact(s) RETAINED that are no longer present locally` line in its run summary. If that list is empty, every backed-up planning file still exists at the source. ## How to refresh it From this folder, in a normal PowerShell window, run: ```powershell ./sync.ps1 ``` That one command re-copies all three source locations over this working copy, re-stamps the commit line above with the public repo's **current** `HEAD`, checks whether a release has shipped that the museum has not been regenerated for, then commits and pushes to the private remote. The sync does **not** regenerate the museum — see the cadence note above. To rebuild the museum against its existing pin, without a sync: ```powershell node museum/generate.mjs ``` To advance it to a release that has just shipped (the release ritual): ```powershell node museum/generate.mjs --release ``` ### If the copy sources ever move The `library/` and `planning/` source paths are defined at the top of `sync.ps1` and are stable (inside the public repo working tree). The **memory** sources are **not** hardcoded — the script discovers every store at runtime (both `~\.claude\projects\*\memory` and the desktop local-agent-mode `…\<guidA>\<guidB>\agent\memory` locations, including the packaged-app path), so a fresh session or a changed GUID needs no edit. If a memory *root* ever moves, the discovery lives in `Get-LocalModeBases` / `Find-ProjectStores` in `sync.ps1`.
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).