28 lines
975 B
JSON
28 lines
975 B
JSON
|
|
{
|
||
|
|
"title": "Frozen compatibility contract",
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": false,
|
||
|
|
"properties": {
|
||
|
|
"contract": {"type": "string", "minLength": 1},
|
||
|
|
"contract_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||
|
|
"clauses": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"maxItems": 100,
|
||
|
|
"items": {
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": false,
|
||
|
|
"properties": {
|
||
|
|
"id": {"type": "string", "minLength": 1},
|
||
|
|
"invariant": {"type": "string", "minLength": 1},
|
||
|
|
"evidence_location": {"type": "string", "minLength": 1},
|
||
|
|
"classification": {"type": "string", "enum": ["guaranteed", "observed", "uncertain"]}
|
||
|
|
},
|
||
|
|
"required": ["id", "invariant", "evidence_location", "classification"]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"uncertainties": {"type": "array", "items": {"type": "string"}, "maxItems": 30}
|
||
|
|
},
|
||
|
|
"required": ["contract", "contract_sha256", "clauses", "uncertainties"]
|
||
|
|
}
|