{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rockytested.com/schema/scorecard.v1.json",
  "title": "Rocky Tested Scorecard v1",
  "type": "object",
  "required": ["repo", "commit", "tested_at", "tier", "category", "claims", "verdict", "summary"],
  "properties": {
    "repo": {"type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"},
    "commit": {"type": "string"},
    "tested_at": {"type": "string", "format": "date-time"},
    "tier": {"enum": ["smoke", "claim", "deep"]},
    "category": {"type": "string", "description": "Taxonomy path, e.g. cad-3d/text-to-cad"},
    "lookalike_group": {"type": "string"},
    "claims": {"type": "array", "items": {"type": "object", "required": ["claim", "result"], "properties": {
      "claim": {"type": "string"}, "source": {"type": "string", "format": "uri"},
      "measured": {"type": "string"}, "result": {"enum": ["pass", "partial", "fail", "untested"]}}}},
    "install_friction": {"type": "integer", "minimum": 1, "maximum": 5, "description": "1 = effortless, 5 = painful"},
    "install": {"type": "object", "properties": {"minutes": {"type": "number"}, "steps": {"type": "integer"}, "needs_gpu": {"type": "boolean"}, "needs_secrets": {"type": "boolean"}}},
    "usefulness": {"type": "integer", "minimum": 1, "maximum": 5},
    "maturity": {"type": "object", "properties": {"license": {"type": "string"}, "stars": {"type": "integer"}, "open_issues": {"type": "integer"}, "last_commit": {"type": "string"}}},
    "safety_notes": {"type": "array", "items": {"type": "string"}},
    "who_its_for": {"type": "string"},
    "who_should_skip": {"type": "string"},
    "cost_to_run": {"type": "object", "properties": {"usd_per_task": {"type": "number"}, "gpu_minutes": {"type": "number"}}},
    "verdict": {"enum": ["REAL", "HALF-REAL", "VAPOR"]},
    "summary": {"type": "string", "maxLength": 280},
    "artifacts": {"type": "object", "properties": {"dockerfile": {"type": "string"}, "logs": {"type": "string"}, "outputs": {"type": "string"}, "clip": {"type": "string"}, "rerun": {"type": "string"}}},
    "upstream": {"type": "array", "items": {"type": "string", "format": "uri"}},
    "funding": {"enum": ["independent", "author_paid_priority"], "default": "independent"},
    "x_post_id": {"type": "string"},
    "changelog": {"type": "array", "items": {"type": "object", "properties": {"date": {"type": "string"}, "note": {"type": "string"}}}}
  }
}
