😏
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"title": "Contract-derived isolated test patch",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"contract_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"covered_clause_ids": {"type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 100, "uniqueItems": true},
|
||||
"test_files": {"type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 30, "uniqueItems": true},
|
||||
"plausible_failures_caught": {"type": "array", "items": {"type": "string"}, "minItems": 1, "maxItems": 30},
|
||||
"commands": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"maxItems": 30,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {"command": {"type": "string", "minLength": 1}, "exit_code": {"type": "integer"}, "observation": {"type": "string", "minLength": 1}},
|
||||
"required": ["command", "exit_code", "observation"]
|
||||
}
|
||||
},
|
||||
"limitations": {"type": "array", "items": {"type": "string"}, "maxItems": 20}
|
||||
},
|
||||
"required": ["contract_sha256", "covered_clause_ids", "test_files", "plausible_failures_caught", "commands", "limitations"]
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"title": "Frozen-contract compatibility verification",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"verdict": {"type": "string", "enum": ["pass", "fail", "blocked"]},
|
||||
"contract_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"verified_clause_ids": {"type": "array", "items": {"type": "string"}, "maxItems": 100, "uniqueItems": true},
|
||||
"commands": {
|
||||
"type": "array",
|
||||
"maxItems": 30,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {"command": {"type": "string", "minLength": 1}, "exit_code": {"type": "integer"}, "observation": {"type": "string", "minLength": 1}},
|
||||
"required": ["command", "exit_code", "observation"]
|
||||
}
|
||||
},
|
||||
"findings": {"type": "array", "items": {"type": "string"}, "maxItems": 30},
|
||||
"blockers": {"type": "array", "items": {"type": "string"}, "maxItems": 20}
|
||||
},
|
||||
"required": ["verdict", "contract_sha256", "verified_clause_ids", "commands", "findings", "blockers"],
|
||||
"allOf": [
|
||||
{"if": {"properties": {"verdict": {"const": "pass"}}, "required": ["verdict"]}, "then": {"properties": {"verified_clause_ids": {"minItems": 1}, "commands": {"minItems": 1}, "findings": {"maxItems": 0}, "blockers": {"maxItems": 0}}}},
|
||||
{"if": {"properties": {"verdict": {"const": "fail"}}, "required": ["verdict"]}, "then": {"properties": {"findings": {"minItems": 1}}}},
|
||||
{"if": {"properties": {"verdict": {"const": "blocked"}}, "required": ["verdict"]}, "then": {"properties": {"blockers": {"minItems": 1}}}}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user