probatio 0.1.3 → 0.3.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 (55) hide show
  1. package/README.md +93 -8
  2. package/dist/cli.js +136 -6
  3. package/dist/contract.js +2 -1
  4. package/dist/golden/record.js +395 -0
  5. package/dist/golden/recorder.mjs +78 -0
  6. package/dist/ledger/build.js +21 -0
  7. package/dist/ledger/check.js +133 -0
  8. package/dist/mcp.js +76 -27
  9. package/dist/mutate/child-lines.mjs +23 -18
  10. package/dist/mutate/fail-reporter.mjs +21 -0
  11. package/dist/mutate/find.js +3 -3
  12. package/dist/mutate/generate.js +5 -2
  13. package/dist/mutate/load-failure.mjs +40 -0
  14. package/dist/mutate/mocha-coverage.cjs +7 -1
  15. package/dist/mutate/node-batch-loader.mjs +15 -1
  16. package/dist/mutate/node-batch.mjs +40 -3
  17. package/dist/mutate/node-coverage.mjs +7 -32
  18. package/dist/mutate/operators.js +60 -1
  19. package/dist/mutate/patch.js +2 -1
  20. package/dist/mutate/precise-lines.mjs +147 -31
  21. package/dist/mutate/probatio-jacoco-run.java +2 -2
  22. package/dist/mutate/project-config.js +58 -0
  23. package/dist/mutate/run.js +100 -19
  24. package/dist/mutate/sealed.js +54 -0
  25. package/dist/mutate/suite-decision.js +2 -1
  26. package/dist/mutate/suites.js +87 -155
  27. package/dist/mutate/tally.js +54 -26
  28. package/dist/mutate/text-operators.js +92 -2
  29. package/dist/swarm/check-kill.js +14 -7
  30. package/dist/verify/change.js +1 -1
  31. package/package.json +8 -4
  32. package/schemas/check-kill.schema.json +93 -0
  33. package/schemas/findings.add.schema.json +53 -0
  34. package/schemas/gap.fix.schema.json +53 -0
  35. package/schemas/gap.revert.schema.json +53 -0
  36. package/schemas/golden.check.schema.json +89 -0
  37. package/schemas/golden.compare.schema.json +151 -0
  38. package/schemas/golden.record.schema.json +126 -0
  39. package/schemas/guard.check.schema.json +53 -0
  40. package/schemas/ledger.build.schema.json +132 -0
  41. package/schemas/ledger.check.schema.json +143 -0
  42. package/schemas/matrix.report.schema.json +129 -0
  43. package/schemas/mcp.schema.json +53 -0
  44. package/schemas/mutate.generate.schema.json +127 -0
  45. package/schemas/mutate.help.schema.json +53 -0
  46. package/schemas/mutate.run.schema.json +272 -0
  47. package/schemas/mutate.sealed.schema.json +53 -0
  48. package/schemas/mutate.tally.schema.json +137 -0
  49. package/schemas/queue.claim.schema.json +53 -0
  50. package/schemas/queue.reap.schema.json +71 -0
  51. package/schemas/queue.seed.schema.json +71 -0
  52. package/schemas/schema.schema.json +74 -0
  53. package/schemas/seal.schema.json +69 -0
  54. package/schemas/status.schema.json +103 -0
  55. package/schemas/verify-change.schema.json +222 -0
