{
  "schemaVersion": "vedic-compatibility-independent-replay-v1",
  "observedAt": "2026-09-25",
  "scope": {
    "cases": 23328,
    "padaPositions": 108,
    "pairings": 11664,
    "directions": 2,
    "description": "Exhaustive sweep of every possible Moon nakshatra+pada combination for both parties (27 nakshatras x 4 padas = 108 positions per party; 108 x 108 = 11,664 pairings), computed in both classical gender-direction assignments (primary male / counterpart female, and the reverse) for 23328 total comparisons. Every comparison calls OpenFate's own computeAshtakoota (internal implementation) and a separately written implementation (private verification implementation) configured to use the SAME declared Gana convention, and compares every koota, the 36-point total, the classical band, and both dosha flags. The disputed Gana alternative is analyzed separately below in conventionVariants.gana, never blended into this headline count."
  },
  "tolerances": {
    "pointsDelta": 0,
    "description": "Exact equality is required on every koota point value, the 36-point total, the classical band, and both dosha flags; no numeric tolerance applies -- this is discrete table arithmetic, not continuous ephemeris."
  },
  "comparedFields": [
    "varna",
    "vashya",
    "tara",
    "yoni",
    "grahaMaitri",
    "gana",
    "bhakoot",
    "nadi",
    "totalPoints",
    "classicalBand",
    "nadiDosha",
    "bhakootDosha"
  ],
  "results": {
    "cases": 23328,
    "identical": 23328,
    "withDifferences": 0,
    "byReason": {
      "engine-bug": 0,
      "replay-bug": 0
    },
    "byKoota": {}
  },
  "differences": [],
  "conventionVariants": {
    "gana": {
      "description": "The Gana koota's two cross pairs (Deva<->Rakshasa, Manushya<->Rakshasa) are a genuinely disputed convention across published sources; OpenFate's own gunaMilan.ts comment already flags this exact disagreement. This section measures how many of the 23,328 cases would change if the disputed alternative direction were used instead of OpenFate's declared table -- it is informational, a school decision for the product owner, and is NOT counted as a correctness failure above.",
      "impact": {
        "casesWithDifferentGanaPoints": 10368,
        "casesWithDifferentTotal": 10368,
        "casesWithDifferentBand": 926,
        "exampleCase": {
          "input": {
            "primaryNakshatra": "Ashwini (deva)",
            "primaryPada": 1,
            "counterpartNakshatra": "Krittika (rakshasa)",
            "counterpartPada": 1,
            "direction": "primary male / counterpart female"
          },
          "declared": {
            "ganaPoints": 1,
            "totalPoints": 27.5,
            "classicalBand": "good"
          },
          "citedAlternative": {
            "ganaPoints": 0,
            "totalPoints": 26.5,
            "classicalBand": "good"
          }
        }
      }
    }
  },
  "knownIssues": [],
  "limitations": [
    "This replay checks the classical scoring TABLES and arithmetic only, given a fully known Moon position for both parties. It does not check birth-time-uncertainty suppression, Mangal Dosha (and its Venus reference / parihara ladder), Nadi/Bhakoot parihara exceptions, Rajju/Vedha, Darakaraka, or paired Vimshottari timing windows -- those are separate OpenFate synastry facts, already covered by this repo's own test battery (tests/compatibility/test-compat-vedic-kutas.ts), not by an independent public replay.",
    "The Vashya point matrix's cross-group values and the Yoni matrix's 84 intermediate (non-enemy, non-diagonal) cells are treated as shared published classical constants rather than independently re-derived cell-by-cell; a transcription error shared by both implementations at the SAME cell would not be caught (see conventions.yoniMatrix / conventions.vashya).",
    "Nakshatra and pada are quantized inputs (108 discrete positions); the two signs whose Vashya group depends on the exact degree within a pada (Sagittarius/Capricorn, split at 15 degrees) are resolved using the pada midpoint, fed identically to both implementations, so this cannot itself cause a mismatch -- but it means this replay does not test every possible continuous Moon degree, only the 108 pada midpoints.",
    "Published online sources for the Guna Milan tables are themselves inconsistent with each other (confirmed directly in this session -- e.g. one fetched Vashya table was internally asymmetric); citations reflect the specific sources actually consulted, not an exhaustive literature review.",
    "Only the two-opposite-gender classical directions are swept (primary male / counterpart female, and the reverse). Same-gender and unknown-gender (symmetric genderConvention) pairs are a separate code path in gunaMilan.ts not exercised here; they are already covered by tests/compatibility/test-compat-vedic-kutas.ts.",
    "conventionVariants.gana.impact is an aggregate + one example, not a full 23,328-row second table (that would roughly double this file's size for a fact fully reproducible on demand from the published public script with --gana-variant=citedAlternative against the same cases array)."
  ],
  "citations": [
    {
      "source": "Brihat Parashara Hora Shastra (BPHS)",
      "note": "The classical source for the Ashtakoota scheme, the Graha Maitri natural-friendship table, and the Varna/Gana/Nadi class assignments; consulted via the secondary references below rather than a primary critical edition."
    },
    {
      "source": "Muhurta Chintamani",
      "note": "Classical source commonly cited alongside BPHS for Guna Milan marriage-matching rules, including the Gana bride/groom directional doctrine referenced in OpenFate's own gunaMilan.ts comments."
    },
    {
      "source": "Astrological compatibility -- Wikipedia",
      "url": "https://en.wikipedia.org/wiki/Astrological_compatibility",
      "note": "General Ashtakoota / Guna Milan overview and point breakdown, consulted 2026-09-25."
    },
    {
      "source": "Kundli Matching for Marriage: The Complete Guide to 36-Point Gun Milan Compatibility -- RoxyAPI",
      "url": "https://roxyapi.com/blogs/kundli-matching-gun-milan-marriage-compatibility-complete-guide",
      "note": "Koota-by-koota point breakdown, consulted 2026-09-25."
    },
    {
      "source": "Vashyakoota -- freehoroscopesonline.in",
      "url": "https://freehoroscopesonline.in/vashyakoota.php",
      "note": "Used to corroborate the Vashya group-by-sign assignment (including the Sagittarius/Capricorn half-splits), which matched exactly; its own numeric cross-group point table was internally asymmetric and was NOT adopted (see conventions.vashya)."
    },
    {
      "source": "Saravali: Yoni Koota",
      "url": "https://saravali.github.io/astrology/koota_yoni.html",
      "note": "Independent (non-OpenFate) open-source Jyotish reference; fetched 2026-09-25 to corroborate the Yoni matrix's diagonal and its 7 classical \"sworn enemy\" pairs, which matched exactly."
    },
    {
      "source": "Which Planets Are Friends and Enemies? The Complete Table -- Steer (search aggregation)",
      "url": "https://steer.coach/planet-friend-enemy-table/",
      "note": "Corroborates the seven-planet Graha Maitri natural-friendship table, which matched exactly."
    },
    {
      "source": "See conventionVariants.gana.variants.declared.citations and .citedAlternative.citations",
      "note": "The Gana cross-pair citations for both directions are kept alongside their respective variant, not duplicated here, since (unlike the other kootas) OpenFate's and this replay's headline now intentionally use the SAME table."
    }
  ],
  "title": "OpenFate Vedic compatibility (Ashtakoota / Guna Milan) verification summary",
  "publicationKind": "first-party-verification-summary",
  "claimBoundary": "OpenFate performed this comparison using a separately written implementation. This is a publisher-reported result, not independent certification, a public replay kit, or evidence of predictive accuracy. Full execution records and implementation remain private.",
  "receiptSha256": "76d99e02b4b2e44ff8a952ceb35e703ddbac2d1d180bf38f5636a4238e895a71"
}
