open-design/.vaunt/icons/node.png
ashleyashli abe96caf06
feat: enable Vaunt contributor recognition with 5-tier system (#908)
* 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>
2026-05-08 17:44:12 +08:00

154 KiB
500x500px