← Files VeraARCHIVED FILE
modules/presenza-digitale-studio/schemas/quality_assessment.schema.json
4.22 KB · Oct 2, 2026 · 00:29 UTC
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://mparanza.com/schemas/presenza-digitale-studio/quality-assessment-v2.json",
"title": "Rendered website quality assessment",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"site_digest",
"validation_digest",
"viewports",
"dimensions",
"console_issues",
"weakest_element",
"verdict",
"required_changes"
],
"properties": {
"schema_version": {"const": 2},
"site_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
"validation_digest": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
"viewports": {
"type": "array",
"minItems": 2,
"uniqueItems": true,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"width",
"height",
"full_page_reviewed",
"screenshot_path",
"screenshot_sha256",
"issues"
],
"properties": {
"name": {"type": "string", "minLength": 1},
"width": {"type": "integer", "minimum": 280},
"height": {"type": "integer", "minimum": 400},
"full_page_reviewed": {"const": true},
"screenshot_path": {
"type": "string",
"pattern": "^reviews/browser/.+\\.(png|jpe?g)$"
},
"screenshot_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"issues": {"type": "array", "items": {"type": "string", "minLength": 1}}
}
}
},
"dimensions": {
"type": "object",
"additionalProperties": false,
"required": [
"hierarchy",
"copy_clarity",
"visual_consistency",
"responsiveness",
"accessibility_signals",
"resilience",
"professional_appropriateness"
],
"properties": {
"hierarchy": {"$ref": "#/$defs/dimension"},
"copy_clarity": {"$ref": "#/$defs/dimension"},
"visual_consistency": {"$ref": "#/$defs/dimension"},
"responsiveness": {"$ref": "#/$defs/dimension"},
"accessibility_signals": {"$ref": "#/$defs/dimension"},
"resilience": {"$ref": "#/$defs/dimension"},
"professional_appropriateness": {"$ref": "#/$defs/dimension"}
}
},
"console_issues": {"type": "array", "items": {"type": "string"}},
"weakest_element": {"type": "string", "minLength": 1},
"verdict": {"enum": ["ready", "revise", "blocked"]},
"required_changes": {"type": "array", "items": {"type": "string", "minLength": 1}}
},
"allOf": [
{
"properties": {
"viewports": {
"allOf": [
{"contains": {"properties": {"width": {"maximum": 600}}}},
{"contains": {"properties": {"width": {"minimum": 1024}}}}
]
}
}
},
{
"if": {"properties": {"verdict": {"const": "ready"}}},
"then": {
"properties": {
"required_changes": {"maxItems": 0},
"console_issues": {"maxItems": 0},
"viewports": {
"items": {"properties": {"issues": {"maxItems": 0}}}
},
"dimensions": {
"properties": {
"hierarchy": {"$ref": "#/$defs/readyDimension"},
"copy_clarity": {"$ref": "#/$defs/readyDimension"},
"visual_consistency": {"$ref": "#/$defs/readyDimension"},
"responsiveness": {"$ref": "#/$defs/readyDimension"},
"accessibility_signals": {"$ref": "#/$defs/readyDimension"},
"resilience": {"$ref": "#/$defs/readyDimension"},
"professional_appropriateness": {"$ref": "#/$defs/readyDimension"}
}
}
}
},
"else": {"properties": {"required_changes": {"minItems": 1}}}
}
],
"$defs": {
"dimension": {
"type": "object",
"additionalProperties": false,
"required": ["status", "rationale"],
"properties": {
"status": {"enum": ["strong", "adequate", "weak", "blocked"]},
"rationale": {"type": "string", "minLength": 1}
}
},
"readyDimension": {
"type": "object",
"properties": {"status": {"enum": ["strong", "adequate"]}}
}
}
}
SHA-256: 470146a234449e2ff332fadc524ff3db8d2c4057e9dc78a80a63557c0fae059d