Transparent Deterministic Algorithm · Spec v1.0

Methodology & Status Classification Rules

We never guess or use subjective editorial opinions. Every game's status on EA Tracker is computed from a deterministic rule set evaluated against public Steam timestamps. Below are the exact configuration values exported directly from config/status.ts.

1. Deterministic Status Decision Tree (Evaluated in Order)

#1Active

Shipped a patch or build within the last 90 days, or posted a developer announcement within the last 60 days (with a game update in the past year).

#2Slowing Down

Last recorded patch, build update, or developer announcement was between 91 and 180 days ago.

#3Stalled

Last recorded update was between 181 and 365 days ago, or the developer posted recently without shipping a patch/build for over 12 months.

#4Likely Abandoned

No developer announcement, patch note, or public Steam branch build update recorded for over 365 days.

#5Left Early Access (1.0)

Graduated from Steam Early Access to full 1.0 release while tracked. We continue monitoring post-1.0 patches.

#6Not Enough Data

No public community announcements or branch build timestamps found on Steam yet.

Special Rule (Talk-Without-Shipping Cap): If a developer posts community announcements recently (≤60 days), but has not shipped a patch note or public branch build update in over 365 days, the status is capped at Stalled with the explicit reason: “Developer posted recently, but no game update in N months.”

2. Exact Thresholds (config/status.ts)

{
  "activeShipDays": 90,
  "activePostDays": 60,
  "slowingActivityDays": 180,
  "stalledActivityDays": 365,
  "postOnlyMaxShipDays": 365,
  "scoreDecayDays": 540,
  "minIndexableReviews": 10,
  "minIndexablePosts": 3
}

3. Activity Score Formula (0–100)

Every game receives a 0–100 activityScore combining update recency and 12-month shipping frequency:

recency(date) = max(0, 1 - daysSince(date) / 540)

activityScore = round(
  40 * recency(lastShipAt) +
  25 * recency(lastDevPostAt) +
  20 * min(patches12m / 12, 1) +
  15 * min(posts12m / 12, 1)
)

Missing signals are scored as 0 and explicitly noted in the game's “Why This Status?” section.

4. Data Sources & Refresh Cadence

  • Steam Store AppDetails & AppReviews: Checks Genre ID 70 (Early Access), initial release date, pricing, and review summaries. Rate-limited strictly to 1 request per 2 seconds.
  • Steam Official Web API (ISteamNews/GetNewsForApp/v2): Filtered strictly to feeds=steam_community_announcements (feed_type = 1) so third-party media articles are never counted as developer updates.
  • Public Depot Build Updates (api.steamcmd.net): Captures silent patches where a developer pushes a new build to the public branch without posting an announcement.