* feat: enable Vaunt contributor recognition with 5-tier system
Adds .vaunt/config.yaml that maps the Open Design contributor scoring rules
(spec §2.6) to Vaunt's achievement and point-action model. Once merged, the
already-installed Vaunt GitHub App will:
- Backfill historical PR / review / issue / comment / discussion data for
the existing ~3.77k contributors silently (no comments are posted to old
threads — only achievements granted on Vaunt's own platform)
- Calculate cumulative points per the rules in
open-design-bot/src/scoring.ts
- Auto-grant the matching tier achievement (Spark / Signal / Node / Beacon /
Nova) once thresholds 0 / 30 / 150 / 700 / 2,500 are crossed
Tier icons (500x500 PNG, Twemoji on dark-space gradient) are checked in
under .vaunt/icons/ and referenced via raw.githubusercontent URLs.
Once Vaunt has scanned the repo we will use its API to populate
data/contributors.json + generate a CONTRIBUTORS.md leaderboard. No public
visibility for contributors until that step lands in a follow-up PR.
* fix(vaunt): correct actor for review triggers + drop mis-mapped issue_resolved
Addresses @mrcfps's review on #908 (two scoring/trigger mismatches that
would have produced incorrect backfill numbers).
1. **Review actor mismatch.** Vaunt's documented actor matrix only allows
`actor: author` with `action: review`; `reviewers` is reserved for
`pull_request` triggers. With the previous config, no review event would
match, so reviewers earned 0 of the intended 3 review points, and the
Spark achievement's review entry-path was equally broken. Both review
triggers (point action `pr_review` + Spark achievement) now use
`actor: author`.
2. **`issue_resolved` was wrong rule.** scoring.ts awards 6 points for
`discussion_answered_accepted`, not for closing an issue. The previous
`issue_resolved` action awarded 6 points to anyone who closed any issue,
which would have skewed both the historical backfill and future totals.
Removed `issue_resolved` entirely + removed it from every tier's sum().
Added an inline note explaining that `discussion_answered_accepted` is
not currently expressible in Vaunt (its discussion action exposes only
`closed`, no "answered" signal) and that the rule is moot today since
the repo has Discussions disabled — when both conditions change, we
re-add it.
Also added a header comment with Vaunt's actor/action matrix so future
edits don't re-introduce the same kind of mismatch.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: ashleyashli <ashleyashli@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>