Skip to content

Add orphan finder - #6

Merged
wmantly merged 3 commits into
mainfrom
add-orphan-finder
Jul 3, 2026
Merged

Add orphan finder#6
wmantly merged 3 commits into
mainfrom
add-orphan-finder

Conversation

@wmantly

@wmantly wmantly commented Jul 3, 2026

Copy link
Copy Markdown
Owner

No description provided.

wmantly and others added 3 commits July 3, 2026 12:15
findOrphans() reconciles the whole keyspace against the model-redis
storage contract (<Model> set + <Model>_<id> hashes) and reports three
model-agnostic orphan classes: leaked hashes (hash with no set member),
dangling members (set member with no hash), and broken rel:'one'
foreign keys. Model families are discovered from the keyspace, so
models that were used but never register()-ed are still checked.

pruneOrphans() removes only dangling set members, which reference
nothing and so cannot lose data; leaked hashes and broken relations
are left for manual review.

Adds SCAN/TYPE to the test mock, a tests/orphans.test.js suite (9
tests), and README documentation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump the redis dependency from ^4.6.10 to ^6.1.0. The only code change
needed is the SCAN cursor in findOrphans: redis v5+ requires the cursor
as a string, so _scanKeys now starts and compares it as '0' instead of
the number 0.

Verified against a live redis 7.0 server: CRUD, key-rename on update,
listDetail filtering, remove, rel:one loading, and orphan
detection/pruning all pass, plus the mock unit suites (75 passing).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@wmantly
wmantly merged commit 23dbc9b into main Jul 3, 2026
3 checks passed
@wmantly
wmantly deleted the add-orphan-finder branch July 3, 2026 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant