Frontmatter
| id | 9137 |
| title | Implement ID-Based Rename Handling for DevIndex |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Feb 13, 2026, 3:23 AM |
| updatedAt | Feb 13, 2026, 2:20 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9137 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9106 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 13, 2026, 2:20 PM |
Implement ID-Based Rename Handling for DevIndex
tobiu assigned to @tobiu on Feb 13, 2026, 3:24 AM
tobiu added parent issue #9106 on Feb 13, 2026, 3:24 AM

tobiu
Feb 13, 2026, 2:16 PM
Input from Gemini 3 Pro:
✦ Implemented ID-Based Rename Handling for DevIndex.
Key Components:
GitHub Service (
GitHub.mjs):
- Added
getLoginByDatabaseId(dbId): Queries the GraphQL API using the integerdatabaseId(stored in ourusers.jsonlasi) to resolve the currentlogin.Storage Service (
Storage.mjs):
- Added
deleteUsers(logins): Efficiently removes a batch of users from the rich data store (users.jsonl). This is crucial for cleaning up the old/stale login records after a rename is detected.Updater Service (
Updater.mjs):
- Enhanced
processBatchwith a Rename Detection Logic flow inside the error handler.- Trigger: When a user fetch fails with a fatal error (404/Not Found) AND we have a record of that user with a GitHub ID (
i).- Resolution:
- Queries GitHub for the new login using the ID.
- If a new login is returned (and is different from the old one):
- Prune Old: Marks the old login for deletion from
tracker.json(viaindexUpdates) andusers.jsonl(viaprunedLogins).- Fetch New: Immediately fetches data for the new login.
- Persist New: Adds the new user data to
resultsandindexUpdates.- Outcome: The system self-heals. The old record is replaced by the new one without losing continuity (other than the login key change).
This logic ensures that high-value users who rename their accounts are not lost or penalized.
tobiu closed this issue on Feb 13, 2026, 2:20 PM
Currently, when a user changes their GitHub username, the DevIndex
Updaterfails with a 404 (Not Found) because it queries by the oldlogin. This results in the user being moved to the Penalty Box and eventually deleted, while the new username might be rediscovered as a fresh user, losing history continuity.The Solution: ID-Based Rename Recovery
fetchUserData(login)returns a 404/Not Found.github_id(fieldi) from our localusers.jsonlrecord for that login.node(id: "...")oruser(id: ...)) to find the current login.tracker.json: Remove old key, add new key (preserve timestamp or reset).users.jsonl: Updatel(login) andn(name) fields.This ensures we track the human, not just the handle.