@@ -0,0 +1,126 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/IronAdamant/Probatio/blob/main/schemas/golden.record.schema.json",
4
+ "title": "probatio golden.record",
5
+ "description": "Records the calls the unit tests make into a golden table and a replay test. Every command prints one JSON object. schemaVersion changes when a field is renamed, removed, or changes meaning. A new field does not change it.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "ok",
10
+ "command",
11
+ "summary",
12
+ "next",
13
+ "nextCall"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "const": 2
18
+ },
19
+ "ok": {
20
+ "type": "boolean"
21
+ },
22
+ "command": {
23
+ "const": "golden.record"
24
+ },
25
+ "summary": {
26
+ "type": "string"
27
+ },
28
+ "next": {
29
+ "type": "string"
30
+ },
31
+ "nextCall": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "argv": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ }
45
+ },
46
+ "required": [
47
+ "argv"
48
+ ]
49
+ }
50
+ ]
51
+ },
52
+ "rows": {
53
+ "type": "integer",
54
+ "minimum": 0
55
+ },
56
+ "hidden": {
57
+ "type": "integer",
58
+ "minimum": 0
59
+ },
60
+ "unstable": {
61
+ "type": "integer",
62
+ "minimum": 0
63
+ },
64
+ "modules": {
65
+ "type": "array",
66
+ "items": {
67
+ "type": "object",
68
+ "properties": {
69
+ "module": {
70
+ "type": "string"
71
+ },
72
+ "rows": {
73
+ "type": "integer",
74
+ "minimum": 0
75
+ },
76
+ "hidden": {
77
+ "type": "integer",
78
+ "minimum": 0
79
+ },
80
+ "unstable": {
81
+ "type": "integer",
82
+ "minimum": 0
83
+ },
84
+ "functions": {
85
+ "type": "array",
86
+ "items": {
87
+ "type": "string"
88
+ }
89
+ }
90
+ },
91
+ "required": [
92
+ "module",
93
+ "rows",
94
+ "hidden",
95
+ "unstable"
96
+ ]
97
+ }
98
+ },
99
+ "written": {
100
+ "type": "array",
101
+ "items": {
102
+ "type": "string"
103
+ }
104
+ },
105
+ "commit": {
106
+ "type": "string"
107
+ }
108
+ },
109
+ "if": {
110
+ "properties": {
111
+ "ok": {
112
+ "const": true
113
+ }
114
+ }
115
+ },
116
+ "then": {
117
+ "required": [
118
+ "rows",
119
+ "hidden",
120
+ "unstable",
121
+ "modules",
122
+ "written",
123
+ "commit"
124
+ ]
125
+ }
126
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/IronAdamant/Probatio/blob/main/schemas/guard.check.schema.json",
4
+ "title": "probatio guard.check",
5
+ "description": "Refuses a guard change without a Guard-Change trailer. Every command prints one JSON object. schemaVersion changes when a field is renamed, removed, or changes meaning. A new field does not change it.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "ok",
10
+ "command",
11
+ "summary",
12
+ "next",
13
+ "nextCall"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "const": 2
18
+ },
19
+ "ok": {
20
+ "type": "boolean"
21
+ },
22
+ "command": {
23
+ "const": "guard.check"
24
+ },
25
+ "summary": {
26
+ "type": "string"
27
+ },
28
+ "next": {
29
+ "type": "string"
30
+ },
31
+ "nextCall": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "argv": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ }
45
+ },
46
+ "required": [
47
+ "argv"
48
+ ]
49
+ }
50
+ ]
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/IronAdamant/Probatio/blob/main/schemas/ledger.build.schema.json",
4
+ "title": "probatio ledger.build",
5
+ "description": "Reverts fix commits into forward patches: the project's own memory of fixed bugs. Every command prints one JSON object. schemaVersion changes when a field is renamed, removed, or changes meaning. A new field does not change it.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "ok",
10
+ "command",
11
+ "summary",
12
+ "next",
13
+ "nextCall"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "const": 2
18
+ },
19
+ "ok": {
20
+ "type": "boolean"
21
+ },
22
+ "command": {
23
+ "const": "ledger.build"
24
+ },
25
+ "summary": {
26
+ "type": "string"
27
+ },
28
+ "next": {
29
+ "type": "string"
30
+ },
31
+ "nextCall": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "argv": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ }
45
+ },
46
+ "required": [
47
+ "argv"
48
+ ]
49
+ }
50
+ ]
51
+ },
52
+ "clean": {
53
+ "type": "integer",
54
+ "minimum": 0
55
+ },
56
+ "hand": {
57
+ "type": "integer",
58
+ "minimum": 0
59
+ },
60
+ "handmade": {
61
+ "type": "integer",
62
+ "minimum": 0
63
+ },
64
+ "skipped": {
65
+ "type": "integer",
66
+ "minimum": 0
67
+ },
68
+ "handNeeded": {
69
+ "type": "array",
70
+ "items": {
71
+ "type": "object",
72
+ "properties": {
73
+ "id": {
74
+ "type": "string"
75
+ },
76
+ "commit": {
77
+ "type": "string"
78
+ },
79
+ "file": {
80
+ "type": "string"
81
+ },
82
+ "line": {
83
+ "type": "integer",
84
+ "minimum": 0
85
+ }
86
+ },
87
+ "required": [
88
+ "id",
89
+ "commit"
90
+ ]
91
+ }
92
+ },
93
+ "rest": {
94
+ "type": "integer",
95
+ "minimum": 0
96
+ },
97
+ "commit": {
98
+ "type": "string"
99
+ },
100
+ "full": {
101
+ "type": "string"
102
+ },
103
+ "historyBudgetHit": {
104
+ "type": "boolean"
105
+ },
106
+ "commitsScanned": {
107
+ "type": "integer",
108
+ "minimum": 0
109
+ }
110
+ },
111
+ "if": {
112
+ "properties": {
113
+ "ok": {
114
+ "const": true
115
+ }
116
+ }
117
+ },
118
+ "then": {
119
+ "required": [
120
+ "clean",
121
+ "hand",
122
+ "handmade",
123
+ "skipped",
124
+ "handNeeded",
125
+ "rest",
126
+ "commit",
127
+ "full",
128
+ "historyBudgetHit",
129
+ "commitsScanned"
130
+ ]
131
+ }
132
+ }
@@ -0,0 +1,143 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/IronAdamant/Probatio/blob/main/schemas/ledger.check.schema.json",
4
+ "title": "probatio ledger.check",
5
+ "description": "Runs every ledger bug and compares each outcome with ledger/<id>.golden.json. A caught bug that is not caught now is a regression. Every command prints one JSON object. schemaVersion changes when a field is renamed, removed, or changes meaning. A new field does not change it.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "ok",
10
+ "command",
11
+ "summary",
12
+ "next",
13
+ "nextCall"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "const": 2
18
+ },
19
+ "ok": {
20
+ "type": "boolean"
21
+ },
22
+ "command": {
23
+ "const": "ledger.check"
24
+ },
25
+ "summary": {
26
+ "type": "string"
27
+ },
28
+ "next": {
29
+ "type": "string"
30
+ },
31
+ "nextCall": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "argv": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ }
45
+ },
46
+ "required": [
47
+ "argv"
48
+ ]
49
+ }
50
+ ]
51
+ },
52
+ "caught": {
53
+ "type": "integer",
54
+ "minimum": 0
55
+ },
56
+ "total": {
57
+ "type": "integer",
58
+ "minimum": 0
59
+ },
60
+ "regressed": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "string"
64
+ }
65
+ },
66
+ "changed": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "string"
70
+ }
71
+ },
72
+ "unrecorded": {
73
+ "type": "array",
74
+ "items": {
75
+ "type": "string"
76
+ }
77
+ },
78
+ "rows": {
79
+ "type": "array",
80
+ "items": {
81
+ "type": "object",
82
+ "properties": {
83
+ "id": {
84
+ "type": "string"
85
+ },
86
+ "recorded": {
87
+ "type": [
88
+ "string",
89
+ "null"
90
+ ]
91
+ },
92
+ "actual": {
93
+ "type": "string"
94
+ },
95
+ "next": {
96
+ "type": "string"
97
+ }
98
+ },
99
+ "required": [
100
+ "id",
101
+ "recorded",
102
+ "actual"
103
+ ]
104
+ }
105
+ },
106
+ "run": {
107
+ "type": "object",
108
+ "properties": {
109
+ "summary": {
110
+ "type": "string"
111
+ },
112
+ "commit": {
113
+ "type": "string"
114
+ },
115
+ "full": {
116
+ "type": "string"
117
+ }
118
+ },
119
+ "required": [
120
+ "summary",
121
+ "commit"
122
+ ]
123
+ }
124
+ },
125
+ "if": {
126
+ "properties": {
127
+ "ok": {
128
+ "const": true
129
+ }
130
+ }
131
+ },
132
+ "then": {
133
+ "required": [
134
+ "caught",
135
+ "total",
136
+ "regressed",
137
+ "changed",
138
+ "unrecorded",
139
+ "rows",
140
+ "run"
141
+ ]
142
+ }
143
+ }
@@ -0,0 +1,129 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/IronAdamant/Probatio/blob/main/schemas/matrix.report.schema.json",
4
+ "title": "probatio matrix.report",
5
+ "description": "Reads recorded score tables. The headline is the gap list. Every command prints one JSON object. schemaVersion changes when a field is renamed, removed, or changes meaning. A new field does not change it.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "ok",
10
+ "command",
11
+ "summary",
12
+ "next",
13
+ "nextCall"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "const": 2
18
+ },
19
+ "ok": {
20
+ "type": "boolean"
21
+ },
22
+ "command": {
23
+ "const": "matrix.report"
24
+ },
25
+ "summary": {
26
+ "type": "string"
27
+ },
28
+ "next": {
29
+ "type": "string"
30
+ },
31
+ "nextCall": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "argv": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ }
45
+ },
46
+ "required": [
47
+ "argv"
48
+ ]
49
+ }
50
+ ]
51
+ },
52
+ "rows": {
53
+ "type": "array"
54
+ },
55
+ "collapse": {
56
+ "type": "object"
57
+ },
58
+ "gaps": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "object",
62
+ "properties": {
63
+ "id": {
64
+ "type": "string"
65
+ },
66
+ "file": {
67
+ "type": "string"
68
+ },
69
+ "line": {
70
+ "type": "integer",
71
+ "minimum": 0
72
+ },
73
+ "op": {
74
+ "type": "string"
75
+ }
76
+ },
77
+ "required": [
78
+ "id",
79
+ "file",
80
+ "line"
81
+ ]
82
+ }
83
+ },
84
+ "rest": {
85
+ "type": "integer",
86
+ "minimum": 0
87
+ },
88
+ "pruning": {
89
+ "type": "object",
90
+ "properties": {
91
+ "mode": {
92
+ "const": "advisory"
93
+ },
94
+ "deletedTests": {
95
+ "const": 0
96
+ },
97
+ "advice": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "string"
101
+ }
102
+ }
103
+ },
104
+ "required": [
105
+ "mode",
106
+ "deletedTests"
107
+ ]
108
+ },
109
+ "full": {
110
+ "type": "string"
111
+ }
112
+ },
113
+ "if": {
114
+ "properties": {
115
+ "ok": {
116
+ "const": true
117
+ }
118
+ }
119
+ },
120
+ "then": {
121
+ "required": [
122
+ "rows",
123
+ "gaps",
124
+ "rest",
125
+ "pruning",
126
+ "full"
127
+ ]
128
+ }
129
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/IronAdamant/Probatio/blob/main/schemas/mcp.schema.json",
4
+ "title": "probatio mcp",
5
+ "description": "Printed by the MCP server only when Node is too old to run it. Every command prints one JSON object. schemaVersion changes when a field is renamed, removed, or changes meaning. A new field does not change it.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "ok",
10
+ "command",
11
+ "summary",
12
+ "next",
13
+ "nextCall"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "const": 2
18
+ },
19
+ "ok": {
20
+ "type": "boolean"
21
+ },
22
+ "command": {
23
+ "const": "mcp"
24
+ },
25
+ "summary": {
26
+ "type": "string"
27
+ },
28
+ "next": {
29
+ "type": "string"
30
+ },
31
+ "nextCall": {
32
+ "oneOf": [
33
+ {
34
+ "type": "null"
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "argv": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ }
45
+ },
46
+ "required": [
47
+ "argv"
48
+ ]
49
+ }
50
+ ]
51
+ }
52
+ }
53
+ }