@portll/cobolwork 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +49 -18
  2. package/STABILITY.md +76 -0
  3. package/bin/cobolwork.mjs +30 -7
  4. package/lib/bms.mjs +21 -7
  5. package/lib/build.mjs +108 -53
  6. package/lib/capabilities.mjs +9 -10
  7. package/lib/cics-commands.mjs +501 -9
  8. package/lib/compliance.mjs +11 -0
  9. package/lib/consequence.mjs +13 -0
  10. package/lib/control-workers.mjs +161 -0
  11. package/lib/control.mjs +52 -3
  12. package/lib/dataflow.mjs +176 -125
  13. package/lib/db2/cursor.mjs +15 -0
  14. package/lib/db2/read.mjs +170 -0
  15. package/lib/db2/rules.mjs +77 -0
  16. package/lib/db2/stmt/alter.mjs +473 -0
  17. package/lib/db2/stmt/grant.mjs +125 -0
  18. package/lib/db2/stmt/index.mjs +141 -0
  19. package/lib/db2/stmt/misc.mjs +325 -0
  20. package/lib/db2/stmt/routine.mjs +564 -0
  21. package/lib/db2/stmt/storage.mjs +146 -0
  22. package/lib/db2/stmt/table.mjs +540 -0
  23. package/lib/db2/stmt/view.mjs +146 -0
  24. package/lib/diff.mjs +17 -5
  25. package/lib/evidence/cli.mjs +14 -3
  26. package/lib/evidence/record.mjs +1 -1
  27. package/lib/evidence/store.mjs +44 -31
  28. package/lib/exec-reading.mjs +51 -0
  29. package/lib/execution.mjs +3 -2
  30. package/lib/explain.mjs +2 -0
  31. package/lib/exploitability.mjs +11 -2
  32. package/lib/hlasm/asm/data.mjs +13 -1
  33. package/lib/hlasm/asm/sections.mjs +3 -1
  34. package/lib/hlasm/instr.mjs +25 -0
  35. package/lib/hlasm/macro/authorization.mjs +24 -4
  36. package/lib/hlasm/macro/datasets.mjs +30 -17
  37. package/lib/hlasm/macro/io.mjs +68 -45
  38. package/lib/hlasm/macro/le.mjs +2 -2
  39. package/lib/hlasm/macro/operator.mjs +32 -21
  40. package/lib/hlasm/macro/program.mjs +126 -84
  41. package/lib/hlasm/macro/recovery.mjs +10 -5
  42. package/lib/hlasm/macro/storage.mjs +64 -14
  43. package/lib/hlasm/macro/structured.mjs +1 -1
  44. package/lib/hlasm/model.mjs +35 -10
  45. package/lib/hlasm/mvs38.mjs +47 -0
  46. package/lib/hlasm/operands.mjs +10 -0
  47. package/lib/hlasm/optable.mjs +61 -0
  48. package/lib/hlasm/read.mjs +22 -8
  49. package/lib/hlasm.mjs +44 -7
  50. package/lib/ims/dli.mjs +37 -0
  51. package/lib/ims/macro/dbd.mjs +299 -0
  52. package/lib/ims/macro/psb.mjs +286 -0
  53. package/lib/ims/model.mjs +149 -0
  54. package/lib/ims/operands.mjs +23 -0
  55. package/lib/ims/read.mjs +37 -0
  56. package/lib/ims/rules.mjs +135 -0
  57. package/lib/ironwork.mjs +17 -13
  58. package/lib/kernel/pds-archive.mjs +256 -0
  59. package/lib/kernel/registry.mjs +14 -8
  60. package/lib/kernel/shared-pass.mjs +34 -9
  61. package/lib/kernel/source-tree.mjs +104 -36
  62. package/lib/kernel/version-key.mjs +17 -0
  63. package/lib/layout.mjs +26 -31
  64. package/lib/parser.mjs +136 -17
  65. package/lib/pli/cursor.mjs +15 -0
  66. package/lib/pli/expr.mjs +101 -0
  67. package/lib/pli/include.mjs +82 -0
  68. package/lib/pli/layout.mjs +125 -0
  69. package/lib/pli/lex.mjs +198 -0
  70. package/lib/pli/program.mjs +280 -0
  71. package/lib/pli/rules/based.mjs +95 -0
  72. package/lib/pli/rules/conditions.mjs +68 -0
  73. package/lib/pli/rules/entry.mjs +130 -0
  74. package/lib/pli/rules/index.mjs +24 -0
  75. package/lib/pli/rules/preprocessor.mjs +55 -0
  76. package/lib/pli/statements.mjs +130 -0
  77. package/lib/pli/stmt/alloc.mjs +45 -0
  78. package/lib/pli/stmt/assignment.mjs +56 -0
  79. package/lib/pli/stmt/call.mjs +104 -0
  80. package/lib/pli/stmt/conditions.mjs +94 -0
  81. package/lib/pli/stmt/control.mjs +219 -0
  82. package/lib/pli/stmt/declare.mjs +149 -0
  83. package/lib/pli/stmt/exec.mjs +55 -0
  84. package/lib/pli/stmt/io.mjs +239 -0
  85. package/lib/pli/stmt/misc.mjs +4 -0
  86. package/lib/pli/stmt/preprocessor.mjs +242 -0
  87. package/lib/pli/stmt/procedure.mjs +258 -0
  88. package/lib/pli/stmt/stream.mjs +283 -0
  89. package/lib/pli/storage.mjs +129 -0
  90. package/lib/precompile-check.mjs +124 -0
  91. package/lib/precompile-cics.mjs +7 -3
  92. package/lib/reach.mjs +11 -2
  93. package/lib/revision.json +1 -1
  94. package/lib/sarif.mjs +41 -3
  95. package/lib/scan.mjs +7 -1
  96. package/lib/sets/abend.mjs +16 -6
  97. package/lib/sets/cics.mjs +15 -35
  98. package/lib/sets/compile.mjs +41 -15
  99. package/lib/sets/crypto.mjs +5 -3
  100. package/lib/sets/ddl.mjs +36 -0
  101. package/lib/sets/flow.mjs +18 -1
  102. package/lib/sets/hidden.mjs +5 -3
  103. package/lib/sets/hlasm.mjs +72 -12
  104. package/lib/sets/ims.mjs +139 -0
  105. package/lib/sets/log.mjs +6 -6
  106. package/lib/sets/opaque.mjs +27 -7
  107. package/lib/sets/pli.mjs +40 -0
  108. package/lib/sets/recon.mjs +5 -3
  109. package/lib/sets/secrets.mjs +5 -3
  110. package/lib/sets/semantics.mjs +3 -0
  111. package/lib/sets/web.mjs +36 -22
  112. package/lib/site.mjs +10 -0
  113. package/lib/sources.mjs +80 -20
  114. package/lib/statement-cursor.mjs +67 -0
  115. package/lib/verify.mjs +3 -2
  116. package/lib/version.mjs +6 -0
  117. package/package.json +3 -2
  118. package/rules/compliance-cobit2019.json +432 -1
  119. package/rules/compliance-dora.json +414 -1
  120. package/rules/compliance-ffiec.json +414 -1
  121. package/rules/compliance-nist80053.json +466 -1
  122. package/rules/hlasm-optables.json +8024 -0
  123. package/schema/cobolwork-baseline.schema.json +36 -0
  124. package/schema/cobolwork-build-provenance.schema.json +187 -0
  125. package/schema/cobolwork-build.schema.json +382 -0
  126. package/schema/cobolwork-capabilities.schema.json +239 -0
  127. package/schema/cobolwork-diff.schema.json +217 -0
  128. package/schema/cobolwork-evidence.schema.json +161 -0
  129. package/schema/cobolwork-execution.schema.json +53 -0
  130. package/schema/cobolwork-explain.schema.json +360 -0
  131. package/schema/cobolwork-finding.schema.json +465 -0
  132. package/schema/cobolwork-flow.schema.json +465 -0
  133. package/schema/cobolwork-gate.schema.json +211 -0
  134. package/schema/cobolwork-inventory.schema.json +206 -0
  135. package/schema/cobolwork-parse.schema.json +105 -0
  136. package/schema/cobolwork-reach.schema.json +74 -0
  137. package/schema/cobolwork-report.schema.json +559 -0
  138. package/schema/cobolwork-witness.schema.json +107 -0
  139. package/schema/cobolwork.baseline.schema.json +101 -0
  140. package/schema/cobolwork.site.schema.json +116 -0
