MEMORY
memory-audit/AUDIT.md
sha256 8a9ce44f706a68d9 · 43264 bytes ·
original held in the private archive
# MEMORY AUDIT — accuracy pass, plus a short security scan
**Run 2026-07-20. Analysis only — nothing was modified, moved, split or deleted.**
94 memory files across 5 stores, verified against app repo `dev` @ `b458486`, `QUEUE.md`, `CHANGELOG.md`, `CLAUDE.md`, `rules/`, git log.
**The deliverable is [the table](#the-table) — one row per file, is it still true.**
---
## Headline
**Only 11 of 94 memory files are still fully accurate.** 34 STALE, 26 SUPERSEDED, 5 WRONG, 11 CURRENT, plus a few split verdicts. This is a worse rot than the nine-planning-audits case that prompted the audit, and for the same reason: nobody had checked.
**Three claims are actively load-bearing and false** — these are the ones that would change what a session does:
1. **`robco-os-architecture.md`: "Protocol 23 … has NO GATE GUARD."** That sentence is the justification for an entire prerequisite hardening gate at the front of the 2.9.0 round. Suite 236 has enforced Protocol 23 since 2026-07-18 (`bf8f188`), with the debt baselined at 46 crossings that can only shrink. The gate was built; the memory still argues for building it.
2. **`unenforced_protocol_23.md`** — a whole file whose thesis is that same now-false claim.
3. **`robco-uos-project.md`** — the file `MEMORY.md` tells sessions to read *first* for orientation. It says `APP_VERSION currently 2.6.0` (it's 2.8.0), `Protocols 1–41` (49 now), points at `RULES.md` (deleted), and gives a test count (meaningless by design). The orientation file is among the most wrong in the archive.
**Two contaminants run through everything old.** Every pre-2026-07-20 file citing `RULES.md` points at a file deleted at `b458486`; every test count anywhere is wrong *by design* since Protocol 2a retired. Six parked audit briefs open by instructing a future session to "study RULES.md first" — any that runs fails at step one.
**And two memories have been correctly reporting their own unperformed work for a week.** I verified both against source: Protocol 20's mandating wording is untouched in `rules/testing-and-gates.md`, and Protocol 8 still has no audit-from-the-diff rule in `CLAUDE.md`. `workflow-audit-gap-and-fixes.md` says it plainly: *"Until amended, the protocol still lies."*
**Everything is publishable.** No file needs withholding, no store needs splitting — see below, it's short.
---
## Security scan — three hits
Searched the whole archive (not just memory) for the five things that actually matter: credentials, location, your email, your real name, and anything financial/health/legal/account-identifying.
| # | Hit | Where | What to do |
|---|---|---|---|
| 1 | **Email** `zerckzzyzerckzzy77@gmail.com` | **6 files** | Strip. The only spam/phishing-relevant item. |
| 2 | **First name**, via `C:\Users\zerckzzy` paths, `rog-ally\zerckzzy`, one `(zerckzzy)` | **11 files + 1 directory name** | Your call — trivial either way. |
| 3 | **App Check debug token** `[REDACTED — token deleted in the Firebase console 2026-07-20]` | **1 file** | Rotate in the Firebase console. Low severity. |
**Nothing else.** Zero API keys or tokens beyond that one — I ran key-shaped regexes (`AIza`, `sk-`, `ghp_`, `github_pat_`, `xox`, PEM blocks, JWTs) across the archive and got nothing. Zero location data. Zero financial, health, legal, or account-identifying detail.
Three near-misses I checked rather than assumed:
- **"Sydney"** — Sydney's 10mm "Ultra" SMG, a Fallout 3 weapon in `FO3_WEAPON_DATA.md`. Not a place.
- **"diagnosis"** — always software debugging.
- **`courier.six@mojave.express`** — Fallout flavour text in a mockup.
The **Google OAuth client-secret is correctly absent**: memory records *where it lives* and that it's deliberately not backed up. The reCAPTCHA site keys and Firebase browser key are public-by-design — they ship to every visitor.
**Everything else in the memory is publishable and belongs in the museum**, including the ~21 files that quote you directly. That's the reasoning, and it's the reason the exhibit is worth having.
### The two wrinkles in fixing the email
Both are about *reach*, not sensitivity:
- **It has a second source outside memory** — `planning/2.8.0/plans/DEPLOY_STAGING_PLAN.md`, 3 lines. A memory-only scrub misses it.
- **The museum has already baked it into committed output**, including `search-2.js` / `search-3.js`. Regenerating won't help until the sources are fixed — the generator faithfully reproduces what it reads.
- **Git history.** The repo is private now and going public; scrubbing the tip leaves it in history.
**Q0 — scrub the email from both sources + regenerate the museum, rotate the debug token, and decide on the `C:\Users\zerckzzy` paths. Do you want git history rewritten before the repo flips public, or is the tip enough?**
*(Deleting the dead OneDrive store — Q18 — removes the `zerckzzy` directory name for free, since it's a path a content-scrub can't reach.)*
---
## Detail on the security hits
### Email — the 6 files
| Where | Note |
|---|---|
| `memory/…Website-version/deploy_branch_model.md:25` | Source. Cloudflare Access policy: `policy "Only me" = Allow Emails …` |
| `planning/2.8.0/plans/DEPLOY_STAGING_PLAN.md` | Second, independent source — 3 lines |
| `museum/site/docs/331f475b9824.html` | Museum rendering of the memory file |
| `museum/site/docs/9c1ea4cb0909.html` | Museum rendering of the planning doc |
| `museum/site/assets/search-2.js` · `search-3.js` | The museum's search index — full text, inline JS |
### First name — the 11 files
| Form | Where |
|---|---|
| `C:\Users\zerckzzy\…` | 4 memory files, `_CAPTURE_MANIFEST.txt`, 5 museum HTML copies — 26 occurrences across 10 files |
| `rog-ally\zerckzzy` | `backup_archive_repo.md` ×3, `project_state.md` ×1 (+ museum copies) — machine name and user |
| `(zerckzzy)` | `primary-users-devices.md:11` — the one place it's a name rather than a path |
| **Directory name** | `memory/project-C--Users-zerckzzy-OneDrive-Documents--GEM-Website-version/` |
Your surname appears **nowhere except inside the email** — fix that and the surname is gone. Your GitHub handle `zerckzzyHD` is everywhere but already public on your repos, so I haven't counted it.
### Credential-shaped strings, graded
| Item | Verdict |
|---|---|
| reCAPTCHA v3 **site** keys `6LcViz8t…`, `6LdEhzct…` | Not a concern — site keys ship in the browser to every visitor by design |
| Firebase browser key `AIzaSyCm4…` | Not a concern — truncated in the file, and public by design anyway |
| **App Check debug token** `[REDACTED]…` | **The one real item.** Bypasses App Check attestation. `90ff0f4` scoped the debug guard to localhost, which contains it — but it's a bypass credential in plain text. Rotate it. |
| Cloudflare account ID `c89063a03a…` | Identifier, not a credential — can't authenticate with it. Account-identifying, so your call. |
| Chrome extension `deviceId 7a898113-…` | Local pairing ID. Not a credential. |
| Google OAuth client-secret | **Correctly absent.** Memory names its location and records that it's deliberately not backed up. The system worked. |
---
## The decisions
All accuracy calls. Answerable in short replies — "Q10 cap it, Q11 yes".
*(Q1–Q9 were privacy adjudications from an earlier, stricter reading of the brief. They're withdrawn — your bar answers all nine with "publish it". Numbering is left alone so Q10+ stay stable.)*
**Q10 — `project_state.md` (130 KB) is the worst file in the archive.** Accurate as history, wrong as state. It says APP_VERSION is 2.7.0, says main is at v2.6.0, gives four different test counts, documents a PowerShell test runner deleted five weeks ago in 45 lines of detail, gives an `index.html` load order where every path is wrong post-reorg, and asserts Protocol 23 is unenforced at line 30 while line 18 says it's superseded. **Cap it and start fresh, or add supersession banners?**
**Q11 — Two "OWED UNIT" amendments were never done, and both files say so.** I verified both against source:
- `rules/testing-and-gates.md` — Protocol 20 still mandates the static tests that let an invisible panel ship green. `reframing-review` flagged this on 2026-07-13.
- `CLAUDE.md` Protocol 8 — still has no audit-trigger list and no "audit starts from the DIFF, never the summary" rule. `workflow-audit-gap-and-fixes` says plainly: *"Until amended, the protocol still lies."*
These are the only two cases where a memory's central action is genuinely still outstanding rather than just stale. **Do these land now?**
**Q12 — A live contradiction between two memory files.** `parked-ui-consistency-audit.md` wants gate guards that *fail the build* when a panel deviates from a shared pattern. `parked-nv-overhaul-design-audit.md` records your ruling that per-instrument variation is **"UNIQUE ON PURPOSE… Do NOT homogenize them."** Running the first as written violates the second. **Is mechanical consistency enforcement dead, or is there a narrow version (density, contrast, tap targets) worth keeping?**
**Q13 — Three files hold doctrine that dies if they're deleted as stale.** The clarity veto (`parked-diegetic-audit`), the Hardware Life no-persistence invariant + metaphor-lane rule (`parked-deferred-work-program`), the six-axis AI cost model (`parked-ai-feature-eval`). **Promote into `rules/` before retiring the files?**
**Q14 — `robco-phase6-backlog.md` is un-actionable.** You said `"fold them all together, add this with them, save all of this until after all queued tasks. don't start immediately after, remind me instead."` The reminder never fired, the queue it waits on no longer exists, and it points at `outputs/RobCo_Phase6_Backlog.md` — **there is no `outputs/` directory.** **Dead, or does the spec need finding?**
**Q15 — `queued-fixes.md` is ~90% shipped.** Two items are genuinely still open: cloud-save **version history** (no such symbol anywhere in `js/`) and the 2.9.0 small-feature audit. Four cosmetic items need a visual check on staging before I can call them either way. **Promote the two live items to QUEUE.md and close the file as history?**
**Q16 — QUEUE.md item P says the museum is OPEN. It's built and committed** in this repo (`museum/site/`, entry `museum/site/index.html`). **Tick it?**
**Q17 — `parked-phone-archive-access.md` is blocked on your keyboard**, which is the thing you don't have until Wednesday. Route A (MGit + fine-grained PAT) is written out and ready. **Want it handed to you verbatim when the keyboard lands?**
### Where I'd be guessing
- **`main` branch protection** (`project_state.md` line 32) claims the required-check rename will block the next `dev→main` release. I cannot read GitHub repo settings from disk and nothing in git history addresses it. **Plausibly still a live release blocker — please confirm.**
- **Four cosmetic items** in `queued-fixes.md` (backplane centering, autocomplete drop-up, LISTENING pulse, purple casing outline) are not confirmable by grep.
- **Whether the archived copies match the live stores.** The Website-version live store holds only `.jsonl` transcripts — no `.md` files were findable from this sandbox. The archive copy may be the only copy, or the live store may be elsewhere. Worth resolving before anything is split.
- **`.gitignore` lists CLAUDE.md as ignored but it's tracked** — noted in memory as "pre-existing, harmless", unverified.
---
## The table
One row per file. **Every file here is publishable** — the only exclusions are the three strings in the [security scan](#security-scan--three-hits), and they're strings, not files.
**CURRENT** still true · **STALE** was true, now isn't · **WRONG** never was, or now actively misleads · **SUPERSEDED** overtaken by a later decision
### Store: `localmode-1060dea9-…` (76 files — the orchestrator's main store)
| File | What it is | Accuracy | Why / Q |
|---|---|---|---|
| `MEMORY.md` | Index of the 75 others, grouped read-first / governance / parked | STALE | Links devices line; index still lists parked items that have run |
| `always-acknowledge-actions.md` | Rule: never act silently, notify every action with the 4 W's | CURRENT | Purely about how to communicate with you. `"weird of you to not let me know you listened"`, `"EVERY SINGLE TIME."` |
| `appcheck-enforce-reminder.md` | App Check status; resolved, historical only | CURRENT | ⛔ contains debug token — see Blocker. Names you + brother |
| `architecture-review-2026-07-13.md` | The 3 UI↔services dependency cycles; framework closed on arithmetic | STALE | Measurements superseded by Suite 236 baseline (26 service→view, not 31) |
| `audit-completeness-gaps-2026-07-14.md` | Blind GPT+Gemini gap review; 4 gaps verified in code | STALE | All four folded in; persist() + save-contract shipped |
| `bezel-fidelity-pass.md` | Shipped casing vs approved mockup; keycap + location-card follow-ups | SUPERSEDED | `owner is almost exclusively mobile`. Work shipped in 2.8.0 |
| `changelog-rules.md` | Changelog doctrine: env-aware viewer, hotfix bucket, final-state consolidation | STALE | Cites Protocol 2a (retired) and RULES.md (gone); doctrine itself holds |
| `ci-node-parity.md` | Node 24 via one `.nvmrc`; Linux+Windows matrix; why Windows CI | CURRENT | `The owner develops on WINDOWS… the "independent" Linux CI was validating a platform NOBODY develops on` |
| `cli-terminal-ideas.md` | Full CLI command-set brainstorm for the 2.9.0 OS round | CURRENT | Unbuilt, correctly scoped to 2.9.0 |
| `coverage-mind-map-deliverable.md` | ROBCO SYSTEM ATLAS spec: one graph, 8 views | STALE | Deferral gate now met (U11/U12 shipped) |
| `data-provenance-program-complete.md` | The fallout.wiki re-sourcing program, both games — complete | CURRENT | `the owner's main game got more care` (NV registry was clean). Test counts dead |
| `deep-systems-review-2026-07-13.md` | The gate is bigger than the app and verifies shape, not behavior | STALE | Best single analysis in the archive. All counts now meaningless by design |
| `delete-leftovers-rule.md` | Sweep junk at end of every task | CURRENT | `the owner doesn't want old-task cruft accumulating… they keep a clean directory` |
| `design-overhaul-direction.md` | The standing design charter — ~30 numbered directives | STALE | **Densest quote file (~35).** Settings tab + Module Bay + Schematic shipped; §13 movable panels built nowhere, tracked nowhere |
| `dev-branch-workflow.md` | Branch model, staging root-causes, the `--no-ff` release lesson | STALE | `deploy-staging.yml` now exists and auto-deploys — "not Git-connected" is stale |
| `dispatch-autonomy-preference.md` | Auto-advance the chain; don't ask permission to keep turning | CURRENT | Entirely about how to work with you — publishable |
| `dispatch-session-launch-discipline.md` | Fresh session per task; on timeout stop and wait for "resend" | SUPERSEDED | Dispatch-era tooling; not in play in localmode |
| `docked-ideas.md` | The (empty) dock + a large Diagnostic Shell backlog | SUPERSEDED | Nearly all shipped; Shell now a *trim* candidate. Frontmatter `name:` is empty — only file in archive missing it |
| `engineering-metrics-log.md` | Workflow telemetry, protocol-inflation alarm | SUPERSEDED | Counts everywhere; names RULES.md duplication as an open complaint (now resolved) |
| `external-ai-prompt-delivery.md` | Deliver external-AI prompts as fenced copy-paste blocks | CURRENT | About his phone, his subscriptions, his workflow. `"they are specified and in copy paste block text"` |
| `fo3-karma-rebuild.md` | The invented "Enclave hit squad"; karma bands are correct | STALE | Engine verified in source; all queued polish shipped (`24f157b`) |
| `fo3-pipboy-program.md` | Locked FO3 Pip-Boy design; the extraction pass | **CURRENT** | Best-aged file in the archive. `"the bezel definitely isn't a pip boy"` |
| `free-firebase-ideas.md` | Free-tier Firebase ideation; the no-server verdict | CURRENT | **Q5** (co-op with brother). Fold target "2.9.0 cloud cluster" may not exist in QUEUE.md |
| `idea-secret-figure-variant.md` | Secret alternate STATUS figure, folded into Hardware Life 2.9.0 | CURRENT | Unbuilt, correctly placed |
| `local-ai-delegation-verdict.md` | Qwen on the ROG Ally — binned, with numbers. Also the Dell rejection | CURRENT | ⭐ `You can mechanically enforce honesty about EVIDENCE. You cannot mechanically enforce honesty about REASONING.` |
| `melee-scope-rule.md` | Melee guards gate on weapon OR mode, never mode alone | CURRENT | Legacy-origin rule, still correct |
| `nv-test-save-fixture.md` | Fully-populated NV test campaign behind a staging-only button | CURRENT | Unbuilt; the two-gate split (staging vs minigame) is a real constraint |
| `opus-plan-sonnet-implement-workflow.md` | Opus plans → Sonnet implements; Fable is the third model | STALE | Your required workflow. Model lineup predates current models |
| `owner-templates.md` | Keep #updateBanner + FO3 warning as disabled templates, never delete | CURRENT | `"remember my templates"` — a standing override on audit findings |
| `parked-2-9-0-update.md` | The 2.9.0 feature slate, 15 curated items | SUPERSEDED | QUEUE.md's 2.9.0 block is now authoritative and re-sequenced |
| `parked-accessibility-audit.md` | Parked WCAG 2.1 AA audit brief | STALE | Ran; landed as Health-U9 (40→0). Cites RULES.md + P2a |
| `parked-ai-feature-eval.md` | Parked Gemini-feature evaluation brief | STALE | **Q13** — the six-axis AI cost model is the keeper |
| `parked-ai-to-native-feature-audit.md` | Convert AI-dependent features to native + oversight review | STALE | Every named conversion shipped. Part 2 may still be owed |
| `parked-capability-survey.md` | Parked browser-capability ideation brief | STALE | Slate produced; BUILD-NOW items pulled into 2.7.0 |
| `parked-cloud-audit.md` | Parked cloud-sync field-coverage audit | STALE | Ran. Premise moved — persistence is IndexedDB-primary now |
| `parked-code-quality-audit.md` | Parked maintainability/tech-debt audit | STALE | Ran (U12 clean). Its CSS-split question was executed — 13 numbered files |
| `parked-command-list-cleanup.md` | Remove obsolete commands (pause, page 1/2) | CURRENT | Genuinely still parked |
| `parked-content-audit.md` | Parked FNV/FO3 database completeness + canon audit | STALE | Ran; canon corrections shipped (`fbc0c5c`) |
| `parked-deferred-work-program.md` | The full 2.8.0 Round-2 program | SUPERSEDED | **Q13.** 2.8.0 shipped. Hardware Life invariant + metaphor-lane rule are the keepers |
| `parked-diegetic-audit.md` | Site-wide in-world consistency audit + the clarity veto | STALE brief / CURRENT ruling | **Q12, Q13.** `"do not rename inventory to manifest. things should be in theme but not confusing."` |
| `parked-fallout4-support.md` | The 3.0 Fallout 4 program | **CURRENT** | Only genuinely-still-parked item of the eleven. Roadmap numbering omits 2.8.5 |
| `parked-mainrevert-cloudsave-compat.md` | Verdict that cloud saves survive a v2.6.0 revert of main | SUPERSEDED | The revert never happened and now can't |
| `parked-mistify-salvage-audit.md` | Salvage audit of your old mistify site; only DECODE survived | CURRENT | Self-contradicts: header says CLOSED, last line says `wait for the owner's explicit go` |
| `parked-mobile-audit.md` | Parked mobile/responsive UX audit | STALE | Absorbed by 2.8.0 density pass + U1–U12. Cites RULES.md + P2a |
| `parked-nv-overhaul-design-audit.md` | The NV design gate + standing "do not re-flag" rulings | STALE + live core | **Q12.** MF-2 and Theme #3 are intentional and must not be re-flagged |
| `parked-performance-audit.md` | Parked boot/performance audit | STALE | Ran as U7/U8. Its `loadUI()` debt is now frozen in the P23 baseline |
| `parked-phone-archive-access.md` | Two routes to the archive on your phone + museum ideas | PARTLY STALE | **Q17.** ⛔ see Blocker. `"save the git client in parked items… so when I get a keyboard I can do this easily"` |
| `parked-recreation-funprompt.md` | The six-model collaborative remake prompt (NV map first) | CURRENT template / STALE sequencing | `"as automated on me as possible"`; names your ChatGPT thread `GPT - Claude Data` |
| `parked-roadmap-rebaseline.md` | Re-baseline of parked steps against shipped 2.7.0 | SUPERSEDED | Web Workers ruling still explicitly pending; day/night re-add still open |
| `parked-synthesis-masterplan.md` | Reconcile 8 audits + 3 slates into one MASTER_PLAN | SUPERSEDED | Cannot run — its required inputs were never all produced. QUEUE.md does this job now |
| `parked-task-workflow.md` | What "park" means: never start without explicit go | CURRENT | Defines your instruction vocabulary; still governing |
| `parked-test-strength-audit.md` | Would the suite actually catch regressions? | STALE | Thesis vindicated by U1–U12. Cites P2a, P15, RULES.md — all gone |
| `parked-token-usage-audit.md` | Token-usage redo + readability/code-org audit, greatly expanded | STALE | Timing was "right after 2.8.0, before the brain dump" — that window passed; brain dump written. The library split partly landed |
| `parked-ui-consistency-audit.md` | Cross-panel consistency audit + enforcement guards | **WRONG** | **Q12.** Its target standard was demolished by 2.8.0; running it would violate your own ruling |
| `parked-vats-offline-audit.md` | Verify VATS + natives are genuinely zero-network | STALE | Landed as U10 (offline-network sweep, clean) |
| `parked-wasteland-uplink-engine.md` | Consolidates 4 ambient items; hard no-persistence invariant | PARTLY STALE | Invariant is the keeper. Description field still says day/night REMOVED; body says re-instated |
| `per-game-device-form.md` | NV terminal / FO3 Pip-Boy / FO4 Mark IV device identities | SUPERSEDED | `owner is NV-primary, hasn't used FO3 yet`. Both gates closed |
| `player-control-principle.md` | Player has full authority; AI is opt-in, never authoritative | CURRENT | Enforced 2026-07-19/20 for inventory and level. Load-bearing |
| `popup-card-style-standard.md` | Transient pop-ups → compact top-right toast; persistent stay big | CURRENT | Rule holds; conversion status unverified |
| `post-2-8-0-brain-dump.md` | Plan for the post-2.8.0 brain dump | SUPERSEDED | The dump was written. Landed at `library/BRAIN_DUMP.md`, not the planned path |
| `primary-users-devices.md` | OnePlus 15 / OnePlus 12R; shifts the eviction risk picture | CURRENT | Your example case — device facts that drive real decisions |
| `project-must-stay-free.md` | Hard constraint: no paid infra, AI stays BYO-key | CURRENT | Your money. `"this project must remain free."` Still governing |
| `prompt-library-campaign-framings.md` | Adopted campaign framings + the Library relocation spec | STALE | Library is flat, not foldered; source still exists at `planning/_standing/PROMPT_LIBRARY` — it lives in two places |
| `queued-fixes.md` | The 2.8.0-era bug/polish queue, ~35 items | STALE (~90% shipped) | **Q15.** Densest concentration of your unedited bug reports (~25 quotes) |
| `reframing-review-2026-07-13.md` | Blind reframing review; Protocol 20 caused the blind gate | STALE | **Q11.** Verified: P20's mandating wording is untouched. Its "keep 2a" warning was overruled, not wrong |
| `roadmap-parked-placement.md` | The backbone: every parked item mapped to version + position | STALE | Item 0f (P23 gate guard) listed as pending — shipped as Suite 236 |
| `robco-audit-program.md` | The origin 8-point audit program; 2.5.0/2.6.0-era build log | SUPERSEDED | ⛔ see Blocker (deviceId). **Q7** (Blaze). Most out-of-date file in the store |
| `robco-os-architecture.md` | OS-first philosophy; Filesystem / Peripheral Bus / Distribution Net | SUPERSEDED | **Contains a false load-bearing claim:** `Protocol 23… has NO GATE GUARD`. Suite 236 has enforced it since 2026-07-18 |
| `robco-phase6-backlog.md` | A gated 7-task batch held until the queue drains | **WRONG** | **Q14.** Points at `outputs/` — no such directory. Un-actionable as written |
| `robco-uos-project.md` | What RobCo is, repo paths, protocols, recurring gotchas | **WRONG** | Says `APP_VERSION currently 2.6.0`, `Protocols 1–41`, `RULES.md`, `~1160 tests`. The read-first orientation file, and it's the most wrong |
| `self-improving-code.md` | Fix a class → add a guard so it can't recur | STALE | `The owner watches the session transcripts and will catch work-arounds.` Cites P2a + RULES.md |
| `session-management-rule.md` | Session spawning, push serialization, model selection | SUPERSEDED | Most personal file in the store, but publishable. Dispatch-era mechanisms |
| `time-and-work-attribution.md` | You corrected me for inflating timescales; date from git log | CURRENT | `"you keep saying months and years but the changelog tells you it's been like a month or two"`. Project-age anchor needs its date moved |
| `trim-stages-plan.md` | The four-stage governance trim; evidence gate before stage 2 | **CURRENT** | Written 2026-07-20, most accurate file in the archive. One block reads open but landed same day |
| `utf8-write-safety.md` | Never PowerShell-write non-ASCII; Suite 90 guards mojibake | CURRENT | Now Protocol 39. Still a live constraint on this machine |
| `workflow-audit-gap-and-fixes.md` | The skipped stage-3 audit + four workflow fixes | STALE | **Q11.** Verified: the Protocol 8 amendment is still absent. *"Until amended, the protocol still lies"* is still true |
### Store: `project-C--Dev--GEM-Website-version` (10 files — CLI project memory)
| File | What it is | Accuracy | Why / Q |
|---|---|---|---|
| `MEMORY.md` | Index of the 9 others | STALE | Entries describe files that have drifted |
| `backup_archive_repo.md` | The archive repo + how to run sync.ps1 + the sandbox gotcha | **WRONG** | **The 6-stores/164-files error originates here.** Also says the store has 9 files; it has 10. The sandbox gotcha is CURRENT and important |
| `deploy_branch_model.md` | Branch model, staging, Cloudflare Access setup | STALE | ⛔ **worst secrets file — see Blocker.** Says prod is at v2.6.0; it's 2.8.0 |
| `feedback_changelog_batching.md` | Superseded batching preference | SUPERSEDED | Correctly self-marked. Cites Protocol 2a |
| `feedback_design_overhaul_unit_scope.md` | Ask don't guess on DO-* scope; you favor the tightest reading | SUPERSEDED | Design overhaul complete. The *principle* is durable |
| `planning_filed_by_roadmap_version.md` | File planning/ by producing release, never by mtime | CURRENT | `"which release's work PRODUCED this document?"` — you caught this twice. Load-bearing |
| `project_fo3_pipboy_design.md` | FO3 design doc; awaiting your 5 answers | SUPERSEDED | The skin shipped. "Awaiting sign-off" is long past |
| `project_state.md` | **130 KB running ship-log — the largest memory file** | **WRONG as state** | **Q10.** ~55 entries, 2026-06-26→07-18. See Read-this-first #3 |
| `reference_docs.md` | BRAIN_DUMP (local) + QUEUE.md (committed) pointers | CURRENT | Both exist as described |
| `unenforced_protocol_23.md` | P23 is right, the code violates it, a guard is owed | **SUPERSEDED** | The guard was built — Suite 236, 2026-07-18. This file's entire thesis is now false |
### Store: `project-C--Dev--GEM--robco-local-backup` (4 files — this repo's live memory)
| File | What it is | Accuracy | Why / Q |
|---|---|---|---|
| `MEMORY.md` | Index of 3 | CURRENT | Accurate |
| `backup-memory-topology.md` | How sync.ps1 discovers stores; the Roaming-junction gotcha | STALE | Says `~9 files` / `~73 files`; actual 10 / 76. **The "no credentials" scan line should not be read as publishing clearance** |
| `museum.md` | The museum generator, constraints, conventions, wiring | **CURRENT** | Updated today. Accurate down to the `museum/site/index.html` entry-point warning |
| `planning-additive-only.md` | planning/ is additive-only; the recovery finding | CURRENT | The owed Protocol 48 note is **still owed** — verify against CLAUDE.md before closing |
### Store: `project-C--Dev--GEM-RobCo-AI` (2 files)
| File | What it is | Accuracy | Why / Q |
|---|---|---|---|
| `MEMORY.md` | Index of 1 | CURRENT | — |
| `local-ai-delegation-verdict.md` | Shorter duplicate of the localmode verdict | CURRENT | Near-duplicate — worth one decision, not two |
### Store: `project-C--Users-zerckzzy-OneDrive-…` (2 files — the dead OneDrive path)
| File | What it is | Accuracy | Why / Q |
|---|---|---|---|
| `MEMORY.md` | Index of 1 | STALE | Store is a fossil of the pre-2026-06-26 OneDrive path |
| `project_state.md` | Ship-log fossil | **WRONG** | `APP_VERSION: 2.0.1`, `255 tests across 23 suites`, `Protocols 1–28`, branch `main`. Every state claim is ~6 versions stale. **Q18 — delete this store outright?** |
---
## What I'd do first, if you want a recommendation
1. **Q0** — the email scrub. It's the only finding with a real downside, it has two sources plus baked museum output, and the git-history question needs answering *before* the repo goes public rather than after.
2. **Q10** — cap `project_state.md`. The biggest single source of wrong-but-confident state.
3. **Q11** — the two owed protocol amendments. Both files have been telling us for a week.
4. **Q18** — delete the dead OneDrive store. Two fossil files, every state claim wrong, and it takes the `zerckzzy` directory name with it.
Everything else can wait for the keyboard.
**The thing worth saying plainly:** this audit was commissioned to enable a one-time split of memory into publishable and private stores. **That split now looks unnecessary.** Nothing here needs partitioning by sensitivity — it needs three strings scrubbed and a lot of stale claims corrected. If you agree, the museum can just read the memory, which was the outcome you wanted anyway, and the remaining work is entirely the accuracy half.
---
# PROVENANCE — who wrote it, which model, at what effort
**Added on request, for the museum's memory room.** Everything below is **recorded data joined from disk**. Nothing here is inferred from writing style or content — where the record is silent, the cell says *unknown*, and that is the honest answer rather than a guess.
## What's recoverable, in one line each
| Axis | Recoverable? | Coverage |
|---|---|---|
| **Session** | Yes, partly | **89 of 94** files carry `originSessionId`. But **19 of those are not session IDs** — see below. **70** are real GUIDs. |
| **Model** | **Yes — 63 of 94 (67%)** | Joined via transcript. The join works because **every session is model-pure.** |
| **Agent role** | **Yes — 94 of 94 (100%)** | Structural: derivable from which store the file lives in. |
| **Effort** | **Essentially no — 1 of 94** | The field exists but only started being written 2026-07-20. Confirmed present, confirmed useless historically. |
## 1. Session — 89 of 94, but three ways of being unusable
- **70 files** carry a genuine GUID.
- **⚠ 19 files carry their own filename slug in the `originSessionId` field** — e.g. `design-overhaul-direction.md` has `originSessionId: design-overhaul-direction`. That is not a session ID and never was; it's a self-reference written into a provenance field. These can never be joined to anything. **This is a data-quality defect worth knowing about independently of the museum.**
- **7 files cite `1060dea9-…`**, which is the *agent workspace* GUID, not a session. No transcript by that name exists. Unjoinable.
- **5 files have no `originSessionId` at all** — all five are the per-store `MEMORY.md` index files, which are maintained by hand rather than written by a session. Reasonable that they lack one.
## 2. Model — the join works, and here's exactly why
Transcripts live at `.claude/projects/<slug>/<session>.jsonl` (CLI) and, for the desktop orchestrator, nested under `local-agent-mode-sessions/…/.claude/projects/…/<session>.jsonl`. Each assistant message carries `"model"`.
**All 16 memory-linked transcripts still exist on disk.** The orchestrator's is 220 MB.
The load-bearing finding: **I checked all 15 joinable sessions and every one is model-PURE** — a session runs exactly one model start to finish, no mid-session switching. That matters because it means I do *not* need to locate the individual write to know the model. If a memory was born in a session, and that session only ever ran one model, the attribution is sound.
I tried to pin writes to individual `Write`/`Edit` tool calls as a stricter check; only 2 files pinned that way, because localmode memory writes don't go through those tools. Session purity makes that moot.
**Result — 63 of 94 files resolve:**
| Model | Files |
|---|---|
| **Opus 4.8** | 58 |
| **Sonnet 4.6** | 3 |
| **Sonnet 5** | 1 |
| **Fable 5** | 1 |
| *unknown* | 31 |
The archive is overwhelmingly Opus 4.8. The four exceptions are the interesting exhibit:
- `project_fo3_pipboy_design.md` — **Fable 5**. The design memory, written by the design model. Consistent with the Opus/Sonnet/Fable routing rule, and it's nice that the record proves it rather than asserting it.
- `feedback_design_overhaul_unit_scope.md` — **Sonnet 5**
- `feedback_changelog_batching.md`, both `project_state.md` files — **Sonnet 4.6**
## 3. Agent role — 100%, and it's structural
Role is not recorded per file, but it doesn't need to be — the store *is* the role:
| Store | Role | Files |
|---|---|---|
| `localmode-1060dea9-…` | **Desktop orchestrator** (Dispatch). Its 76 files are the orchestrator's own working memory; 49 trace to one long-running session, `0b7c5f41`. | 76 |
| `project-C--Dev--GEM-Website-version` | **CLI project sessions** against the app repo — many short sessions, one memory each | 10 |
| `project-C--Dev--GEM--robco-local-backup` | **CLI project sessions** against this archive repo | 4 |
| `project-C--Dev--GEM-RobCo-AI` | **CLI project sessions** against the (now deleted) local-AI experiment | 2 |
| `project-C--Users-zerckzzy-OneDrive-…` | **CLI project sessions**, dead OneDrive path — a fossil | 2 |
Note the shape difference, which is the honest story the room should tell: the orchestrator store is **one mind writing 76 notes over weeks**; the CLI stores are **many short sessions each leaving one note**.
## 4. Effort — confirmed, and confirmed nearly worthless
**Denied as a historical axis, and I can be precise about why.** `"effort"` *is* a real recorded field — it appears as a JSON key on 327 messages in the orchestrator transcript, with values like `"high"`. But every occurrence is dated **2026-07-20**. It is a new field that started being written days ago.
**Exactly 1 of 94 memory files (`docked-ideas.md`, effort=`high`, 2026-07-20T17:39Z) falls inside the window where effort was being recorded.** For the other 93 the field simply did not exist when they were written. It is not lost — it was never captured.
## 5. Could we record model and role going forward?
**Yes, and your instinct about the shape is right — sparse for old entries, complete for new ones, improving over time. That's the honest version and it's better than a fabricated one.**
Two caveats worth knowing before you commit:
- **The memory frontmatter is written by the harness, not by me.** `node_type` / `type` / `originSessionId` appear automatically; I don't control that schema. So "add `model:` to frontmatter" isn't something a project convention can enforce for the localmode store — a session can add fields when it hand-writes a file, but auto-created memories will keep the existing shape. **The reliable version is to capture it at sync time, not write time**: `sync.ps1` already walks every store and writes `_CAPTURE_MANIFEST.txt`; it could do this same join and emit a `_PROVENANCE.tsv` alongside it. That's under your control, applies to all 94 retroactively, and doesn't touch a single memory file.
- **Backfill is possible right now for 63 files** — that's what this section is. It doesn't need to wait for new writes.
**Q19 — do you want `sync.ps1` to emit a provenance sidecar on every run** (session, model, role, effort-if-present, per file), so the museum reads it as data instead of the room being hand-maintained? It's additive, it can't fail the sync, and it fits the existing manifest pattern.
**One thing I'd flag as worth fixing regardless of the museum:** the 19 self-slug `originSessionId` values are a silent data defect. Nothing depends on them today, which is exactly why nobody noticed. If provenance becomes a published exhibit, they become 19 visible holes.
---
## Per-file provenance
⚠ = the `originSessionId` field contains the file's own name, not a session ID.
### localmode-1060dea9-0dc3-42b4-958d-2a6f7a6c0c58 (76 files · desktop orchestrator)
| File | originSessionId | Model |
|---|---|---|
| `always-acknowledge-actions.md` | `0b7c5f41` | Opus 4.8 |
| `appcheck-enforce-reminder.md` | `appcheck-enforce-reminder` ⚠self-slug | unknown |
| `architecture-review-2026-07-13.md` | `0b7c5f41` | Opus 4.8 |
| `audit-completeness-gaps-2026-07-14.md` | `0b7c5f41` | Opus 4.8 |
| `bezel-fidelity-pass.md` | `0b7c5f41` | Opus 4.8 |
| `changelog-rules.md` | `0b7c5f41` | Opus 4.8 |
| `ci-node-parity.md` | `0b7c5f41` | Opus 4.8 |
| `cli-terminal-ideas.md` | `0b7c5f41` | Opus 4.8 |
| `coverage-mind-map-deliverable.md` | `1060dea9` | unknown — no transcript |
| `data-provenance-program-complete.md` | `1060dea9` | unknown — no transcript |
| `deep-systems-review-2026-07-13.md` | `0b7c5f41` | Opus 4.8 |
| `delete-leftovers-rule.md` | `delete-leftovers-rule` ⚠self-slug | unknown |
| `design-overhaul-direction.md` | `design-overhaul-direction` ⚠self-slug | unknown |
| `dev-branch-workflow.md` | `dev-branch-workflow` ⚠self-slug | unknown |
| `dispatch-autonomy-preference.md` | `0b7c5f41` | Opus 4.8 |
| `dispatch-session-launch-discipline.md` | `1060dea9` | unknown — no transcript |
| `docked-ideas.md` | `0b7c5f41` | Opus 4.8 |
| `engineering-metrics-log.md` | `0b7c5f41` | Opus 4.8 |
| `external-ai-prompt-delivery.md` | `1060dea9` | unknown — no transcript |
| `fo3-karma-rebuild.md` | `0b7c5f41` | Opus 4.8 |
| `fo3-pipboy-program.md` | `0b7c5f41` | Opus 4.8 |
| `free-firebase-ideas.md` | `0b7c5f41` | Opus 4.8 |
| `idea-secret-figure-variant.md` | `0b7c5f41` | Opus 4.8 |
| `local-ai-delegation-verdict.md` | `0b7c5f41` | Opus 4.8 |
| `melee-scope-rule.md` | `0b7c5f41` | Opus 4.8 |
| `MEMORY.md` | **absent** | unknown |
| `nv-test-save-fixture.md` | `0b7c5f41` | Opus 4.8 |
| `opus-plan-sonnet-implement-workflow.md` | `0b7c5f41` | Opus 4.8 |
| `owner-templates.md` | `0b7c5f41` | Opus 4.8 |
| `parked-2-9-0-update.md` | `parked-2-9-0-update` ⚠self-slug | unknown |
| `parked-accessibility-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-ai-feature-eval.md` | `0b7c5f41` | Opus 4.8 |
| `parked-ai-to-native-feature-audit.md` | `parked-ai-to-native-feature-audit` ⚠self-slug | unknown |
| `parked-capability-survey.md` | `0b7c5f41` | Opus 4.8 |
| `parked-cloud-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-code-quality-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-command-list-cleanup.md` | `parked-command-list-cleanup` ⚠self-slug | unknown |
| `parked-content-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-deferred-work-program.md` | `0b7c5f41` | Opus 4.8 |
| `parked-diegetic-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-fallout4-support.md` | `0b7c5f41` | Opus 4.8 |
| `parked-mainrevert-cloudsave-compat.md` | `parked-mainrevert-cloudsave-compat` ⚠self-slug | unknown |
| `parked-mistify-salvage-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-mobile-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-nv-overhaul-design-audit.md` | `parked-nv-overhaul-design-audit` ⚠self-slug | unknown |
| `parked-performance-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-phone-archive-access.md` | `1060dea9` | unknown — no transcript |
| `parked-recreation-funprompt.md` | `0b7c5f41` | Opus 4.8 |
| `parked-roadmap-rebaseline.md` | `parked-roadmap-rebaseline` ⚠self-slug | unknown |
| `parked-synthesis-masterplan.md` | `0b7c5f41` | Opus 4.8 |
| `parked-task-workflow.md` | `0b7c5f41` | Opus 4.8 |
| `parked-test-strength-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-token-usage-audit.md` | `parked-token-usage-audit` ⚠self-slug | unknown |
| `parked-ui-consistency-audit.md` | `0b7c5f41` | Opus 4.8 |
| `parked-vats-offline-audit.md` | `parked-vats-offline-audit` ⚠self-slug | unknown |
| `parked-wasteland-uplink-engine.md` | `parked-wasteland-uplink-engine` ⚠self-slug | unknown |
| `per-game-device-form.md` | `per-game-device-form` ⚠self-slug | unknown |
| `player-control-principle.md` | `player-control-principle` ⚠self-slug | unknown |
| `popup-card-style-standard.md` | `0b7c5f41` | Opus 4.8 |
| `post-2-8-0-brain-dump.md` | `0b7c5f41` | Opus 4.8 |
| `primary-users-devices.md` | `0b7c5f41` | Opus 4.8 |
| `project-must-stay-free.md` | `0b7c5f41` | Opus 4.8 |
| `prompt-library-campaign-framings.md` | `prompt-library-campaign-framings` ⚠self-slug | unknown |
| `queued-fixes.md` | `queued-fixes` ⚠self-slug | unknown |
| `reframing-review-2026-07-13.md` | `0b7c5f41` | Opus 4.8 |
| `roadmap-parked-placement.md` | `0b7c5f41` | Opus 4.8 |
| `robco-audit-program.md` | `0b7c5f41` | Opus 4.8 |
| `robco-os-architecture.md` | `robco-os-architecture` ⚠self-slug | unknown |
| `robco-phase6-backlog.md` | `0b7c5f41` | Opus 4.8 |
| `robco-uos-project.md` | `0b7c5f41` | Opus 4.8 |
| `self-improving-code.md` | `0b7c5f41` | Opus 4.8 |
| `session-management-rule.md` | `session-management-rule` ⚠self-slug | unknown |
| `time-and-work-attribution.md` | `1060dea9` | unknown — no transcript |
| `trim-stages-plan.md` | `1060dea9` | unknown — no transcript |
| `utf8-write-safety.md` | `0b7c5f41` | Opus 4.8 |
| `workflow-audit-gap-and-fixes.md` | `0b7c5f41` | Opus 4.8 |
### project-C--Dev--GEM-Website-version (10 files · CLI project session)
| File | originSessionId | Model |
|---|---|---|
| `backup_archive_repo.md` | `0d519573` | Opus 4.8 |
| `deploy_branch_model.md` | `31cdf095` | Opus 4.8 |
| `feedback_changelog_batching.md` | `ae4dae01` | Sonnet 4.6 |
| `feedback_design_overhaul_unit_scope.md` | `545706c4` | Sonnet 5 |
| `MEMORY.md` | **absent** | unknown |
| `planning_filed_by_roadmap_version.md` | `dba2683f` | Opus 4.8 |
| `project_fo3_pipboy_design.md` | `44d8e54f` | Fable 5 |
| `project_state.md` | `33225ceb` | Sonnet 4.6 |
| `reference_docs.md` | `e95ed37d` | Opus 4.8 |
| `unenforced_protocol_23.md` | `ddc556a5` | Opus 4.8 |
### project-C--Dev--GEM--robco-local-backup (4 files · CLI project session)
| File | originSessionId | Model |
|---|---|---|
| `backup-memory-topology.md` | `8665b012` | Opus 4.8 |
| `MEMORY.md` | **absent** | unknown |
| `museum.md` | `798ebe8e` | Opus 4.8 |
| `planning-additive-only.md` | `c6b932fe` | Opus 4.8 |
### project-C--Dev--GEM-RobCo-AI (2 files · CLI project session)
| File | originSessionId | Model |
|---|---|---|
| `local-ai-delegation-verdict.md` | `b653ebe8` | Opus 4.8 |
| `MEMORY.md` | **absent** | unknown |
### project-C--Users-zerckzzy-OneDrive-Documents--GEM-Website-version (2 files · CLI project session)
| File | originSessionId | Model |
|---|---|---|
| `MEMORY.md` | **absent** | unknown |
| `project_state.md` | `898621fa` | Sonnet 4.6 |
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).