Skip to content

[Airdrop] Verify streak tier drop logic matches spec #916

@realproject7

Description

@realproject7

Parent: #877

Question

The streak tier drop logic in lib/airdrop/streak.ts needs verification against the proposal spec.

Current behavior (snaps to current tier threshold):

  • Streak 55 → miss a day → set to 50 (stays in same tier)
  • Streak 50 → miss a day → set to 50 (stays in same tier, no penalty)
  • Streak 49 → miss a day → set to 30

Proposal intended ("drop one tier"):

  • Streak 55 → miss a day → set to 30 (drops from 50-day tier to 30-day tier)
  • Streak 50 → miss a day → set to 30
  • Streak 49 → miss a day → set to 14

The current implementation means missing a day at exactly a tier boundary (e.g., streak=50) has ZERO penalty. The proposal intended dropping to the previous tier's threshold.

Fix

In lib/airdrop/streak.ts, the dropOneTier() function should find the user's current tier and return the previous tier's threshold:

Current tier thresholds: [7, 14, 30, 50, 100]

streak 100+ → drop to 50
streak 50-99 → drop to 30
streak 30-49 → drop to 14
streak 14-29 → drop to 7
streak 7-13 → drop to 0
streak 0-6 → stays 0

Files

  • lib/airdrop/streak.tsdropOneTier() function

Acceptance Criteria

  • Missing a day at streak 50 drops to 30 (not stays at 50)
  • Missing a day at streak 100 drops to 50
  • Missing a day at streak 7 drops to 0
  • Missing a day at streak 3 stays at 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/T3Assigned to T3 builder agentairdropPLOT 10x Airdrop Campaign

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions