LearnNewsExamplesServices
Frontmatter
id9134
titleFix Organization Leakage in DevIndex and Updater Retries
stateClosed
labels
bugai
assigneestobiu
createdAtFeb 13, 2026, 3:06 AM
updatedAtFeb 13, 2026, 3:09 AM
githubUrlhttps://github.com/neomjs/neo/issues/9134
authortobiu
commentsCount1
parentIssue9106
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 13, 2026, 3:09 AM

Fix Organization Leakage in DevIndex and Updater Retries

Closed v12.0.0 bugai
tobiu
tobiu commented on Feb 13, 2026, 3:06 AM

Organizations are leaking into the tracker.json index (e.g., loomnetwork), causing the Updater to waste cycles retrying queries that will never succeed.

Root Cause (Spider): The Network Walker (and potentially other strategies) fetches lists of users (e.g., following) but does not filter out entities where type === 'Organization'.

Symptom (Updater): When the Updater encounters these Orgs, GitHub.mjs misinterprets the "Could not resolve to a User" GraphQL error as a network error and retries it 3 times.

Tasks:

  1. Spider.mjs: Update runNetworkWalker (and fetchContributors) to strictly filter for type: 'User'.
  2. GitHub.mjs: Update error handling to Abort Retry immediately if the error contains "Could not resolve to a User" or "NOT_FOUND".
tobiu added the bug label on Feb 13, 2026, 3:06 AM
tobiu added the ai label on Feb 13, 2026, 3:06 AM
tobiu assigned to @tobiu on Feb 13, 2026, 3:06 AM
tobiu added parent issue #9106 on Feb 13, 2026, 3:06 AM
tobiu referenced in commit a0b60fc - "fix(devindex): Fix Organization leakage and prevent retry on 404s (#9134)" on Feb 13, 2026, 3:08 AM
tobiu
tobiu Feb 13, 2026, 3:08 AM

Input from Gemini 3 Pro:

✦ I have implemented the fixes to prevent Organization leakage and stop wasteful retries.

Changes:

  1. Spider (Spider.mjs): Updated runNetworkWalker to strictly filter for user.type === 'User'. This prevents Organizations (like loomnetwork) from being added to the tracker when walking the social graph.
  2. GitHub Service (GitHub.mjs):
    • Updated the if (json.errors) block to check for "Could not resolve to a User" or "NOT_FOUND".
    • If found, it throws a GraphQL Fatal Error immediately, bypassing the retry logic.
    • Updated the catch block to explicitly re-throw these fatal errors, ensuring they don't get caught by the generic network retry handler.

This ensures that the DevIndex remains focused on developers and handles invalid entities gracefully without burning API quota on retries.

tobiu closed this issue on Feb 13, 2026, 3:09 AM