{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://bitbybit.local/schema/freecad-web-exact-promotion-report.schema.json",
  "title": "FreeCAD Web exact promotion report",
  "type": "object",
  "additionalProperties": true,
  "required": ["schemaVersion", "taskId", "completedTasks", "exactModules", "metrics", "evidenceClasses"],
  "properties": {
    "schemaVersion": { "const": 1 },
    "taskId": { "const": "EX-REL-01" },
    "completedTasks": { "const": 52 },
    "exactModules": { "const": 34 },
    "metrics": {
      "type": "object",
      "required": ["wrongBindings", "unexplainedRelations", "roundtripNameDrift", "unknownSemanticDifferences", "namingEvidenceMissing", "namingEvidenceBoundaryViolations", "unexplainedModules", "releaseBlockers"],
      "properties": {
        "wrongBindings": { "const": 0 },
        "unexplainedRelations": { "const": 0 },
        "roundtripNameDrift": { "const": 0 },
        "unknownSemanticDifferences": { "const": 0 },
        "namingEvidenceMissing": { "const": 0 },
        "namingEvidenceBoundaryViolations": { "const": 0 },
        "unexplainedModules": { "const": 0 },
        "releaseBlockers": { "const": 0 }
      }
    },
    "evidenceClasses": {
      "type": "array",
      "uniqueItems": true,
      "contains": { "const": "native-oracle" },
      "minItems": 8,
      "items": { "enum": ["native-oracle", "browser-runtime", "save-reopen-roundtrip", "failure-cancel-recovery", "resource-release", "security", "accessibility", "signed-release"] }
    }
  }
}
