Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260824-0010-rdreceipt-rename-and-dataroo-removal

rdmsm4x-changelog-20260824-0010-rdRECEIPT-rename-and-dataroo-removal

2026-08-24 00:10 EDT · host rdmsm4x · Claude Code (Opus 5). Continues rdmsm4x-changelog-20260823-2337-rdreceipt-folder-consolidation.md.

Summary

~/dev/apps/rdRECEIPT now spells its name one way. Six identifiers were deliberately left spelling it the old way because renaming them would have made an existing encrypted vault permanently undecryptable. All dataroo.net references removed from the project.

Changes

  1. Layout decision recorded. Two sessions held opposite instructions — receiptroo-3b was executing a three-way split (shared ~/dev/lib/receipt-engine + rdRECEIPT + a new ~/dev/apps/receiptROO) reported as a 23:30 decision; Rich told this session at 23:50 to move everything into ~/dev/apps/rdRECEIPT/. Escalated rather than guessed. Rich chose consolidate — one folder. The split was stopped before any file left the tree.
  2. Orphaned real-data corpus brought in. 29 real receipts/invoices from ~/dev/temp/2026-08-21-staging/_inbox/2026-08-12/invoices-receipts → data/real-corpus/. .gitignore rule added and confirmed active before any file landed. Copied, not moved; source left in place. ~/Documents/_receipts (245 entries, 1.5 GB) deliberately left alone.
  3. Name normalized to rdRECEIPT. 7 SwiftPM modules + 6 test targets renamed (dirs via git mv), 134 source/test/doc files rewritten, artifact filenames renamed and all live references repointed. Commit 00b4a6a, 154 files changed.
  4. dataroo.net removed from the project and from this archive's earlier changelog. Zero references remain in ~/dev/apps/rdRECEIPT.
  5. Backup gap closed (caught by receiptroo-3b): agy-rdreceipt.bundle and agy-ReceiptRoo_rdKIPP.bundle were missing from ~/dev/_backups/agy-preconsolidation-20260823-2325/ because both source repos were already deleted when that set was bundled. Copied in, sha256-verified, clone-tested.

NOT renamed, and why — the important part

Six identifiers still spell the old name. They are not cosmetic; a text substitution would orphan data rather than rename it:

Identifier Consequence of renaming
"rdreceipt-sqlcipher-db-key" (KeyDerivation.swift:39) HKDF info string → different derived key → existing SQLCipher vault permanently undecryptable
"rdreceipt-image-cache-key" (KeyDerivation.swift:40, EncryptedImageCache.swift:95) same, for the encrypted image cache
"app.rdreceipt.vault" (KeychainManager.swift:42) Keychain service name — app cannot find its own master key
"rdReceipt" (EncryptedVault.swift:58) Application Support vault directory
"rdReceipt/ImageCache" (EncryptedImageCache.swift:139) cache directory

Live data confirmed present: ~/Library/Application Support/rdReceipt/vault.db, 102 KB + 313 KB WAL, last written 2026-08-23 23:53, with a populated ImageCache/. Renaming these needs a migration (read with old key/path, re-derive, re-encrypt, move). Logged OPEN in ISSUES.md.

Also preserved: PROVENANCE.md's historical source paths and GitHub remote names, and the dated archives under docs/changelogs/, docs/consolidation/, .agents/ — rewriting those falsifies a record. Apps/ReceiptRoo keeps its name; ReceiptRoo is a different name, not a variant.

Verification evidence

Check Result
swift build Build complete!
swift test 505 tests / 87 suites, exit 0
xcodegen + xcodebuild ReceiptRoo-macOS ** BUILD SUCCEEDED **
Persisted identifiers after rename all 6 confirmed intact by grep
dataroo.net in project 0 references
Recovered bundles sha256 identical, git clone succeeds

One test failed on the first clean-cache run (CLI subprocess latency, 2.0 s budget) and passes warm at 0.606 s. Reproduced both ways before attributing it — cold-cache flakiness after rm -rf .build, not the rename.

Outstanding owner actions (Rich)

  1. Which implementation is v1 — still open. The layout decision settled where code lives, not which tree ships.
  2. The vault-identifier migration — worth writing, or leave the internal strings as they are?
  3. Apps/ReceiptRoo naming / bundle ID — com.eastcoastscience.ReceiptRoo, and the .mobile suffix that forecloses universal purchase.
  4. Stale copies on rdmbair15m5 — approve removal.
  5. dataroo.net outside this project: 2,094 files across ~/dev were NOT touched. That is the fleet publishing stack (scripts/gen_site.py, publish_site.zsh, the com.eastcoastscience.devsite launchd job) plus unrelated projects, and your own global CLAUDE.md §10 mandates publishing dashboards there. Removing them would break the status site and contradict standing config. Say if you want that done as its own deliberate job.

Apple Notes

PENDING. This session is launchctl managername = Background and cannot send AppleEvents. From Terminal.app on rdmsm4x:

zsh ~/scripts/notes_changelog.zsh ~/dev/LLM/Claude/changelogs/rdmsm4x-changelog-20260824-0010-rdRECEIPT-rename-and-dataroo-removal.md