init: document-haness 설계
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "lint-report.schema.json",
|
||||
"title": "08_lint.json",
|
||||
"type": "object",
|
||||
"required": ["schema_version", "rules_version", "rules_sha256", "tool", "generated_at", "document", "fail_on", "verdict", "summary", "fidelity", "findings"],
|
||||
"properties": {
|
||||
"schema_version": {"const": "1.0"},
|
||||
"rules_version": {"type": "string", "minLength": 1},
|
||||
"rules_sha256": {
|
||||
"oneOf": [
|
||||
{"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
{"type": "null"}
|
||||
]
|
||||
},
|
||||
"tool": {"const": "lint_document"},
|
||||
"generated_at": {"type": "string", "format": "date-time"},
|
||||
"document": {"$ref": "#/$defs/fileHash"},
|
||||
"logic_map_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"term_ledger_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"reader_contract_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"fail_on": {"enum": ["error", "warning"]},
|
||||
"verdict": {"enum": ["pass", "fail", "input_error"]},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": ["errors", "warnings", "info", "total"],
|
||||
"properties": {
|
||||
"errors": {"type": "integer", "minimum": 0},
|
||||
"warnings": {"type": "integer", "minimum": 0},
|
||||
"info": {"type": "integer", "minimum": 0},
|
||||
"total": {"type": "integer", "minimum": 0}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"fidelity": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"baseline": {"oneOf": [{"$ref": "#/$defs/fileHash"}, {"type": "null"}]},
|
||||
"draft_baseline": {"oneOf": [{"$ref": "#/$defs/fileHash"}, {"type": "null"}]},
|
||||
"protected_total": {"type": "integer", "minimum": 0},
|
||||
"preserved": {"type": "integer", "minimum": 0},
|
||||
"missing": {"type": "integer", "minimum": 0},
|
||||
"by_type": {
|
||||
"type": "object",
|
||||
"additionalProperties": {"$ref": "#/$defs/fidelityTypeSummary"}
|
||||
},
|
||||
"finalization_change_rate": {"type": ["number", "null"], "minimum": 0, "maximum": 1},
|
||||
"max_finalization_change_rate": {"type": "number", "minimum": 0, "maximum": 1}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"limitations": {"type": "array", "items": {"type": "string"}},
|
||||
"findings": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["rule_id", "severity", "message", "path", "line", "column"],
|
||||
"properties": {
|
||||
"rule_id": {"type": "string", "minLength": 1},
|
||||
"severity": {"enum": ["error", "warning", "info"]},
|
||||
"message": {"type": "string", "minLength": 1},
|
||||
"path": {"type": "string", "minLength": 1},
|
||||
"line": {"type": ["integer", "null"], "minimum": 1},
|
||||
"column": {"type": ["integer", "null"], "minimum": 1},
|
||||
"section_id": {"type": ["string", "null"]},
|
||||
"context": {"type": ["string", "null"]}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {"properties": {"verdict": {"enum": ["pass", "fail"]}}},
|
||||
"then": {
|
||||
"required": ["logic_map_sha256", "term_ledger_sha256", "reader_contract_sha256", "limitations"],
|
||||
"properties": {
|
||||
"rules_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"fidelity": {
|
||||
"required": ["baseline", "draft_baseline", "protected_total", "preserved", "missing", "by_type", "finalization_change_rate", "max_finalization_change_rate"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"$defs": {
|
||||
"fileHash": {
|
||||
"type": "object",
|
||||
"required": ["path", "sha256"],
|
||||
"properties": {
|
||||
"path": {"type": "string", "minLength": 1},
|
||||
"sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"fidelityTypeSummary": {
|
||||
"type": "object",
|
||||
"required": ["total", "preserved", "missing"],
|
||||
"properties": {
|
||||
"total": {"type": "integer", "minimum": 0},
|
||||
"preserved": {"type": "integer", "minimum": 0},
|
||||
"missing": {"type": "integer", "minimum": 0}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
Reference in New Issue
Block a user