/ ferris-proof-config / schemas / config.json
config.json
 1  {
 2    "$schema": "http://json-schema.org/draft-07/schema#",
 3    "title": "FerrisProof Configuration",
 4    "type": "object",
 5    "properties": {
 6      "profile": {
 7        "type": "object",
 8        "properties": {
 9          "level": {
10            "type": "string",
11            "enum": ["minimal", "standard", "strict", "formal"]
12          },
13          "enforcement": {
14            "type": "string",
15            "enum": ["advisory", "warning", "error"]
16          },
17          "enabled_techniques": {
18            "type": "array",
19            "items": {
20              "type": "string",
21              "enum": [
22                "TypeSafety",
23                "PropertyTests", 
24                "SessionTypes",
25                "RefinementTypes",
26                "ConcurrencyTesting",
27                "FormalSpecs",
28                "ModelChecking"
29              ]
30            }
31          }
32        },
33        "required": ["level", "enforcement", "enabled_techniques"]
34      },
35      "tools": {
36        "type": "object",
37        "properties": {
38          "tla_plus": {
39            "type": "object",
40            "properties": {
41              "tlc_path": { "type": "string" },
42              "timeout": { "type": "integer", "minimum": 1 },
43              "workers": { "type": "integer", "minimum": 1 }
44            }
45          },
46          "alloy": {
47            "type": "object", 
48            "properties": {
49              "analyzer_path": { "type": "string" },
50              "scope": { "type": "integer", "minimum": 1 }
51            }
52          },
53          "proptest": {
54            "type": "object",
55            "properties": {
56              "cases": { "type": "integer", "minimum": 1 },
57              "max_shrink_iters": { "type": "integer", "minimum": 1 }
58            }
59          },
60          "kani": {
61            "type": "object",
62            "properties": {
63              "cbmc_path": { "type": "string" },
64              "unwind": { "type": "integer", "minimum": 1 }
65            }
66          }
67        }
68      },
69      "features": {
70        "type": "object",
71        "properties": {
72          "cache_enabled": { "type": "boolean" },
73          "parallel_execution": { "type": "boolean" },
74          "generate_reports": { "type": "boolean" }
75        },
76        "required": ["cache_enabled", "parallel_execution", "generate_reports"]
77      },
78      "thresholds": {
79        "type": "object", 
80        "properties": {
81          "max_verification_time": { "type": "integer", "minimum": 1 },
82          "max_memory_usage": { "type": "integer", "minimum": 1 },
83          "cache_ttl": { "type": "integer", "minimum": 1 }
84        },
85        "required": ["max_verification_time", "max_memory_usage", "cache_ttl"]
86      }
87    },
88    "required": ["profile", "features", "thresholds"]
89  }