rdmsm4x — rooDB and replicantDB generalized: no customers, no vendors, no industry compiled in
2026-09-01 23:33–23:57 EDT · rdmsm4x · Claude Code (session tyrell-c5)
Rich, in sequence: "remove 'The Walt Disney Company (Disney+ Core)' from rooDB" → "RooDB should have no hardcoded customer info" → "the domains are also specific to networking, RooDB needs to work generally for all people" → "please generalize replicantDB and rooDB, you can actually do the same for rdDB" → "I'd rather it discover generally and get narrower in time."
Result
| Repo | Commit | Tests before → after |
|---|---|---|
~/dev/apps/rooDB |
963707f |
172 → 172, 0 failures (identical count — nothing silently dropped) |
~/dev/apps/replicantDB |
190f895 |
1102 → 1105, 0 failures |
~/dev/apps/rdDB |
— | MOVED.md husk, no Package.swift; inherits
this when re-seeded from rooDB |
Tickets: SEC-20260901-06 resolved with evidence;
SEC-20260901-04 (Disney only) resolved as superseded; a
FEAT opened for the "narrow over time" half.
What was compiled in, and where it went
rooDB before: five named enterprise customers and
~30 Arista/Cisco/Juniper/Palo Alto rules seeded into every fresh
database; the same customers hardcoded in the classifier; a real
customer as the LLM prompt's worked example; library filter chips, the
customer corpus view, and the CLI's default argument all naming real
clients. replicantDB was customer-clean but still a
networking product by default (four net_* seeds pinning L1,
EVPN examples in the prompt, a TAC heuristic on the words
"case"/"sr").
After, both: the shipped seed is structural only
(languages, cloud tooling, invoices/quotes/contracts,
tax/medical/identity). Entity, vendor and solution labels come from a
runtime vocabulary file that ships empty. Unmatched
files fall to neutral defaults instead of an Apple/Swift or networking
taxonomy. The LLM must take L2/L4 from the document's own text and never
invent one. The networking taxonomy is moved, not
deleted: docs/rules.example.json and
docs/vocabulary.example.json in each repo, loadable by
copying to ~/Library/Application Support/<app>/.
Two substring bugs fixed on the way, both of which mislabel a general
user's files: *tac* on a filename matched
contacts.csv; hasWord("case") labelled
anything with "case" as a TAC case.
Verified on the artifact, with a positive control
grep for every real name across Sources/ +
Tests/ in both repos returns only the brand-boundary
assertion (which names them in order to assert their absence) and one
explanatory comment. The same pattern against
docs/vocabulary.example.json returns 2 — the search can
match.
Not done, deliberately
rooDB/docs/history/legacy-rddb/— 18 tracked historical rdDB documents, 28 real-name mentions. Archival, not product. Needs Rich's call: anonymize in place, or move out of the App-Store-bound repo. Git history keeps the names either way.- The learning loop (promote discovered labels into the vocabulary from the UI, re-classify, measure). Filed as a FEAT under rooDB.
SESSION-STATE.mdin both repos belongs to other sessions (rooDB: agy on rdmbair15m5; replicantDB: an uncommitted edit by another writer) and was left untouched. Both were notified.
Undo
git -C ~/dev/apps/rooDB revert 963707f ·
git -C ~/dev/apps/replicantDB revert 190f895.
No secrets recorded. No system settings, installed software, or fleet configuration changed.