{
  "name": "Founder Revenue Lab Test Vectors",
  "version": "1.0.0",
  "verifiedAt": "2026-07-27",
  "source": "/founder-revenue-fixture.json",
  "currency": "USD",
  "vectors": [
    {
      "metric": "currentMrr",
      "formula": "sum monthlyValue where status is active or past_due",
      "inputs": [99, 249, 100, 249],
      "expected": 697
    },
    {
      "metric": "runRateArr",
      "formula": "currentMrr * 12",
      "inputs": [697, 12],
      "expected": 8364
    },
    {
      "metric": "startingMrr",
      "formula": "currentMrr - newMrr - expansionMrr + churnedMrr",
      "inputs": [697, 249, 150, 99],
      "expected": 397
    },
    {
      "metric": "netNewMrr",
      "formula": "newMrr + expansionMrr - churnedMrr",
      "inputs": [249, 150, 99],
      "expected": 300
    },
    {
      "metric": "grossMrrChurnRate",
      "formula": "churnedMrr / startingMrr * 100",
      "inputs": [99, 397],
      "expected": 24.937027707808565,
      "displayExpected": "24.9%"
    },
    {
      "metric": "customerChurnRate",
      "formula": "canceled customers / customers active at period start * 100",
      "inputs": [1, 4],
      "expected": 25,
      "displayExpected": "25.0%"
    },
    {
      "metric": "netCollected",
      "formula": "grossCollected - refunds",
      "inputs": [1647, 99],
      "expected": 1548
    },
    {
      "metric": "failedPayments",
      "formula": "sum amount where charge status is failed",
      "inputs": [249, 249],
      "expected": 498
    }
  ],
  "boundary": "All records and names are synthetic. Test vectors validate arithmetic only, not a production Stripe integration."
}
