{
  "version": "v0.2.7",
  "status": "current",
  "publishedAt": "2026-10-08",
  "tombstoneTaxonomy": {
    "note": "Tiers grade DEAL LANGUAGE (what the public claim says). Source credibility is carried separately by confidence.",
    "T1": "Contract/rollout — named buyer plus explicit contract or rollout language.",
    "T2": "Pilot/PoC — named buyer plus pilot, PoC, or design-partner language.",
    "T3": "Vague partnership — partnership language without commercial specificity. Gameable tier, discounted.",
    "T4": "Logo/weak — 'trusted by' wall, roster mention, or otherwise weak/unverifiable mention."
  },
  "tombstoneTierWeights": {
    "T1": 10,
    "T2": 5,
    "T3": 2,
    "T4": 0.5
  },
  "tombstoneStrengthCap": 50,
  "tombstoneStatus": {
    "active": "Counts toward tombstoneStrength.",
    "disputed": "Contested or terminated deal — record stays visible with annotation; EXCLUDED from scoring.",
    "retracted": "Ended/invalidated deal — record stays visible with note; EXCLUDED from scoring."
  },
  "confidenceLabels": {
    "claimed": "Default. Public claim collected by AI, not independently corroborated.",
    "corroborated": "Buyer-side confirmation exists (buyer-issued PR, buyer exec quoted confirming deployment, joint announcement).",
    "founder-attested": "Declared by the company via the claim flow (none in v0 — all attested fields read 'Awaiting founder declaration').",
    "ai-inferred": "Analyst judgment, labeled as such."
  },
  "rankingWeights": {
    "buyerFit": 0.3,
    "commercialProof": 0.25,
    "stageMaturity": 0.15,
    "pilotMechanics": 0.15,
    "teamTrajectory": 0.1,
    "evalCompleteness": 0.05
  },
  "rankingFormula": "score = 0.30*buyerFit + 0.25*commercialProof + 0.15*stageMaturity + 0.15*pilotMechanics + 0.10*teamTrajectory + 0.05*evalCompleteness, each 0-100; missing components excluded with weights renormalized (never zero).",
  "evidencePolicy": "Every AI-filled field carries source + date + confidence. Low-confidence data is labeled, not smoothed. Tombstones measure ANNOUNCED wins, never 'traction'.",
  "honestyLabels": {
    "ranking": "v0 ranking — methodology published, weights provisional.",
    "buyerName": "Field renamed from f500Name in Oct 2026: named buyers are enterprise buyers, not verified Fortune 500 members."
  },
  "v02": {
    "note": "Two numbers, one rank: readiness (ranked on) + evidence grade (displayed). Missing components are excluded with weights renormalized — never zero.",
    "weights": {
      "buyerFit": 0.3,
      "commercialProof": 0.25,
      "stageMaturity": 0.15,
      "pilotMechanics": 0.15,
      "teamTrajectory": 0.1,
      "evalCompleteness": 0.05
    },
    "stageMap": {
      "Early": 30,
      "Growth": 55,
      "Pilot-ready": 70,
      "Established": 80,
      "In-market": 85,
      "Scaling": 100
    },
    "tombstoneConfidenceMultipliers": {
      "corroborated/high": 1,
      "medium": 0.75,
      "claimed/low": 0.5
    },
    "evidenceGrade": "mean envelope confidence (high=100, medium=70, low=35) +10 if >=1 corroborated/high T1/T2, cap 100",
    "rankabilityBar": ">=3 readiness components with data AND evidence grade >= 25; else thin-evidence unranked",
    "supersedes": "v0.1 (missing growth scored 0; completeness 20%; no confidence adjustment; silent renormalization)"
  },
  "v021": {
    "changes": "median imputation for sparse components (commercialProof, teamTrajectory) instead of exclusion; tombstone recency decay; v0.1 analyst growthSignal restored where present",
    "weights": {
      "buyerFit": 0.3,
      "commercialProof": 0.25,
      "stageMaturity": 0.15,
      "pilotMechanics": 0.15,
      "teamTrajectory": 0.1,
      "evalCompleteness": 0.05
    },
    "stageMap": {
      "Early": 30,
      "Growth": 55,
      "Pilot-ready": 70,
      "Established": 80,
      "In-market": 85,
      "Scaling": 100
    },
    "tombstoneConfidenceMultipliers": {
      "corroborated/high": 1,
      "medium": 0.75,
      "claimed/low": 0.5
    },
    "tombstoneRecencyDecay": {
      "<12mo": 1,
      "12-24mo": 0.85,
      "24-36mo": 0.7,
      ">36mo": 0.5,
      "missingDate": 0.7
    },
    "imputation": "missing commercialProof/teamTrajectory = corpus median, recorded in scoreComponents.imputed",
    "evidenceGrade": "mean envelope confidence (high=100, medium=70, low=35) +10 if >=1 corroborated/high T1/T2, cap 100",
    "rankabilityBar": ">=3 readiness components with data AND evidence grade >= 25; else thin-evidence unranked",
    "medians": {
      "commercialProof": 8.23,
      "teamTrajectory": 60
    }
  },
  "v022": {
    "changes": "VC-backing gate + vcSignal sub-score inside stage maturity (mean of stage badge and financing maturity); rankability requires vcBacked OR documented exception; investors column (leadInvestors, totalRaisedUSD, lastRound, lastRoundDate) on every ranked profile",
    "weights": {
      "buyerFit": 0.3,
      "commercialProof": 0.25,
      "stageMaturity": 0.15,
      "pilotMechanics": 0.15,
      "teamTrajectory": 0.1,
      "evalCompleteness": 0.05
    },
    "vcSignalRubric": {
      "seriesDplus_growth_ge100M": 100,
      "seriesC": 85,
      "seriesAB": 70,
      "seed": 55,
      "angelOnly_undisclosed": 40,
      "unknown": "excluded"
    },
    "vcGate": "rankable iff vcBacked=true OR investors.exception documented (profitability 2+yrs / >$10M ARR bootstrapped / strategic backing, with evidence). Failures kept in DB with rankExclusion, off the ranked list.",
    "rankabilityBar": ">=3 readiness components with data AND evidence grade >= 25 AND (vcBacked OR documented exception); else unranked with reason",
    "exceptionsKept": [
      "truveta",
      "artisight"
    ],
    "excludedNoVcBacking": 12
  },
  "v023": {
    "changes": "Status-watch lane: credible reported distress is excluded from ranking (Gartner-MQ-style exclusion criteria published). 4 profiles moved to unranked 'Status watch' lane 2026-10-05: innovaccer, finthrive (healthcare), cooler-screens, covariant (retail). They stay visible + searchable with per-source notes intact, carry no rank number.",
    "inclusionCriteria": [
      "Active, standalone startup — not bankrupt, merged, acquired, or a product line of another company",
      "VC-backed (institutional priced round) or a documented exception (profitability, bootstrapped scale, strategic backing — with evidence)",
      "At least 3 readiness components with data, and evidence grade >= 25",
      "Operating in-market, not exited"
    ],
    "exclusionCriteria": [
      "Terminal legal events (bankruptcy, merger, acquisition) → unranked 'Historical record' lane, kept with evidence",
      "Credible reported distress (layoffs, valuation collapse, liability management, founder exits, viability-threatening lawsuits) → unranked 'Status watch' lane. Claims are ALWAYS source-attributed ('Per <source>: <claim>'), never asserted in MaxedS's voice",
      "No institutional backing and no documented exception → excluded record, kept in database with reason",
      "Below the evidence bar → 'thin evidence — unranked pending verification'"
    ],
    "statusWatchLane": {
      "members": [
        "innovaccer",
        "finthrive",
        "cooler-screens",
        "covariant"
      ],
      "movedAt": "2026-10-05",
      "rule": "Visible and searchable; per-source notes intact; no rank number; returns to ranking only when the distress reporting is resolved or superseded."
    }
  },
  "v024": {
    "changes": "Origin ontology: `origin` {country, foundedDate, evidence[]} is the IMMUTABLE country where founded — never changes on HQ move or reincorporation. `hq` {country, effectiveDate, evidence[]} is current headquarters. `incorporation` {country, evidence[]} is legal incorporation country (nullable when unsourcable). Origin is a fact about the company, never founder ethnicity. Hub lenses filter on origin.country only, which kills HQ-migration and reincorporation gaming. Founder attestation: every field carries a provenance state — independent | company-confirmed | company-claimed | inferred | unverified | disputed. Founder input is EVIDENCE SUBMISSION ONLY: it may change a field's value/provenance (recorded in attestations[]), never score inputs directly; scores recalc deterministically from evidence. Founders may correct facts (name, URL, HQ, funding, product description), never judgments (readiness, score components, ranks). SalesBook never shows a founder what to say to rank higher — no rank-gaming previews. Dual-rank honesty: hub cards render 'India #N of 100 · <Sector> #M of 100' with methodology one click away; bare '#N India' badges are never rendered. Coverage transparency: hub views publish evaluated / published / excluded / insufficient-evidence COUNTS (never names). Ranking history: every published hub rank carries methodology version + evidence cutoff date.",
    "scoringChange": false,
    "hubLens": {
      "IN": {
        "label": "Top 100 India-Origin Startups",
        "definition": "Top 100 profiles with origin.country == 'IN', ranked by the v0.2.3 F500 sales-readiness score (unchanged).",
        "eligibility": "origin.country == 'IN' AND computed readiness score AND rankability bar (vcBacked, evidence >= 25) AND not terminal/excluded/status-watch. New hub profiles are scored under v0.2.4 (formula identical to v0.2.3) but not inserted into global sector arrays in this build."
      }
    }
  },
  "v025": {
    "changes": "New `pilot` object on every profile: {researchStatus, researchedAt, dataNeeds{clientDataRequired, dataDescription, sampleDataSufficient, dataAccess, governanceNotes, provenance}, buyerEffort{stakeholdersRequired[], itInvolvement, internalOwnerRequired, estimatedHoursPerWeek, provenance}, technicalSetup{integrations[], sandboxAvailable, typicalDuration{value,unit}, deploymentModel, provenance}, commercial{paidPilot{paid,terms}, successCriteria, conversionPath, provenance}, friction{level, why, provenance='inferred' always}, undisclosedNote}. Unresearched profiles carry {researchStatus:'pending'} — honest placeholder, never a fabricated block. Friction rating is an AI judgment and is always labeled inferred.",
    "scoringChange": false,
    "researchRule": "Public sources only. Founder input is inbound-only (attestations), never a data-collection channel."
  },
  "v026": {
    "changes": "Third sector `horizontal`: cross-industry B2B startups (cybersecurity, IAM, observability/incident response, CLM/legal tech, data infra, dev tools, HR tech, finance ops, RevOps/sales tech, collaboration, ITAM). Sector test is buyer-side: if only one vertical can buy it, it is not horizontal.",
    "buyerLens": "New buyerFit archetype `x1`: the cross-industry F500 buyer — procurement-led, evaluates on named enterprise buyers across ≥2 industries, deployment breadth, and pilot mechanics that survive infosec review. Same 0-100 scale as r1/h1 archetypes.",
    "scoringChange": false,
    "rankingArtifacts": "horizontal-top100.json (100 ranked full profiles); all-companies.json sector='horizontal'; rankings file gains sectors.horizontal.",
    "indiaNote": "India-origin horizontals are tagged during sourcing for a later India-origin Horizontal 100; the global 100 ranks on pure merit with no origin boost."
  },
  "v027": {
    "changes": "Ten-sector taxonomy: the 3-sector scheme (retail/healthcare/horizontal) is replaced by ten buyer verticals — horizontal, retail, healthcare, financial-services, manufacturing, energy, logistics, telecom-media, government, hospitality-real-estate. Sector test is buyer-side: sells into one vertical’s buyers → that vertical; sells across industries → horizontal. Existing corpus reclassified (vertical SaaS moved out of horizontal); per-sector Top-100 ranking files generated for all ten sectors (smaller sectors show honest short lists, never padded).",
    "buyerLens": "buyerFit keys expand to the ten sectors; archetype versions unchanged (x1 cross-industry, r1 retail, h1 healthcare); new verticals scored on the same 0-100 buyer-fit scale.",
    "scoringChange": false,
    "rankingArtifacts": "<sector>-top100.json for all ten sectors; all-companies.json sector values use the ten keys; rankings file gains all ten sector entries."
  }
}
