fix: treat a private Raider.IO profile as no profile - #36
Merged
Conversation
Raider.IO answers 403 profile_is_private when a guessed user name belongs to someone whose profile is private. Every non-404 failure was classified transient, so this permanent answer was retried five times and then failed the run as upstream_unavailable — "Character data is temporarily unavailable." for any character whose ownership is not public and whose name matches a private Raider.IO user. Classify 403 as a distinct forbidden failure and treat it like not_found when resolving a profile guess: an invisible profile yields no relationships, which is not an outage. Character and claimed-character requests keep their present behaviour for a 403. Confirmed against the live endpoint, which returns 403 for /api/user/view-characters?name=shurkle. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qh8Zb2HnaxebWrRLUMoAiv
This was referenced Aug 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #35. With the parse fixed,
eu/draenor/shurklegot further and then failed five attempts in ~130 ms each asupstream_unavailable, with zero Blizzard requests — "Character data is temporarily unavailable."The cause, live:
shurklehas no public Raider.IO ownership, so discovery falls back to profile guesses — one of which is the character's own name. That name belongs to a user whose profile is private.responseFailuremapped every non-404 totransient, so a permanent answer about visibility was retried as an outage and then failed the whole run.forbiddenfailure kind.resolveProfileGuesstreatsforbiddenlikenot_foundand returnsnull: an invisible profile yields no relationships. A guess is speculative by nature, so failing the run on one is wrong regardless.getCharacterandgetClaimedCharacterskeep their current behaviour for a 403 (retryable), since neither has a confirmed live case. Worth a look separately — a 403 there is equally permanent.New fixture with the real body, plus a test that was red with
raiderio_transient.🤖 Generated with Claude Code
https://claude.ai/code/session_01Qh8Zb2HnaxebWrRLUMoAiv