Skip to content

Conformance coverage: loose billing_cycle_anchor allowance, and test-clock cassettes for renewal and discount-window behaviour #22

Open

Description

@scosman

What happens

  • The anchor allowance is too loose. The **.billing_cycle_anchor allowed difference in tests/conformance/allowed_differences.py (~1493) accepts any pair of integers. That is why replay never caught the stale anchor after trial_end: "now" (cassette 12 seq 29 and seq 39, fixed in Fix renewal periods, pending-item sweep, repeating coupons and canceled_at (#12–#15) #17), and it would hide a regression of that fix. Other blanket timestamp allowances may have the same problem.
  • Some behaviour has no recording. Behaviour that only happens when time passes isn't covered by any cassette:
    • whether an invoice minted exactly at a discount's end is discounted (the world says no);
    • renewal line periods and the invoice's look-back period;
    • the day clamp on a repeating coupon's end;
    • day 29–31 renewals;
    • Stripe's 1-hour draft before a renewal finalizes.

Why it matters

These rulings rest on documentation and probes, not recordings. The Stripe MCP can't advance test clocks, so they can't be checked live.

Suggested next steps

  • Change the anchor allowance to "equal, or equal to the replayed call's clock". This needs a comparator that knows the request time, or a per-step predicate.
  • Add a tools_dev.record scenario that uses test clocks: subscribe with a 3-month repeating coupon, advance through four renewals, and record the invoices. A test-mode key is required.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions