Applying boosts or coupon codes should not overwrite higher-tier entitlements

Open
#35,631 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Quiet
Domain
backend, payments

Research direction

No repository files, tests, or entry points are named. Start by locating the entitlement, boost, coupon, and billing-transition paths, then trace how overlapping grants are resolved across purchase platforms. Done means the acceptance criteria are covered by tests, including preservation of access, value, expiry, idempotency, and transition history.

Written by the indexing model from the issue text.

Description

bug rate-limits

BLUF

Applying an additional subscription, boost or promotional code must not silently reduce active access or destroy existing value.

This is a public report, so account-specific details are omitted.

Problem

Applying a lower-tier Plus boost while a Pro 20x boost is active can replace or remove the higher-tier entitlement.

The same class of failure could affect:

  • paid or promotional boosts;
  • coupon, offer or redemption codes;
  • gifted or support-issued access;
  • overlapping subscription periods.

Consumable usage credits should remain separate from plan entitlements and should not change or replace the underlying plan.

Expected behaviour

Adding an entitlement should never reduce effective access unless the user explicitly agrees to a clearly explained replacement.

When entitlements overlap, the system should:

  1. Keep the best applicable access active for the overlapping period.
  2. Preserve the valid value and original expiry of each entitlement.
  3. Resolve access by capability where plans provide different benefits.
  4. Avoid removing unrelated features, credits or subscription time.
  5. If an offer cannot be combined, defer it, prorate or credit its value, or reject it without consuming the code.

Examples

Lower-tier offer applied during a higher-tier boost
  • Pro 20x: 1–31 July
  • Plus offer: 15 July–15 August

Expected:

  • 1–31 July: Pro 20x remains active
  • 1–15 August: Plus applies

Redeeming the Plus offer must not downgrade Pro during July or cause the offer to disappear.

Higher-tier boost applied during a lower-tier subscription
  • Plus: 1 July–31 August
  • Pro 20x boost: 15 July–15 August

Expected:

  • 1–14 July: Plus
  • 15 July–15 August: Pro 20x
  • 16–31 August: Plus resumes
Incompatible offer

If an offer cannot be stacked or scheduled, the product should explain that before redemption and leave the code unused.

Acceptance criteria

  • An additive grant never reduces current effective access.
  • Existing paid or promotional value is not silently discarded.
  • Expiry dates and transition behaviour are shown before confirmation.
  • Repeated or delayed billing events do not apply the same change twice.
  • Web, iOS and Android purchases resolve to consistent account access.
  • Support can view the entitlement source, dates, status and transition history.

Distinction from the suggested duplicate

#34918 reports a Pro account appearing as Pro Lite and asks for entitlement resynchronisation. This issue concerns a different trigger: applying a new boost or offer changes or replaces an already valid entitlement.

Supporting documentation and implementation context

These references illustrate established ways to keep plan access, credits and subscription transitions separate. They are supporting context, not a request for a specific internal implementation.

Why this matters

Redeeming another valid benefit should not leave the user worse off. If two entitlements cannot coexist, the system should preserve their value or refuse the change before consuming the offer rather than silently downgrading the account.

Dominant language
Rust
Stars
125k
Forks
19.5k
Avg merge
1m
Merged PRs (30d)
1k

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from openai/codex

All issues in openai/codex

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.