Files
Kevin Codex 12ba7c3f63 feat(points): tag in-app swaps and give each season a rules version
- bb_launch_swaps.via_app: true when the swap's transaction carries the app's
  ERC-8021 builder suffix. That means a wallet's own Universal Router call, or
  the smart-wallet operation the swap is credited to. Set on insert, and again
  when attribution or the trader heal re-credits a swap. NULL means unknown,
  which never counts. Only the tag result is cached, never the input.
  applyLaunchTx reads the transaction for its input; if that read fails, the
  swap is still credited from the receipt, with the tag unknown.
- Checked on real Base trades from the public feed: router trades from the app
  are tagged; smart-wallet trades routed through 0x's AllowanceHolder (another
  front end) are not.
- bb_seasons.rules_version: a season keeps the version it started with
  (score.rulesFor), and new seasons start on LATEST_RULES_VERSION. Every
  existing season is version 1. scoreSeason takes its rules as an argument. The
  admin panel and /api/points show the version.
2026-11-11 10:03:31 +08:00
..