@@ -0,0 +1,239 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-capabilities.schema.json",
4
+ "title": "cobolwork capabilities",
5
+ "description": "What this cobolwork can do: cobolwork capabilities. A later minor release may add keys; a reader ignores keys it does not know.",
6
+ "type": "object",
7
+ "required": [
8
+ "tool",
9
+ "schemaVersion",
10
+ "toolVersion",
11
+ "toolRevision",
12
+ "commands",
13
+ "globalOptions",
14
+ "documents",
15
+ "identity",
16
+ "analysis",
17
+ "sourceKinds",
18
+ "evidenceKinds",
19
+ "build",
20
+ "gate",
21
+ "ironwork"
22
+ ],
23
+ "properties": {
24
+ "tool": {
25
+ "const": "cobolwork-capabilities"
26
+ },
27
+ "schemaVersion": {
28
+ "const": 1
29
+ },
30
+ "toolVersion": {
31
+ "type": "string"
32
+ },
33
+ "toolRevision": {
34
+ "$ref": "#/$defs/revision"
35
+ },
36
+ "commands": {
37
+ "type": "object",
38
+ "description": "Each command, what it takes and what it writes.",
39
+ "additionalProperties": {
40
+ "type": "object",
41
+ "required": [
42
+ "args",
43
+ "options",
44
+ "documents"
45
+ ],
46
+ "properties": {
47
+ "args": {
48
+ "$ref": "#/$defs/strings"
49
+ },
50
+ "options": {
51
+ "$ref": "#/$defs/strings"
52
+ },
53
+ "documents": {
54
+ "$ref": "#/$defs/strings",
55
+ "description": "The tool names of the documents the command writes."
56
+ }
57
+ }
58
+ }
59
+ },
60
+ "globalOptions": {
61
+ "$ref": "#/$defs/strings"
62
+ },
63
+ "documents": {
64
+ "type": "object",
65
+ "description": "Each document's tool name and its schemaVersion, or the standard version of a SARIF or CycloneDX document.",
66
+ "additionalProperties": {
67
+ "type": [
68
+ "integer",
69
+ "string"
70
+ ]
71
+ }
72
+ },
73
+ "identity": {
74
+ "type": "object",
75
+ "required": [
76
+ "version"
77
+ ],
78
+ "properties": {
79
+ "version": {
80
+ "const": "cobolwork/v1",
81
+ "description": "The fingerprint version."
82
+ }
83
+ }
84
+ },
85
+ "analysis": {
86
+ "type": "object",
87
+ "required": [
88
+ "flowModel",
89
+ "ruleSets",
90
+ "rules"
91
+ ],
92
+ "properties": {
93
+ "flowModel": {
94
+ "type": "string"
95
+ },
96
+ "ruleSets": {
97
+ "$ref": "#/$defs/strings"
98
+ },
99
+ "rules": {
100
+ "type": "integer",
101
+ "minimum": 0
102
+ }
103
+ }
104
+ },
105
+ "sourceKinds": {
106
+ "type": "object",
107
+ "description": "Which files are read as each kind of source.",
108
+ "additionalProperties": {
109
+ "type": [
110
+ "array",
111
+ "string"
112
+ ]
113
+ }
114
+ },
115
+ "evidenceKinds": {
116
+ "$ref": "#/$defs/strings"
117
+ },
118
+ "build": {
119
+ "type": "object",
120
+ "required": [
121
+ "tiers",
122
+ "classes",
123
+ "checks",
124
+ "compilers",
125
+ "defaultPolicy",
126
+ "exit"
127
+ ],
128
+ "properties": {
129
+ "tiers": {
130
+ "$ref": "#/$defs/strings"
131
+ },
132
+ "classes": {
133
+ "$ref": "#/$defs/strings"
134
+ },
135
+ "checks": {
136
+ "$ref": "#/$defs/strings"
137
+ },
138
+ "compilers": {
139
+ "$ref": "#/$defs/strings"
140
+ },
141
+ "defaultPolicy": {
142
+ "type": "object",
143
+ "description": "The policy a build applies when none is given, as schema/cobolwork.policy.schema.json describes it."
144
+ },
145
+ "exit": {
146
+ "$ref": "#/$defs/exit"
147
+ }
148
+ }
149
+ },
150
+ "gate": {
151
+ "type": "object",
152
+ "required": [
153
+ "exit"
154
+ ],
155
+ "properties": {
156
+ "exit": {
157
+ "$ref": "#/$defs/exit"
158
+ }
159
+ }
160
+ },
161
+ "ironwork": {
162
+ "type": "object",
163
+ "description": "The ironwork releases this cobolwork reads.",
164
+ "required": [
165
+ "minimum",
166
+ "formats",
167
+ "runEndings",
168
+ "notRunAbends"
169
+ ],
170
+ "properties": {
171
+ "minimum": {
172
+ "type": "string"
173
+ },
174
+ "formats": {
175
+ "type": "object",
176
+ "description": "Each format cobolwork reads from ironwork, and the first ironwork release that writes it.",
177
+ "additionalProperties": {
178
+ "type": "string"
179
+ }
180
+ },
181
+ "runEndings": {
182
+ "type": "object",
183
+ "description": "Each exit status ironwork keeps for itself, and what it means.",
184
+ "additionalProperties": {
185
+ "type": "string"
186
+ }
187
+ },
188
+ "notRunAbends": {
189
+ "$ref": "#/$defs/strings"
190
+ }
191
+ }
192
+ }
193
+ },
194
+ "$defs": {
195
+ "strings": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "string"
199
+ }
200
+ },
201
+ "exit": {
202
+ "type": "object",
203
+ "description": "Each verdict and the exit status that reports it.",
204
+ "additionalProperties": {
205
+ "type": "integer"
206
+ }
207
+ },
208
+ "revision": {
209
+ "type": [
210
+ "object",
211
+ "null"
212
+ ],
213
+ "description": "The commit cobolwork was built from, whether its tree held changes, the release tag, and whether this was read from a checkout or the release; null where none of them can be read.",
214
+ "properties": {
215
+ "commit": {
216
+ "type": [
217
+ "string",
218
+ "null"
219
+ ]
220
+ },
221
+ "dirty": {
222
+ "type": [
223
+ "boolean",
224
+ "null"
225
+ ]
226
+ },
227
+ "tag": {
228
+ "type": "string"
229
+ },
230
+ "from": {
231
+ "enum": [
232
+ "checkout",
233
+ "release"
234
+ ]
235
+ }
236
+ }
237
+ }
238
+ }
239
+ }
@@ -0,0 +1,217 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-diff.schema.json",
4
+ "title": "cobolwork diff report",
5
+ "description": "What a change between two revisions did: findings it introduced and resolved, and layout and call changes. A later minor release may add keys; a reader ignores keys it does not know.",
6
+ "type": "object",
7
+ "required": [
8
+ "tool",
9
+ "schemaVersion",
10
+ "summary",
11
+ "findings",
12
+ "introduced",
13
+ "resolved"
14
+ ],
15
+ "properties": {
16
+ "tool": {
17
+ "const": "cobolwork-diff"
18
+ },
19
+ "schemaVersion": {
20
+ "const": 3
21
+ },
22
+ "findings": {
23
+ "type": "array",
24
+ "items": {
25
+ "$ref": "cobolwork-finding.schema.json"
26
+ },
27
+ "description": "Findings about the change itself: layout and call changes."
28
+ },
29
+ "introduced": {
30
+ "type": "array",
31
+ "items": {
32
+ "$ref": "cobolwork-finding.schema.json"
33
+ }
34
+ },
35
+ "resolved": {
36
+ "type": "array",
37
+ "items": {
38
+ "$ref": "cobolwork-finding.schema.json"
39
+ }
40
+ },
41
+ "ruleText": {
42
+ "type": "object",
43
+ "additionalProperties": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ "ruleEvidence": {
48
+ "type": "object",
49
+ "additionalProperties": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "summary": {
54
+ "type": "object",
55
+ "required": [
56
+ "flowModel",
57
+ "toolVersion",
58
+ "findings",
59
+ "byRule",
60
+ "introduced",
61
+ "resolved",
62
+ "coverageIncomplete"
63
+ ],
64
+ "properties": {
65
+ "flowModel": {
66
+ "type": "string"
67
+ },
68
+ "toolVersion": {
69
+ "type": "string"
70
+ },
71
+ "findings": {
72
+ "type": "integer",
73
+ "minimum": 0
74
+ },
75
+ "byRule": {
76
+ "type": "object",
77
+ "additionalProperties": {
78
+ "type": "integer",
79
+ "minimum": 0
80
+ }
81
+ },
82
+ "introduced": {
83
+ "type": "integer",
84
+ "minimum": 0
85
+ },
86
+ "resolved": {
87
+ "type": "integer",
88
+ "minimum": 0
89
+ },
90
+ "programsCompared": {
91
+ "type": "integer",
92
+ "minimum": 0
93
+ },
94
+ "programsAdded": {
95
+ "type": "integer",
96
+ "minimum": 0
97
+ },
98
+ "programsRemoved": {
99
+ "type": "integer",
100
+ "minimum": 0
101
+ },
102
+ "programsWithLayoutChange": {
103
+ "type": "integer",
104
+ "minimum": 0
105
+ },
106
+ "reachedOnlyThroughCopybooks": {
107
+ "type": "integer",
108
+ "minimum": 0
109
+ },
110
+ "copybooksImplicated": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "string"
114
+ }
115
+ },
116
+ "unread": {
117
+ "type": "object",
118
+ "description": "What could not be read on each side, and the findings that could not be compared for it.",
119
+ "properties": {
120
+ "base": {
121
+ "type": "array"
122
+ },
123
+ "head": {
124
+ "type": "array"
125
+ },
126
+ "findingsNotCompared": {
127
+ "type": "array",
128
+ "items": {
129
+ "type": "string"
130
+ }
131
+ }
132
+ }
133
+ },
134
+ "configurationChanged": {
135
+ "type": "array",
136
+ "items": {
137
+ "type": "object",
138
+ "properties": {
139
+ "file": {
140
+ "type": "string"
141
+ },
142
+ "change": {
143
+ "type": "string"
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "coverageIncomplete": {
149
+ "type": "boolean"
150
+ },
151
+ "nosrc": {
152
+ "type": "boolean"
153
+ },
154
+ "base": {
155
+ "type": "string"
156
+ },
157
+ "head": {
158
+ "type": "string"
159
+ },
160
+ "toolRevision": {
161
+ "type": [
162
+ "object",
163
+ "null"
164
+ ],
165
+ "description": "A commit and whether its tree held changes, with where it was read.",
166
+ "properties": {
167
+ "commit": {
168
+ "type": [
169
+ "string",
170
+ "null"
171
+ ]
172
+ },
173
+ "dirty": {
174
+ "type": [
175
+ "boolean",
176
+ "null"
177
+ ]
178
+ },
179
+ "tag": {
180
+ "type": "string"
181
+ },
182
+ "from": {
183
+ "type": "string"
184
+ }
185
+ }
186
+ },
187
+ "revision": {
188
+ "type": [
189
+ "object",
190
+ "null"
191
+ ],
192
+ "description": "A commit and whether its tree held changes, with where it was read.",
193
+ "properties": {
194
+ "commit": {
195
+ "type": [
196
+ "string",
197
+ "null"
198
+ ]
199
+ },
200
+ "dirty": {
201
+ "type": [
202
+ "boolean",
203
+ "null"
204
+ ]
205
+ },
206
+ "tag": {
207
+ "type": "string"
208
+ },
209
+ "from": {
210
+ "type": "string"
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-evidence.schema.json",
4
+ "title": "cobolwork evidence output",
5
+ "description": "What cobolwork evidence verify, seal and anchor report. evidence sign writes a DSSE envelope instead. docs/spec/evidence.md. A later minor release may add keys; a reader ignores keys it does not know.",
6
+ "type": "object",
7
+ "required": [
8
+ "tool",
9
+ "schemaVersion",
10
+ "verb"
11
+ ],
12
+ "properties": {
13
+ "tool": {
14
+ "const": "cobolwork-evidence"
15
+ },
16
+ "schemaVersion": {
17
+ "const": 1
18
+ },
19
+ "verb": {
20
+ "enum": [
21
+ "verify",
22
+ "seal",
23
+ "anchor"
24
+ ]
25
+ },
26
+ "verified": {
27
+ "type": "boolean",
28
+ "description": "verify: every record and seal checked out."
29
+ },
30
+ "broken": {
31
+ "type": "array",
32
+ "description": "verify: each check that failed, where.",
33
+ "items": {
34
+ "type": "object"
35
+ }
36
+ },
37
+ "unrecorded": {
38
+ "type": "array",
39
+ "items": {
40
+ "type": "object"
41
+ }
42
+ },
43
+ "open": {
44
+ "type": "array",
45
+ "items": {
46
+ "type": "object"
47
+ }
48
+ },
49
+ "anchored": {
50
+ "type": [
51
+ "object",
52
+ "boolean",
53
+ "null"
54
+ ]
55
+ },
56
+ "sealed": {
57
+ "type": [
58
+ "boolean",
59
+ "null"
60
+ ]
61
+ },
62
+ "sealedReason": {
63
+ "type": [
64
+ "string",
65
+ "null"
66
+ ]
67
+ },
68
+ "unsealedTail": {
69
+ "type": [
70
+ "integer",
71
+ "null"
72
+ ]
73
+ },
74
+ "signatures": {
75
+ "type": "array",
76
+ "items": {
77
+ "type": "object"
78
+ }
79
+ },
80
+ "seals": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "object"
84
+ }
85
+ },
86
+ "exit": {
87
+ "enum": [
88
+ 0,
89
+ 1,
90
+ 3
91
+ ],
92
+ "description": "verify: the exit status the command ends with."
93
+ },
94
+ "compliance": {
95
+ "type": "array",
96
+ "items": {
97
+ "type": "object",
98
+ "required": [
99
+ "evidenceId",
100
+ "framework",
101
+ "clause"
102
+ ],
103
+ "properties": {
104
+ "evidenceId": {
105
+ "enum": [
106
+ "journal-records",
107
+ "journal-chain"
108
+ ]
109
+ },
110
+ "framework": {
111
+ "type": "string"
112
+ },
113
+ "clause": {
114
+ "type": "string"
115
+ },
116
+ "title": {
117
+ "type": "string"
118
+ }
119
+ }
120
+ },
121
+ "description": "verify: each framework clause the verified evidence answers (rules/compliance-*.json evidence): journal-records when a run journal is present, journal-chain when the chain verifies too."
122
+ },
123
+ "seq": {
124
+ "type": "integer",
125
+ "minimum": 0,
126
+ "description": "seal: the seal's number."
127
+ },
128
+ "path": {
129
+ "type": "string"
130
+ },
131
+ "sha256": {
132
+ "type": "string",
133
+ "pattern": "^[0-9a-f]{64}$"
134
+ },
135
+ "signed": {
136
+ "type": "boolean"
137
+ },
138
+ "ledgerLength": {
139
+ "type": "integer",
140
+ "minimum": 0
141
+ },
142
+ "tip": {
143
+ "type": "string",
144
+ "pattern": "^[0-9a-f]{64}$"
145
+ },
146
+ "anchor": {
147
+ "type": "object",
148
+ "description": "seal with --anchor-git or --tsq: what anchor reports."
149
+ },
150
+ "seal": {
151
+ "type": "string",
152
+ "description": "anchor: the seal anchored."
153
+ },
154
+ "git": {
155
+ "type": "object"
156
+ },
157
+ "tsq": {
158
+ "type": "object"
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Portll/cobolwork/schema/cobolwork-execution.schema.json",
4
+ "title": "What cobolwork reads from an execution coverage report",
5
+ "description": "COBOLWORK_EXECUTION names coverage reports that ironwork run --coverage writes, from ironwork 0.2.0. The format is ironwork's, so this schema describes only the keys lib/execution.mjs reads and allows every other key. docs/spec/evidence.md section 13.5.",
6
+ "type": "object",
7
+ "required": [
8
+ "programs"
9
+ ],
10
+ "properties": {
11
+ "programs": {
12
+ "type": "array",
13
+ "items": {
14
+ "type": "object",
15
+ "required": [
16
+ "program",
17
+ "detail"
18
+ ],
19
+ "properties": {
20
+ "program": {
21
+ "type": "string",
22
+ "description": "The PROGRAM-ID."
23
+ },
24
+ "detail": {
25
+ "type": "array",
26
+ "description": "Each paragraph of the program.",
27
+ "items": {
28
+ "type": "object",
29
+ "required": [
30
+ "name",
31
+ "line",
32
+ "entered"
33
+ ],
34
+ "properties": {
35
+ "name": {
36
+ "type": "string"
37
+ },
38
+ "line": {
39
+ "type": "integer"
40
+ },
41
+ "entered": {
42
+ "type": "integer",
43
+ "minimum": 0,
44
+ "description": "How many times a run entered the paragraph."
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }