{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://grey-chimp.example/schemas/eve-engineering-plan-quality.v1.json",
  "title": "Eve engineering plan-quality contract",
  "oneOf": [
    { "$ref": "#/$defs/rubric" },
    { "$ref": "#/$defs/plan" },
    { "$ref": "#/$defs/context" },
    { "$ref": "#/$defs/conformanceSuite" },
    { "$ref": "#/$defs/measurement" },
    { "$ref": "#/$defs/grade" }
  ],
  "$defs": {
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "gitCommit": {
      "type": "string",
      "pattern": "^[a-f0-9]{40}$"
    },
    "nonEmpty": {
      "type": "string",
      "minLength": 1
    },
    "stringSet": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": { "$ref": "#/$defs/nonEmpty" }
    },
    "dimensionId": {
      "enum": [
        "requirements-and-scope",
        "authoritative-source-discovery",
        "dependency-rationale",
        "risk-analysis",
        "verification-matrix",
        "rollback-readiness",
        "clarification-threshold"
      ]
    },
    "issueCode": {
      "enum": [
        "REQ-UNCOVERED",
        "REQ-INVALID",
        "NON-GOAL-UNBOUND",
        "SOURCE-NONAUTHORITATIVE",
        "SOURCE-STALE",
        "DEPENDENCY-INVALID",
        "DEPENDENCY-CYCLE",
        "DEC-CONTRADICTORY",
        "SCOPE-WRONG",
        "RISK-UNASSESSED",
        "PROOF-WEAK",
        "ROLLBACK-MISSING",
        "CLARIFICATION-REQUIRED",
        "CLARIFICATION-POLICY-WEAK",
        "PLAN-STALE"
      ]
    },
    "rubric": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "documentType",
        "rubricVersion",
        "lifecycleContract",
        "status",
        "dimensions",
        "thresholds",
        "blockerCodes",
        "clarificationThreshold",
        "proofStrength",
        "performanceFloor",
        "limitations"
      ],
      "properties": {
        "schemaVersion": { "const": "eve-engineering-plan-quality.v1" },
        "documentType": { "const": "rubric" },
        "rubricVersion": { "const": "1.0.0" },
        "lifecycleContract": { "const": "eve.governed-delivery.v1" },
        "status": { "const": "frozen" },
        "dimensions": {
          "type": "array",
          "minItems": 7,
          "maxItems": 7,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "weight", "minimumScore", "description", "requiredChecks"],
            "properties": {
              "id": { "$ref": "#/$defs/dimensionId" },
              "weight": { "type": "integer", "minimum": 1, "maximum": 100 },
              "minimumScore": { "const": 3 },
              "description": { "$ref": "#/$defs/nonEmpty" },
              "requiredChecks": { "$ref": "#/$defs/stringSet" }
            }
          }
        },
        "thresholds": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "passingTotalScore",
            "minimumDimensionScore",
            "blockersAllowed",
            "notMachineCheckableClosesRequirement"
          ],
          "properties": {
            "passingTotalScore": { "const": 85 },
            "minimumDimensionScore": { "const": 3 },
            "blockersAllowed": { "const": 0 },
            "notMachineCheckableClosesRequirement": { "const": false }
          }
        },
        "blockerCodes": {
          "type": "array",
          "minItems": 10,
          "uniqueItems": true,
          "items": { "$ref": "#/$defs/issueCode" }
        },
        "clarificationThreshold": {
          "type": "object",
          "additionalProperties": false,
          "required": ["mustClarifyAt", "assumptionAllowedAt", "mustClarifyWhen"],
          "properties": {
            "mustClarifyAt": { "const": "material" },
            "assumptionAllowedAt": { "const": "low" },
            "mustClarifyWhen": { "$ref": "#/$defs/stringSet" }
          }
        },
        "proofStrength": {
          "type": "object",
          "additionalProperties": false,
          "required": ["directnessOrder", "notMachineCheckableOutcome"],
          "properties": {
            "directnessOrder": {
              "const": ["none", "indirect", "direct"]
            },
            "notMachineCheckableOutcome": { "const": "open" }
          }
        },
        "performanceFloor": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "conformanceCases",
            "requiredDetectionRate",
            "iterations",
            "p95BatchMillisecondsMax",
            "rssGrowthBytesMax"
          ],
          "properties": {
            "conformanceCases": { "const": 8 },
            "requiredDetectionRate": { "const": 1 },
            "iterations": { "const": 10000 },
            "p95BatchMillisecondsMax": { "const": 25 },
            "rssGrowthBytesMax": { "const": 67108864 }
          }
        },
        "limitations": {
          "type": "array",
          "minItems": 3,
          "items": { "$ref": "#/$defs/nonEmpty" }
        }
      }
    },
    "requirement": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "statement",
        "goalClauseRefs",
        "acceptanceCriteria",
        "sourceRefs",
        "riskTier",
        "requiredProofBoundary"
      ],
      "properties": {
        "id": { "type": "string", "pattern": "^req-[a-z0-9-]+$" },
        "statement": { "$ref": "#/$defs/nonEmpty" },
        "goalClauseRefs": { "$ref": "#/$defs/stringSet" },
        "acceptanceCriteria": { "$ref": "#/$defs/stringSet" },
        "sourceRefs": { "$ref": "#/$defs/stringSet" },
        "riskTier": { "enum": ["low", "medium", "high", "critical"] },
        "requiredProofBoundary": {
          "enum": [
            "source-inspection",
            "static-contract",
            "automated-behavior",
            "service-boundary",
            "browser",
            "desktop",
            "dcc",
            "engine",
            "human-review",
            "performance-quality"
          ]
        }
      }
    },
    "plan": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "documentType",
        "rubricVersion",
        "planId",
        "planRevisionId",
        "goalRevisionId",
        "goalDigest",
        "decisionSetDigest",
        "basedOnRepositoryCommit",
        "objective",
        "requirements",
        "excludedGoalClauses",
        "nonGoals",
        "sourceDiscovery",
        "consumedDecisionRefs",
        "scope",
        "workItems",
        "dependencyGraph",
        "risks",
        "verificationMatrix",
        "rollbackPlan",
        "clarificationPolicy",
        "clarifications",
        "limitations"
      ],
      "properties": {
        "schemaVersion": { "const": "eve-engineering-plan-quality.v1" },
        "documentType": { "const": "plan" },
        "rubricVersion": { "const": "1.0.0" },
        "planId": { "type": "string", "pattern": "^plan-[a-z0-9-]+$" },
        "planRevisionId": { "type": "string", "pattern": "^plan-rev-[a-z0-9-]+$" },
        "goalRevisionId": { "type": "string", "pattern": "^goal-rev-[a-z0-9-]+$" },
        "goalDigest": { "$ref": "#/$defs/sha256" },
        "decisionSetDigest": { "$ref": "#/$defs/sha256" },
        "basedOnRepositoryCommit": { "$ref": "#/$defs/gitCommit" },
        "objective": { "$ref": "#/$defs/nonEmpty" },
        "requirements": {
          "type": "array",
          "minItems": 1,
          "items": { "$ref": "#/$defs/requirement" }
        },
        "excludedGoalClauses": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["goalClauseId", "decisionRef", "rationale"],
            "properties": {
              "goalClauseId": { "$ref": "#/$defs/nonEmpty" },
              "decisionRef": { "$ref": "#/$defs/nonEmpty" },
              "rationale": { "$ref": "#/$defs/nonEmpty" }
            }
          }
        },
        "nonGoals": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "statement", "goalClauseRefs", "excludedPathPrefixes"],
            "properties": {
              "id": { "type": "string", "pattern": "^non-goal-[a-z0-9-]+$" },
              "statement": { "$ref": "#/$defs/nonEmpty" },
              "goalClauseRefs": { "$ref": "#/$defs/stringSet" },
              "excludedPathPrefixes": { "$ref": "#/$defs/stringSet" }
            }
          }
        },
        "sourceDiscovery": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "kind",
              "locator",
              "authority",
              "authorityBasis",
              "observedSha256",
              "requirementRefs"
            ],
            "properties": {
              "id": { "type": "string", "pattern": "^source-[a-z0-9-]+$" },
              "kind": {
                "enum": [
                  "ownership-instruction",
                  "contract",
                  "source",
                  "test",
                  "migration",
                  "generator",
                  "documentation",
                  "external-reference"
                ]
              },
              "locator": { "$ref": "#/$defs/nonEmpty" },
              "authority": { "enum": ["authoritative", "supporting"] },
              "authorityBasis": { "$ref": "#/$defs/nonEmpty" },
              "observedSha256": { "$ref": "#/$defs/sha256" },
              "requirementRefs": { "$ref": "#/$defs/stringSet" }
            }
          }
        },
        "consumedDecisionRefs": { "$ref": "#/$defs/stringSet" },
        "scope": {
          "type": "object",
          "additionalProperties": false,
          "required": ["allowedPathPrefixes", "forbiddenPathPrefixes", "changeKinds"],
          "properties": {
            "allowedPathPrefixes": { "$ref": "#/$defs/stringSet" },
            "forbiddenPathPrefixes": { "$ref": "#/$defs/stringSet" },
            "changeKinds": { "$ref": "#/$defs/stringSet" }
          }
        },
        "workItems": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "title",
              "requirementRefs",
              "affectedPathPrefixes",
              "dependencyRefs",
              "dependencyRationale",
              "rollbackRef"
            ],
            "properties": {
              "id": { "type": "string", "pattern": "^work-[a-z0-9-]+$" },
              "title": { "$ref": "#/$defs/nonEmpty" },
              "requirementRefs": { "$ref": "#/$defs/stringSet" },
              "affectedPathPrefixes": { "$ref": "#/$defs/stringSet" },
              "dependencyRefs": {
                "type": "array",
                "uniqueItems": true,
                "items": { "$ref": "#/$defs/nonEmpty" }
              },
              "dependencyRationale": { "$ref": "#/$defs/nonEmpty" },
              "rollbackRef": { "$ref": "#/$defs/nonEmpty" }
            }
          }
        },
        "dependencyGraph": {
          "type": "object",
          "additionalProperties": false,
          "required": ["nodes", "edges"],
          "properties": {
            "nodes": { "$ref": "#/$defs/stringSet" },
            "edges": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": false,
                "required": ["id", "from", "to", "type", "rationale"],
                "properties": {
                  "id": { "type": "string", "pattern": "^dep-[a-z0-9-]+$" },
                  "from": { "$ref": "#/$defs/nonEmpty" },
                  "to": { "$ref": "#/$defs/nonEmpty" },
                  "type": { "enum": ["blocks", "requires", "orders-after"] },
                  "rationale": { "$ref": "#/$defs/nonEmpty" }
                }
              }
            }
          }
        },
        "risks": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "requirementRefs",
              "severity",
              "effect",
              "mitigation",
              "trigger",
              "reversibility",
              "authorizationDecisionRef"
            ],
            "properties": {
              "id": { "type": "string", "pattern": "^risk-[a-z0-9-]+$" },
              "requirementRefs": { "$ref": "#/$defs/stringSet" },
              "severity": { "enum": ["low", "medium", "high", "critical"] },
              "effect": { "$ref": "#/$defs/nonEmpty" },
              "mitigation": { "$ref": "#/$defs/nonEmpty" },
              "trigger": { "$ref": "#/$defs/nonEmpty" },
              "reversibility": { "enum": ["reversible", "compensatable", "irreversible"] },
              "authorizationDecisionRef": { "type": ["string", "null"] }
            }
          }
        },
        "verificationMatrix": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "requirementRefs",
              "workItemRefs",
              "boundary",
              "method",
              "commandOrRubric",
              "expectedOutcome",
              "directness",
              "negativeControl",
              "limitations"
            ],
            "properties": {
              "id": { "type": "string", "pattern": "^verify-[a-z0-9-]+$" },
              "requirementRefs": { "$ref": "#/$defs/stringSet" },
              "workItemRefs": { "$ref": "#/$defs/stringSet" },
              "boundary": { "$ref": "#/$defs/nonEmpty" },
              "method": { "enum": ["automated", "human-rubric", "live-measurement"] },
              "commandOrRubric": { "$ref": "#/$defs/nonEmpty" },
              "expectedOutcome": { "$ref": "#/$defs/nonEmpty" },
              "directness": { "enum": ["none", "indirect", "direct"] },
              "negativeControl": { "type": ["string", "null"] },
              "limitations": {
                "type": "array",
                "items": { "$ref": "#/$defs/nonEmpty" }
              }
            }
          }
        },
        "rollbackPlan": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "workItemRefs",
              "trigger",
              "steps",
              "verification",
              "compensation",
              "authorizationDecisionRef"
            ],
            "properties": {
              "id": { "type": "string", "pattern": "^rollback-[a-z0-9-]+$" },
              "workItemRefs": { "$ref": "#/$defs/stringSet" },
              "trigger": { "$ref": "#/$defs/nonEmpty" },
              "steps": { "$ref": "#/$defs/stringSet" },
              "verification": { "$ref": "#/$defs/nonEmpty" },
              "compensation": { "type": ["string", "null"] },
              "authorizationDecisionRef": { "type": ["string", "null"] }
            }
          }
        },
        "clarificationPolicy": {
          "type": "object",
          "additionalProperties": false,
          "required": ["mustClarifyAt", "assumptionAllowedAt", "mustClarifyWhen"],
          "properties": {
            "mustClarifyAt": { "const": "material" },
            "assumptionAllowedAt": { "const": "low" },
            "mustClarifyWhen": { "$ref": "#/$defs/stringSet" }
          }
        },
        "clarifications": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["ambiguityRef", "impact", "status", "resolution", "decisionRef"],
            "properties": {
              "ambiguityRef": { "$ref": "#/$defs/nonEmpty" },
              "impact": { "enum": ["low", "material"] },
              "status": { "enum": ["open", "clarified", "assumed-low"] },
              "resolution": { "type": ["string", "null"] },
              "decisionRef": { "type": ["string", "null"] }
            }
          }
        },
        "limitations": {
          "type": "array",
          "minItems": 1,
          "items": { "$ref": "#/$defs/nonEmpty" }
        }
      }
    },
    "context": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "documentType",
        "contextId",
        "currentGoalRevisionId",
        "currentGoalDigest",
        "currentDecisionSetDigest",
        "currentRepositoryCommit",
        "goalClauses",
        "currentDecisions",
        "knownSources",
        "ambiguities"
      ],
      "properties": {
        "schemaVersion": { "const": "eve-engineering-plan-quality.v1" },
        "documentType": { "const": "grading-context" },
        "contextId": { "$ref": "#/$defs/nonEmpty" },
        "currentGoalRevisionId": { "$ref": "#/$defs/nonEmpty" },
        "currentGoalDigest": { "$ref": "#/$defs/sha256" },
        "currentDecisionSetDigest": { "$ref": "#/$defs/sha256" },
        "currentRepositoryCommit": { "$ref": "#/$defs/gitCommit" },
        "goalClauses": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "statement", "disposition"],
            "properties": {
              "id": { "$ref": "#/$defs/nonEmpty" },
              "statement": { "$ref": "#/$defs/nonEmpty" },
              "disposition": { "enum": ["required", "candidate-exclusion"] }
            }
          }
        },
        "currentDecisions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "status", "actorKind", "conflictsWith"],
            "properties": {
              "id": { "$ref": "#/$defs/nonEmpty" },
              "status": { "enum": ["accepted", "superseded", "proposed", "rejected"] },
              "actorKind": { "enum": ["human", "agent"] },
              "conflictsWith": {
                "type": "array",
                "uniqueItems": true,
                "items": { "$ref": "#/$defs/nonEmpty" }
              }
            }
          }
        },
        "knownSources": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "locator", "authority", "sha256"],
            "properties": {
              "id": { "$ref": "#/$defs/nonEmpty" },
              "locator": { "$ref": "#/$defs/nonEmpty" },
              "authority": { "enum": ["authoritative", "supporting"] },
              "sha256": { "$ref": "#/$defs/sha256" }
            }
          }
        },
        "ambiguities": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "statement", "impact", "status"],
            "properties": {
              "id": { "$ref": "#/$defs/nonEmpty" },
              "statement": { "$ref": "#/$defs/nonEmpty" },
              "impact": { "enum": ["low", "material"] },
              "status": { "enum": ["open", "clarified"] }
            }
          }
        }
      }
    },
    "mutation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["target", "operation", "path"],
      "properties": {
        "target": { "enum": ["plan", "context", "rubric", "measurement"] },
        "operation": { "enum": ["set", "remove", "append"] },
        "path": {
          "type": "array",
          "minItems": 1,
          "items": { "type": ["string", "integer"] }
        },
        "value": true
      }
    },
    "conformanceSuite": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "documentType",
        "rubricVersion",
        "basePlanPath",
        "contextPath",
        "cases"
      ],
      "properties": {
        "schemaVersion": { "const": "eve-engineering-plan-quality.v1" },
        "documentType": { "const": "conformance-suite" },
        "rubricVersion": { "const": "1.0.0" },
        "basePlanPath": { "$ref": "#/$defs/nonEmpty" },
        "contextPath": { "$ref": "#/$defs/nonEmpty" },
        "cases": {
          "type": "array",
          "minItems": 8,
          "maxItems": 8,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "faultClass", "mutations", "expectedOutcome", "requiredIssueCodes"],
            "properties": {
              "id": { "$ref": "#/$defs/nonEmpty" },
              "faultClass": {
                "enum": [
                  "passing",
                  "uncovered-requirement",
                  "contradictory-decision",
                  "wrong-scope",
                  "weak-proof",
                  "stale-plan",
                  "missing-rollback",
                  "clarification-bypass"
                ]
              },
              "mutations": {
                "type": "array",
                "items": { "$ref": "#/$defs/mutation" }
              },
              "expectedOutcome": { "enum": ["pass", "revise", "clarify", "stale"] },
              "requiredIssueCodes": {
                "type": "array",
                "uniqueItems": true,
                "items": { "$ref": "#/$defs/issueCode" }
              }
            }
          }
        }
      }
    },
    "measurement": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "documentType",
        "rubricVersion",
        "measuredAt",
        "nodeVersion",
        "iterations",
        "batchSize",
        "conformance",
        "latency",
        "memory",
        "passed"
      ],
      "properties": {
        "schemaVersion": { "const": "eve-engineering-plan-quality.v1" },
        "documentType": { "const": "measurement" },
        "rubricVersion": { "const": "1.0.0" },
        "measuredAt": { "type": "string", "format": "date-time" },
        "nodeVersion": { "$ref": "#/$defs/nonEmpty" },
        "iterations": { "type": "integer", "minimum": 1 },
        "batchSize": { "type": "integer", "minimum": 1 },
        "conformance": {
          "type": "object",
          "additionalProperties": false,
          "required": ["caseCount", "detectedCount", "detectionRate", "caseResults"],
          "properties": {
            "caseCount": { "type": "integer", "minimum": 1 },
            "detectedCount": { "type": "integer", "minimum": 0 },
            "detectionRate": { "type": "number", "minimum": 0, "maximum": 1 },
            "caseResults": {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "expectedOutcome",
                  "observedOutcome",
                  "requiredCodesPresent",
                  "passed"
                ],
                "properties": {
                  "id": { "$ref": "#/$defs/nonEmpty" },
                  "expectedOutcome": { "enum": ["pass", "revise", "clarify", "stale"] },
                  "observedOutcome": { "enum": ["pass", "revise", "clarify", "stale"] },
                  "requiredCodesPresent": { "type": "boolean" },
                  "passed": { "type": "boolean" }
                }
              }
            }
          }
        },
        "latency": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "batchCount",
            "p50BatchMilliseconds",
            "p95BatchMilliseconds",
            "maxBatchMilliseconds"
          ],
          "properties": {
            "batchCount": { "type": "integer", "minimum": 1 },
            "p50BatchMilliseconds": { "type": "number", "minimum": 0 },
            "p95BatchMilliseconds": { "type": "number", "minimum": 0 },
            "maxBatchMilliseconds": { "type": "number", "minimum": 0 }
          }
        },
        "memory": {
          "type": "object",
          "additionalProperties": false,
          "required": ["rssBeforeBytes", "rssAfterBytes", "rssGrowthBytes"],
          "properties": {
            "rssBeforeBytes": { "type": "integer", "minimum": 0 },
            "rssAfterBytes": { "type": "integer", "minimum": 0 },
            "rssGrowthBytes": { "type": "integer", "minimum": 0 }
          }
        },
        "passed": { "type": "boolean" }
      }
    },
    "grade": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "schemaVersion",
        "documentType",
        "rubricVersion",
        "planId",
        "planRevisionId",
        "contextId",
        "outcome",
        "passed",
        "totalScore",
        "dimensions",
        "issues",
        "coverage"
      ],
      "properties": {
        "schemaVersion": { "const": "eve-engineering-plan-quality.v1" },
        "documentType": { "const": "grade" },
        "rubricVersion": { "const": "1.0.0" },
        "planId": { "$ref": "#/$defs/nonEmpty" },
        "planRevisionId": { "$ref": "#/$defs/nonEmpty" },
        "contextId": { "$ref": "#/$defs/nonEmpty" },
        "outcome": { "enum": ["pass", "revise", "clarify", "stale"] },
        "passed": { "type": "boolean" },
        "totalScore": { "type": "number", "minimum": 0, "maximum": 100 },
        "dimensions": {
          "type": "array",
          "minItems": 7,
          "maxItems": 7,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["id", "score", "weight", "weightedScore"],
            "properties": {
              "id": { "$ref": "#/$defs/dimensionId" },
              "score": { "type": "integer", "minimum": 0, "maximum": 4 },
              "weight": { "type": "integer", "minimum": 1 },
              "weightedScore": { "type": "number", "minimum": 0, "maximum": 100 }
            }
          }
        },
        "issues": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["code", "dimension", "severity", "message", "refs"],
            "properties": {
              "code": { "$ref": "#/$defs/issueCode" },
              "dimension": { "$ref": "#/$defs/dimensionId" },
              "severity": { "enum": ["blocker", "major", "minor"] },
              "message": { "$ref": "#/$defs/nonEmpty" },
              "refs": {
                "type": "array",
                "uniqueItems": true,
                "items": { "$ref": "#/$defs/nonEmpty" }
              }
            }
          }
        },
        "coverage": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "goalClauseCount",
            "coveredGoalClauseCount",
            "requirementCount",
            "verifiedRequirementCount"
          ],
          "properties": {
            "goalClauseCount": { "type": "integer", "minimum": 0 },
            "coveredGoalClauseCount": { "type": "integer", "minimum": 0 },
            "requirementCount": { "type": "integer", "minimum": 0 },
            "verifiedRequirementCount": { "type": "integer", "minimum": 0 }
          }
        }
      }
    }
  }
}
