StarScout heuristics and anti-purge architecture
Buying $8-per-thousand stars from a generic social media panel destroys repository credibility. Within 72 hours, GitHub's automated abuse jobs purge the accounts, leaving a cliff-edge drop on your public star-history.com chart that every technical founder and investor can inspect in five seconds.
1. Inside CMU and Socket's StarScout detection algorithm (arXiv:2412.13459)
In December 2024, researchers from Carnegie Mellon University and Socket published StarScout (arXiv:2412.13459), an open-source graph analyzer scanning GH Archive across five years of public GitHub events. StarScout flagged over 4.5 million anomalous stars across 15,800+ repositories by isolating two structural signatures that cheap panels cannot hide:
Signature A: The low-activity actor cluster
Bulk SMM panels create disposable accounts in automated batches. These profiles have zero public repositories, zero commit history (PushEvent), zero IssueCommentEvent records, and an account creation date within days of their first star action. StarScout classifies any actor with ≤ 1 lifetime non-star event in a given month as a low-activity node. When more than 30% of a repository's stargazers match this profile, the repository is flagged directly.
Signature B: Lockstep bipartite graph clustering
Standard SMM panels run on PHP cron scripts (action=add with fixed runs and interval parameters). When 50 orders sit in the same panel queue, the panel's worker pool iterates through the same 500 bot tokens sequentially. In GH Archive, this forms a dense biclique in the (Actors × Repositories) bipartite graph within a narrow time window Δt. Even if a panel enables basic drip-feed, dividing 500 stars / 14 days via Math.floor(500 / 14) emits exactly 35 stars at the same minute every day, losing 10 fractional stars to integer truncation while broadcasting a periodic clock signal.
2. Architectural comparison: generic SMM panel vs. SG-Tree
| Telemetry vector | Generic SMM panel ($8-$15 / 1k) | SG-Tree calibrated dispatch |
|---|---|---|
| Account cohort age | Fresh registrations (< 30 days, 0 repos) | Aged 2018-2023 developer profiles (1yr+ / 2yr+ / 3yr+ Senior) |
| Temporal pacing | Instant dump or fixed Math.floor cron interval |
Gaussian / stealth / front-load curves + Hamilton integerApportion |
| Secondary signals | 0 forks, 0 watchers (100% star anomaly) | Enforced 10:1 fork equilibrium (5%-20% forks, 4%-8% watchers) |
| Drift and drop recovery | Manual support ticket; high 72h purge rate | Hourly automated api.github.com reconciliation (30d SLA) |
3. How SG-Tree eliminates both detection signatures
- Aged 2018-2023 developer identities (
1yr+,2yr+,3yr+ Senior): We do not use fresh registration farms. Our3yr+ Senior (1.45x)tier routes exclusively through aged profiles registered between 2018 and 2023 that hold public repositories, historical commit graphs, and non-overlapping star histories. - Exact Hamilton apportionment (
integerApportion) and non-homogeneous jitter: Rather than truncating quotas withMath.floor, our scheduler calculates exact floating-point curve weights (gaussian,frontload,stealth,linear) and distributes the integer remainder across peak days so the sum equals 100% of your ordered stars, forks, and watchers. - Hourly automated drift reconciliation: Our Cloudflare Worker cron job (
0 * * * *) runsrunAutomatedSlaReconcileagainstapi.github.com/repos/{owner}/{repo}. If livestargazers_countdrifts belowbaseline_stars + delivered_starsby≥ 3units during the 30-day SLA window, a compensatory refill batch is triggered automatically.