Skip to content

Sentinel-verified redeploy detection in price-backfill#14

Merged
icemansparks merged 1 commit into
merkerhoodfrom
fix/sentinel-redeploy-detection
Jul 1, 2026
Merged

Sentinel-verified redeploy detection in price-backfill#14
icemansparks merged 1 commit into
merkerhoodfrom
fix/sentinel-redeploy-detection

Conversation

@icemansparks

Copy link
Copy Markdown
Collaborator

Problem

The redeploy heuristic re-resolved the wowauctions.net buildId after N consecutive 404s. But ~half of WotLK items legitimately have no ChromieCraft data (a normal 404), so long no-data streaks looked like redeploys. The real 20,721-item run hit gen=181, triggered a 9,005-item recovery re-fetch, and rate-limited the site into 3,175 false fetch-failed results (~1,400 of which actually had prices). Those had to be salvaged with a manual gentle re-fetch.

Fix

A genuine redeploy makes the current buildId 404 for every item, including ones that always have data. So after --redeploy-threshold consecutive 404s, verify with a known-good sentinel item (--sentinel-id, default 4389 = Gyrochronatom):

  • Sentinel still returns data → buildId is fine, the 404s are genuine no-data → reset, no re-resolve.
  • Sentinel also 404s → real redeploy → re-resolve, and bump the generation only if the buildId actually changed (so the recovery pass stays scoped).

Cost of a false alarm is now one cheap sentinel fetch per streak instead of a re-resolve storm.

Tests

29 passing. NoteResultTest rewritten to cover: sentinel-ok (no re-resolve), sentinel-404 with changed buildId (re-resolve + gen bump), sentinel-404 with unchanged buildId (no gen bump), and counter reset.

A run of 404s is normally just items with no ChromieCraft data, not a site
redeploy. The old heuristic re-resolved the buildId after N consecutive 404s,
so long no-data streaks caused a re-resolve storm + huge recovery re-fetch that
rate-limited the site (a real 20k run hit gen=181 and 3175 false fetch-failures).

Now, on crossing the threshold, verify with a known-good sentinel item
(--sentinel-id, default 4389): only re-resolve if the sentinel also 404s under
the current buildId, and bump the generation only if the buildId actually
changed. Adds --sentinel-id, documents behavior, updates tests.
@icemansparks
icemansparks merged commit fdbf2a9 into merkerhood Jul 1, 2026
1 check passed
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