feat: security researchers leaderboard from GitHub advisory credits#235
Merged
Merged
Conversation
Fetch published GitHub security advisories and their accepted credits across the organization, then build top_security.json ranking the people credited as security researchers (finder, reporter, analyst) on those advisories. Remediation credits are deliberately excluded: the core developers who ship the fix are already counted in the PR and commit leaderboards, so crediting them here would double-count them and bury the researchers this board is meant to surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Progi1984
approved these changes
Jul 7, 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.
Why
Security contributions are currently invisible on the Top Contributors site: vulnerability fixes land through a private security repository and are republished by the core team, so the original reporter/researcher is lost and never shows up in the PR or commit leaderboards. This came out of a community discussion — the point being that surfacing the people who find and report vulnerabilities (whatever their level) is exactly the kind of contribution the Top exists to encourage.
GitHub already exposes this data:
GET /repos/PrestaShop/{repo}/security-advisoriesreturns published advisories withcredits_detailed, which distinguishes the research side (finder / reporter / analyst / coordinator) from the remediation side (remediation_developer / reviewer / verifier).What this does
Two new commands, following the existing
Fetch*/Generate*pipeline pattern:traces:fetch:security-advisories— scans every org repository, keeps published (non-withdrawn) advisories, and stores their accepted credits →gh_security_advisories.json. All credit roles are stored (raw data).traces:generate:topsecurity— buildstop_security.json, ranking contributors by the number of advisories where they hold a research credit.Design decision: research credits only
The leaderboard intentionally counts research credits only (finder / reporter / analyst / coordinator). Remediation credits are excluded: the core developers who ship the fix are commits and PRs that are already counted in the existing reviewers / issues / PR leaderboards, so crediting them again here would double-count them and bury the security researchers this board is meant to surface.
The fetch step still stores every credit role, so remediation data remains available for any future use — only the generate step filters.
Output
top_security.jsonhas the same shape as the other rankings ({updatedAt, items:[{rank, login, name, avatar_url, html_url, count}]}), so the front end reuses its existing ranking table as-is.Notes
knplabs/github-apiHTTP client.phpstanandphp-cs-fixerpass.bin/console, theMakefile, and theREADME.top_security.json, so its build only picks this up after a new traces release tag is published. The matching front-end PR should be merged after this one is released.🤖 Generated with Claude Code