Raw schema
{
"type": "object",
"properties": {
"repo_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "sha256 of the repository's canonical identity (the lowercased 'owner/repo', or a stable local fingerprint) โ never the repo name itself. nittim never sees the name."
},
"client_name": {
"description": "Your own name โ omit to read it from the MCP connection instead.",
"type": "string",
"maxLength": 64
},
"client_version": {
"description": "Your own version string, if you have one.",
"type": "string",
"maxLength": 64
},
"repo_size_bucket": {
"type": "string",
"enum": [
"xs",
"s",
"m",
"l",
"xl"
],
"description": "A rough size bucket for the repo you looped over."
},
"convergence": {
"description": "Optional: 'converged' (two consecutive clean passes) or 'cap_reached' (stopped for any other reason). Omit if unsure โ the read from `passes` is derived either way.",
"type": "string",
"enum": [
"converged",
"cap_reached"
]
},
"swept": {
"description": "Optional: was the CLASS swept โ a guard, lint rule or exhaustiveness check that makes a new instance loud โ rather than only the instances a pass named? Never derived, never changes the reward. On a repeat report, omitting it keeps the last answer; `false` withdraws it.",
"type": "boolean"
},
"mode": {
"description": "Optional: 'one_shot' (every lens sweeps the whole tree first, then one fix wave, then a short convergence loop) or 'serial' (one lens or area per pass, fixing between passes).",
"type": "string",
"enum": [
"one_shot",
"serial"
]
},
"first_wave_lenses": {
"description": "Optional, with mode 'one_shot' only: how many lenses ran in parallel on pass 1.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"passes": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"n": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "This pass's number, starting at 1."
},
"findings": {
"maxItems": 13,
"type": "array",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"security",
"privacy",
"reliability",
"code_quality",
"ai_risk",
"performance",
"devops",
"data",
"business",
"devex",
"accessibility",
"observability",
"maintainability"
]
},
"critical": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"high": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"medium": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"low": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"category"
],
"additionalProperties": false
},
"description": "Findings this pass named โ one entry per category with something to report; omit a category that found nothing. Each count defaults to 0 when omitted."
},
"fixed": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "How many findings this pass fixed."
},
"clean": {
"type": "boolean",
"description": "True iff this pass found nothing new."
}
},
"required": [
"n",
"fixed",
"clean"
],
"additionalProperties": false
},
"description": "One entry per pass you actually ran, in order."
}
},
"required": [
"repo_hash",
"repo_size_bucket",
"passes"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}