specs/197-continuous-co-review/contracts/mechanical-findings.schema.json

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Specrew Mechanical Findings (v1)",
  "description": "Schema for iterations/<NNN>/quality/mechanical-findings.json emitted by run-mechanical-checks.ps1 (dead-field, anti-pattern, test-integrity lenses).",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion",
    "featureRef",
    "iterationRef",
    "generatedAt",
    "generator",
    "findings"
  ],
  "properties": {
    "schemaVersion": { "type": "string", "enum": ["v1"] },
    "featureRef": { "type": "string" },
    "iterationRef": { "type": "string" },
    "generatedAt": { "type": "string" },
    "generator": {
      "type": "object",
      "additionalProperties": false,
      "required": ["name", "version"],
      "properties": {
        "name": { "type": "string" },
        "version": { "type": "string" }
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "findingId",
          "gateId",
          "ruleId",
          "surfaceId",
          "severity",
          "message",
          "remediation",
          "source",
          "requirementRefs",
          "demoted"
        ],
        "properties": {
          "findingId": { "type": "string" },
          "gateId": {
            "type": "string",
            "enum": ["dead-field", "anti-pattern", "test-integrity"]
          },
          "ruleId": { "type": "string" },
          "surfaceId": { "type": "string" },
          "severity": { "type": "string" },
          "message": { "type": "string" },
          "remediation": { "type": "string" },
          "source": {
            "type": "object",
            "additionalProperties": true,
            "required": ["path", "line"],
            "properties": {
              "path": { "type": "string" },
              "line": { "type": "integer" },
              "column": { "type": "integer" }
            }
          },
          "requirementRefs": {
            "type": "array",
            "items": { "type": "string" }
          },
          "demoted": { "type": "boolean" },
          "dispositionRef": { "type": "string" }
        }
      }
    }
  }
}