fix(kilo-pass): remove grandfathered second-month 50% bonus promo#3623
fix(kilo-pass): remove grandfathered second-month 50% bonus promo#3623kilo-code-bot[bot] wants to merge 1 commit into
Conversation
The limited-time two-month promo ended on 2026-05-07. Active subscribers in their second month were still seeing a 50% bonus displayed on the Kilo Pass bar instead of the standard streak ramp bonus. Remove the second-month 50% grandfathered promo from computeMonthlyCadenceBonusPercent so month 2 now uses the standard ramp formula (e.g. 10% for streak=2). Clean up the now-unused constants, subscriptionStartedAtIso parameter, isTwoMonthPromoOfferActive helper, showSecondMonthPromo UI props, and all related test fixtures.
| const subscriptionBase = await getKiloPassStateForUser(db, ctx.user.id); | ||
| if (!subscriptionBase) { | ||
| return { subscription: null, isEligibleForFirstMonthPromo: isTwoMonthPromoOfferActive() }; | ||
| return { subscription: null, isEligibleForFirstMonthPromo: false }; |
There was a problem hiding this comment.
WARNING: isEligibleForFirstMonthPromo is now always false for unsubscribed users, but the first-month 50% promo bonus is still applied by computeMonthlyCadenceBonusPercent for streakMonths === 1 && isFirstTimeSubscriberEver. This means new prospective subscribers will no longer see any promo callout in the UI (e.g. in KiloPassSubscribeCard, KiloPassTierCard, KiloPassBonusRampDialog), even though they'll still receive the 50% first-month bonus when they actually subscribe.
The old isTwoMonthPromoOfferActive() was using the two-month promo cutoff to gate this field — now that the cutoff has passed, the intent may be to end all promo display. But the PR description says "Verify that month 1 first-time subscribers still see the 50% first-month promo bonus (unchanged)", and the existing tests at kilo-pass-router.test.ts:566, 1408, and 1436 still assert isEligibleForFirstMonthPromo: true for never-subscribed users — those tests will now fail.
If the first-month promo display should indeed be disabled permanently, the stale tests must be updated. If it should remain visible to new users, this needs to return true for never-subscribed first-time users.
| subscriptionStartedAtIso: params.startedAtIso, | ||
| }); | ||
|
|
||
| const shouldIssueFirstMonthPromo = bonusPercentApplied === 0.5 && streakMonths <= 2; |
There was a problem hiding this comment.
SUGGESTION: The streakMonths <= 2 guard is now a dead condition. Since the second-month 50% grandfathered promo has been removed, bonusPercentApplied === 0.5 can only ever be true at streakMonths === 1. The guard could be simplified to streakMonths === 1 for clarity:
| const shouldIssueFirstMonthPromo = bonusPercentApplied === 0.5 && streakMonths <= 2; | |
| const shouldIssueFirstMonthPromo = bonusPercentApplied === 0.5 && streakMonths === 1; |
Code Review SummaryStatus: 2 Issues Found | Recommendation: Address before merge Executive SummaryThe Overview
Issue Details (click to expand)WARNING
SUGGESTION
Other Observations (not in diff)Issues found in unchanged code that cannot receive inline comments:
Files Reviewed (13 files)
Fix these issues in Kilo Cloud Reviewed by claude-sonnet-4.6 · 1,331,129 tokens Review guidance: REVIEW.md from base branch |
Summary
computeMonthlyCadenceBonusPercent— month 2 now always uses the standard ramp formula.KILO_PASS_MONTHLY_FIRST_2_MONTHS_PROMO_CUTOFF,KILO_PASS_MONTHLY_FIRST_2_MONTHS_PROMO_BONUS_PERCENT), thesubscriptionStartedAtIsoparameter from the bonus function, theisTwoMonthPromoOfferActiverouter helper, and allshowSecondMonthPromoUI props across profile and subscription center components.Verification
Visual Changes
N/A
Reviewer Notes
The core logic change is one block removed from
computeMonthlyCadenceBonusPercentinapps/web/src/lib/kilo-pass/bonus.ts:43-57. The rest of the diff is cascading cleanup of the now-unusedsubscriptionStartedAtIsoparameter and promo UI props throughout the codebase.Built for Lígia Zanchet by Kilo for Slack