Skip to content

docs(oddkit-sales): correct referral credit expiry policy (clock starts at metering launch)#215

Merged
klappy merged 1 commit into
mainfrom
fix-referral-expiry-policy
May 16, 2026
Merged

docs(oddkit-sales): correct referral credit expiry policy (clock starts at metering launch)#215
klappy merged 1 commit into
mainfrom
fix-referral-expiry-policy

Conversation

@klappy
Copy link
Copy Markdown
Owner

@klappy klappy commented May 16, 2026

Both the live oddkit.dev page and the canon doc that landed in #214 said 'credits expire 6 months from issuance.' Operator clarified the actual policy: credits expire at the end of each billing cycle, and the clock does NOT start until metering is live for the user (policy A from the planning session).

This updates:

  • credit_ledger schema: adds usable_after TIMESTAMPTZ + expires_at TIMESTAMPTZ
  • §Referrals: three explicit states (pre-metering / at-metering-launch / post-metering steady state)
  • 12-per-year cap named as enforced at coupon-application time

Paired with klappy/oddkit#TBD which updates the customer-facing copy.

Both must land before Lovable builds the redemption logic — otherwise customer promise and system enforcement diverge from day one.


Note

Low Risk
Docs-only updates that change the specified referral credit lifecycle and schema expectations; risk is limited to potential downstream implementation mismatch if other components were built against the old 6-month-from-issuance assumption.

Overview
Updates the unified launch plan to change the promised referral credit expiry policy: credits now expire at the end of the billing cycle they attach to, and the expiry clock does not start until metering is live for the user.

Adjusts the documented credit_ledger schema to add usable_after and expires_at (and indexes on them), and rewrites the referrals section to explicitly define pre-metering, metering-launch, and post-metering behaviors plus how the 12 free-months/year cap is enforced at coupon-application time.

Reviewed by Cursor Bugbot for commit 4176f1e. Bugbot is set up for automated code reviews on this repo. Configure here.

The live oddkit.dev page and the previous canon both said 'credits
expire 6 months from issuance.' Operator clarified the actual policy:
credits expire at the end of each billing cycle (monthly), and the
clock does not start until metering is live for the user. Pre-metering
credits accumulate indestructibly until the user's first metered cycle,
at which point usable_after and expires_at populate together.

This fix:
- Updates the credit_ledger schema to add usable_after + expires_at
- Rewrites §Referrals to specify the three states (pre-metering,
  at-metering-launch, post-metering steady state)
- Names the 12-per-year cap as enforced at coupon-application time
- Aligns the policy with the metering-blind internal commitment
  already in §Internal commitments

The companion oddkit.dev page copy is fixed in a parallel PR against
klappy/oddkit. Both must land before Lovable builds the redemption
logic.
@github-actions
Copy link
Copy Markdown

Canon Quality — Frontmatter Schema ✅

All 41 file(s) in writings/ conform to klappy://canon/meta/frontmatter-schema.

Validator: scripts/validate-frontmatter.py · Canon: klappy://canon/constraints/frontmatter-validation-before-merge · Run: #163

@github-actions
Copy link
Copy Markdown

Canon Quality — oddkit_audit

No dead klappy:// references or legacy link patterns found in writings/. 42 files scanned.

Spec: klappy://docs/oddkit/specs/oddkit-audit · Workflow: .github/workflows/canon-quality.yml · Run: #163

@klappy klappy merged commit 1724b8d into main May 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants