@orygn/opa-mcp 0.5.0 → 0.6.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.
- package/CHANGELOG.md +244 -1
- package/README.md +98 -51
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +13 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +35 -5
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +1 -6
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +17 -3
- package/dist/constants.js.map +1 -1
- package/dist/lib/conftest-cli.d.ts.map +1 -1
- package/dist/lib/conftest-cli.js +81 -17
- package/dist/lib/conftest-cli.js.map +1 -1
- package/dist/lib/errors.d.ts +4 -5
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +15 -3
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/inline-paths.d.ts +37 -0
- package/dist/lib/inline-paths.d.ts.map +1 -0
- package/dist/lib/inline-paths.js +162 -0
- package/dist/lib/inline-paths.js.map +1 -0
- package/dist/lib/opa-cli.d.ts +10 -0
- package/dist/lib/opa-cli.d.ts.map +1 -1
- package/dist/lib/opa-cli.js +9 -2
- package/dist/lib/opa-cli.js.map +1 -1
- package/dist/lib/opa-client.d.ts +27 -1
- package/dist/lib/opa-client.d.ts.map +1 -1
- package/dist/lib/opa-client.js +98 -14
- package/dist/lib/opa-client.js.map +1 -1
- package/dist/lib/opa-paths.d.ts +11 -1
- package/dist/lib/opa-paths.d.ts.map +1 -1
- package/dist/lib/opa-paths.js +25 -21
- package/dist/lib/opa-paths.js.map +1 -1
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +83 -10
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/rego-ast-walker.d.ts +0 -6
- package/dist/lib/rego-ast-walker.d.ts.map +1 -1
- package/dist/lib/rego-ast-walker.js +48 -46
- package/dist/lib/rego-ast-walker.js.map +1 -1
- package/dist/lib/rego-counterexample.d.ts +14 -1
- package/dist/lib/rego-counterexample.d.ts.map +1 -1
- package/dist/lib/rego-counterexample.js +40 -10
- package/dist/lib/rego-counterexample.js.map +1 -1
- package/dist/lib/rego-input-path.d.ts +20 -0
- package/dist/lib/rego-input-path.d.ts.map +1 -0
- package/dist/lib/rego-input-path.js +70 -0
- package/dist/lib/rego-input-path.js.map +1 -0
- package/dist/lib/rego-ir.d.ts +2 -1
- package/dist/lib/rego-ir.d.ts.map +1 -1
- package/dist/lib/rego-smt-encoder.d.ts +35 -0
- package/dist/lib/rego-smt-encoder.d.ts.map +1 -1
- package/dist/lib/rego-smt-encoder.js +81 -8
- package/dist/lib/rego-smt-encoder.js.map +1 -1
- package/dist/lib/rego-type-inferencer.d.ts +26 -1
- package/dist/lib/rego-type-inferencer.d.ts.map +1 -1
- package/dist/lib/rego-type-inferencer.js +68 -0
- package/dist/lib/rego-type-inferencer.js.map +1 -1
- package/dist/lib/rego-verify-engine.d.ts.map +1 -1
- package/dist/lib/rego-verify-engine.js +171 -90
- package/dist/lib/rego-verify-engine.js.map +1 -1
- package/dist/lib/rego-z3.d.ts +56 -0
- package/dist/lib/rego-z3.d.ts.map +1 -1
- package/dist/lib/rego-z3.js +276 -7
- package/dist/lib/rego-z3.js.map +1 -1
- package/dist/lib/subprocess.d.ts +13 -0
- package/dist/lib/subprocess.d.ts.map +1 -1
- package/dist/lib/subprocess.js +153 -18
- package/dist/lib/subprocess.js.map +1 -1
- package/dist/lib/tool-helpers.d.ts +12 -25
- package/dist/lib/tool-helpers.d.ts.map +1 -1
- package/dist/lib/tool-helpers.js +66 -40
- package/dist/lib/tool-helpers.js.map +1 -1
- package/dist/prompts/index.js +2 -2
- package/dist/resources/index.js +1 -1
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/patterns.d.ts +1 -1
- package/dist/resources/patterns.d.ts.map +1 -1
- package/dist/resources/patterns.js +2 -3
- package/dist/resources/patterns.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +40 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/authoring/capabilities.d.ts +4 -0
- package/dist/tools/authoring/capabilities.d.ts.map +1 -1
- package/dist/tools/authoring/capabilities.js +41 -4
- package/dist/tools/authoring/capabilities.js.map +1 -1
- package/dist/tools/authoring/check-schema.d.ts +6 -0
- package/dist/tools/authoring/check-schema.d.ts.map +1 -1
- package/dist/tools/authoring/check-schema.js +56 -3
- package/dist/tools/authoring/check-schema.js.map +1 -1
- package/dist/tools/authoring/format.d.ts.map +1 -1
- package/dist/tools/authoring/format.js +2 -2
- package/dist/tools/authoring/format.js.map +1 -1
- package/dist/tools/authoring/lint.d.ts.map +1 -1
- package/dist/tools/authoring/lint.js +8 -6
- package/dist/tools/authoring/lint.js.map +1 -1
- package/dist/tools/authoring/migrate-v1.d.ts.map +1 -1
- package/dist/tools/authoring/migrate-v1.js +20 -4
- package/dist/tools/authoring/migrate-v1.js.map +1 -1
- package/dist/tools/authoring/parse.d.ts.map +1 -1
- package/dist/tools/authoring/parse.js +3 -3
- package/dist/tools/authoring/parse.js.map +1 -1
- package/dist/tools/bundles/sign.d.ts.map +1 -1
- package/dist/tools/bundles/sign.js +14 -34
- package/dist/tools/bundles/sign.js.map +1 -1
- package/dist/tools/conftest/index.d.ts +5 -0
- package/dist/tools/conftest/index.d.ts.map +1 -1
- package/dist/tools/conftest/index.js.map +1 -1
- package/dist/tools/conftest/test.d.ts.map +1 -1
- package/dist/tools/conftest/test.js +16 -17
- package/dist/tools/conftest/test.js.map +1 -1
- package/dist/tools/conftest/verify.d.ts.map +1 -1
- package/dist/tools/conftest/verify.js +14 -18
- package/dist/tools/conftest/verify.js.map +1 -1
- package/dist/tools/evaluation/_shared.js +9 -12
- package/dist/tools/evaluation/_shared.js.map +1 -1
- package/dist/tools/evaluation/bench.d.ts +20 -9
- package/dist/tools/evaluation/bench.d.ts.map +1 -1
- package/dist/tools/evaluation/bench.js +31 -12
- package/dist/tools/evaluation/bench.js.map +1 -1
- package/dist/tools/evaluation/compile.js +4 -4
- package/dist/tools/evaluation/compile.js.map +1 -1
- package/dist/tools/evaluation/eval.d.ts.map +1 -1
- package/dist/tools/evaluation/eval.js +12 -16
- package/dist/tools/evaluation/eval.js.map +1 -1
- package/dist/tools/evaluation/exec.d.ts.map +1 -1
- package/dist/tools/evaluation/exec.js +3 -4
- package/dist/tools/evaluation/exec.js.map +1 -1
- package/dist/tools/evaluation/test-multiroot.d.ts +2 -0
- package/dist/tools/evaluation/test-multiroot.d.ts.map +1 -1
- package/dist/tools/evaluation/test-multiroot.js +23 -6
- package/dist/tools/evaluation/test-multiroot.js.map +1 -1
- package/dist/tools/evaluation/test.d.ts.map +1 -1
- package/dist/tools/evaluation/test.js +8 -6
- package/dist/tools/evaluation/test.js.map +1 -1
- package/dist/tools/helpers/coverage-gaps.d.ts.map +1 -1
- package/dist/tools/helpers/coverage-gaps.js +3 -4
- package/dist/tools/helpers/coverage-gaps.js.map +1 -1
- package/dist/tools/helpers/describe-policy.d.ts.map +1 -1
- package/dist/tools/helpers/describe-policy.js +2 -2
- package/dist/tools/helpers/describe-policy.js.map +1 -1
- package/dist/tools/helpers/explain-decision.d.ts.map +1 -1
- package/dist/tools/helpers/explain-decision.js +3 -4
- package/dist/tools/helpers/explain-decision.js.map +1 -1
- package/dist/tools/helpers/explain-undefined.d.ts.map +1 -1
- package/dist/tools/helpers/explain-undefined.js +131 -22
- package/dist/tools/helpers/explain-undefined.js.map +1 -1
- package/dist/tools/helpers/fix.d.ts +11 -5
- package/dist/tools/helpers/fix.d.ts.map +1 -1
- package/dist/tools/helpers/fix.js +88 -45
- package/dist/tools/helpers/fix.js.map +1 -1
- package/dist/tools/helpers/generate-test-skeleton.d.ts.map +1 -1
- package/dist/tools/helpers/generate-test-skeleton.js +105 -21
- package/dist/tools/helpers/generate-test-skeleton.js.map +1 -1
- package/dist/tools/helpers/playground-share.d.ts +4 -2
- package/dist/tools/helpers/playground-share.d.ts.map +1 -1
- package/dist/tools/helpers/playground-share.js +13 -3
- package/dist/tools/helpers/playground-share.js.map +1 -1
- package/dist/tools/helpers/policy-diff.d.ts.map +1 -1
- package/dist/tools/helpers/policy-diff.js +3 -4
- package/dist/tools/helpers/policy-diff.js.map +1 -1
- package/dist/tools/helpers/security-audit.d.ts.map +1 -1
- package/dist/tools/helpers/security-audit.js +19 -19
- package/dist/tools/helpers/security-audit.js.map +1 -1
- package/dist/tools/meta/index.d.ts +1 -1
- package/dist/tools/server-management/_shared.d.ts.map +1 -1
- package/dist/tools/server-management/_shared.js +13 -1
- package/dist/tools/server-management/_shared.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { walkModule } from './rego-ast-walker.js';
|
|
2
|
-
import { inferTypes } from './rego-type-inferencer.js';
|
|
3
|
-
import { createInputVars, encodeRule } from './rego-smt-encoder.js';
|
|
2
|
+
import { collectPathReads, inferTypes } from './rego-type-inferencer.js';
|
|
3
|
+
import { clauseInputPaths, createInputVars, structuralAxioms, encodeRule, } from './rego-smt-encoder.js';
|
|
4
4
|
import { extractCounterexample, formatCounterexample, } from './rego-counterexample.js';
|
|
5
5
|
import { describeProperty } from './rego-property-parser.js';
|
|
6
|
-
import { getZ3, withZ3Lock } from './rego-z3.js';
|
|
6
|
+
import { getZ3, isZ3RecoverableMessage, isZ3UnavailableMessage, withZ3Lock, Z3_SOLVER_MAX_MEMORY_MB, } from './rego-z3.js';
|
|
7
7
|
// Monotonically increasing counter used to generate a unique prefix for all
|
|
8
8
|
// Z3 constant names within each runVerify call. This prevents sort conflicts
|
|
9
9
|
// when the same input path is inferred with different sorts across calls
|
|
@@ -17,6 +17,10 @@ const SOLVER_TIMEOUT_MS = 10_000;
|
|
|
17
17
|
* The caller must pass the JSON-parsed result of `opa parse --format=json`.
|
|
18
18
|
*/
|
|
19
19
|
export async function runVerify(ast, property, signal) {
|
|
20
|
+
return verifyAttempt(ast, property, signal, 0);
|
|
21
|
+
}
|
|
22
|
+
/** One attempt; a fault that cuts it short earns one more on a fresh module. */
|
|
23
|
+
async function verifyAttempt(ast, property, signal, attempt) {
|
|
20
24
|
const walked = walkModule(ast);
|
|
21
25
|
const warnings = [];
|
|
22
26
|
const targetClauses = walked.rules.get(property.ruleName);
|
|
@@ -58,6 +62,49 @@ export async function runVerify(ast, property, signal) {
|
|
|
58
62
|
for (const conflict of typeResult.conflicts) {
|
|
59
63
|
warnings.push(conflict.reason);
|
|
60
64
|
}
|
|
65
|
+
// How this rule reads each path. Scoped to the rule under test: what
|
|
66
|
+
// another rule of the module does with a field says nothing about the
|
|
67
|
+
// inputs that reach this one.
|
|
68
|
+
const reads = collectPathReads(targetClauses);
|
|
69
|
+
// Every path this rule reads, with its segments. Also what a witness may
|
|
70
|
+
// name: a path from another rule has no constraint here, so model
|
|
71
|
+
// completion would invent a value for it.
|
|
72
|
+
const rulePaths = new Map();
|
|
73
|
+
for (const path of clauseInputPaths(targetClauses)) {
|
|
74
|
+
const segs = walked.inputPaths.get(path);
|
|
75
|
+
if (segs !== undefined)
|
|
76
|
+
rulePaths.set(path, segs);
|
|
77
|
+
}
|
|
78
|
+
// A field the rule reads beneath is an object in any input that reaches
|
|
79
|
+
// that read, yet the model gives it one scalar value. Comparing it as a
|
|
80
|
+
// value in a way the structural axioms do not cover (anything but
|
|
81
|
+
// equality with a scalar literal or a string built-in) can then be
|
|
82
|
+
// satisfied by a model whose witness carries the object, on which OPA
|
|
83
|
+
// decides the comparison the other way; under a negated property the
|
|
84
|
+
// directions that happen to hold for an object flip. No verdict from such
|
|
85
|
+
// a model can be trusted, so the rule is reported inconclusive.
|
|
86
|
+
const comparedParents = [...reads.valueReads]
|
|
87
|
+
.filter((path) => {
|
|
88
|
+
const segs = rulePaths.get(path);
|
|
89
|
+
if (segs === undefined)
|
|
90
|
+
return false;
|
|
91
|
+
for (const otherSegs of rulePaths.values()) {
|
|
92
|
+
if (otherSegs.length > segs.length && segs.every((seg, i) => otherSegs[i] === seg)) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
})
|
|
98
|
+
.sort();
|
|
99
|
+
if (comparedParents.length > 0) {
|
|
100
|
+
return inconclusive(property, `Rule "${property.ruleName}" compares ${comparedParents.join(', ')} as a value and also reads a field beneath it. Such a field is an object wherever the deeper read holds, which the encoder cannot model, so verification is inconclusive.`, [
|
|
101
|
+
...unsupportedInRule,
|
|
102
|
+
{
|
|
103
|
+
constructType: 'parent_field_compared_as_value',
|
|
104
|
+
description: `${comparedParents.join(', ')} compared as a value while a field beneath it is also read`,
|
|
105
|
+
},
|
|
106
|
+
], warnings);
|
|
107
|
+
}
|
|
61
108
|
signal?.throwIfAborted();
|
|
62
109
|
// Everything below touches the shared Z3 Context, which is one
|
|
63
110
|
// single-threaded WASM heap. Concurrent MCP tool calls must not overlap
|
|
@@ -78,110 +125,134 @@ export async function runVerify(ast, property, signal) {
|
|
|
78
125
|
if (encoded.unencodable) {
|
|
79
126
|
return inconclusive(property, `Rule "${property.ruleName}" contains a value or operand the encoder cannot represent (for example a null literal). Verification is inconclusive rather than guessed.`, unsupportedInRule, warnings);
|
|
80
127
|
}
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
128
|
+
// Released in the finally below, along with its model, rather than
|
|
129
|
+
// left to the collector, which cannot see Z3's memory: measured, that
|
|
130
|
+
// release alone is what holds 1500 solves at about 210 MB. The
|
|
131
|
+
// formula's nodes go through z3-solver's finalizers, which rego-z3
|
|
132
|
+
// holds until no solve is running.
|
|
86
133
|
const solver = new Z3.Solver();
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
//
|
|
113
|
-
// With absence modelled, Z3 will happily satisfy NOT(rule) by omitting a
|
|
114
|
-
// field, which is sound but unhelpful: "it fails when the input is empty"
|
|
115
|
-
// is rarely the case a reviewer is chasing. Re-ask with presence forced and
|
|
116
|
-
// keep that model when one exists, otherwise fall back to the original.
|
|
117
|
-
// Soundness is unaffected either way, since both are real models.
|
|
118
|
-
if (solverResult === 'sat' && presenceVars.size > 0) {
|
|
119
|
-
solver.push();
|
|
120
|
-
for (const present of presenceVars.values())
|
|
121
|
-
solver.add(present);
|
|
122
|
-
const withPresence = await solver.check();
|
|
123
|
-
if (withPresence === 'sat') {
|
|
124
|
-
solverResult = withPresence;
|
|
134
|
+
try {
|
|
135
|
+
// Bounded in time and in memory. The solver's memory bound sits below
|
|
136
|
+
// the process ceiling so that running out answers "unknown" at a
|
|
137
|
+
// checkpoint instead of failing an allocation; see rego-z3.ts.
|
|
138
|
+
solver.set('timeout', SOLVER_TIMEOUT_MS);
|
|
139
|
+
solver.set('max_memory', Z3_SOLVER_MAX_MEMORY_MB);
|
|
140
|
+
switch (property.kind) {
|
|
141
|
+
case 'always_true':
|
|
142
|
+
// Prove rule is always true: check if NOT(rule) is satisfiable.
|
|
143
|
+
// SAT → counterexample (input where rule is false)
|
|
144
|
+
// UNSAT → proven always true
|
|
145
|
+
solver.add(Z3.Not(encoded.formula));
|
|
146
|
+
break;
|
|
147
|
+
case 'never_true':
|
|
148
|
+
// Prove rule is never true: check if rule IS satisfiable.
|
|
149
|
+
// SAT → counterexample (input where rule fires, violating "never")
|
|
150
|
+
// UNSAT → proven never true
|
|
151
|
+
solver.add(encoded.formula);
|
|
152
|
+
break;
|
|
153
|
+
case 'satisfiable':
|
|
154
|
+
// Check if any input satisfies the rule.
|
|
155
|
+
// SAT → witness found (not a bug, just a satisfying input)
|
|
156
|
+
// UNSAT → rule is vacuously false / dead code
|
|
157
|
+
solver.add(encoded.formula);
|
|
158
|
+
break;
|
|
125
159
|
}
|
|
126
|
-
|
|
127
|
-
|
|
160
|
+
signal?.throwIfAborted();
|
|
161
|
+
// What any real input looks like, alongside the property.
|
|
162
|
+
for (const axiom of structuralAxioms(Z3, walked.inputPaths, reads.scalarPaths, presenceVars)) {
|
|
163
|
+
solver.add(axiom);
|
|
128
164
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
165
|
+
let solverResult = await solver.check();
|
|
166
|
+
// Prefer a witness in which every field the rule reads is PRESENT.
|
|
167
|
+
//
|
|
168
|
+
// With absence modelled, Z3 will happily satisfy NOT(rule) by omitting a
|
|
169
|
+
// field, which is sound but unhelpful: "it fails when the input is empty"
|
|
170
|
+
// is rarely the case a reviewer is chasing. Re-ask with presence forced and
|
|
171
|
+
// keep that model when one exists, otherwise fall back to the original.
|
|
172
|
+
// Soundness is unaffected either way, since both are real models.
|
|
173
|
+
if (solverResult === 'sat' && presenceVars.size > 0) {
|
|
174
|
+
solver.push();
|
|
175
|
+
for (const present of presenceVars.values())
|
|
176
|
+
solver.add(present);
|
|
177
|
+
const withPresence = await solver.check();
|
|
178
|
+
if (withPresence === 'sat') {
|
|
179
|
+
solverResult = withPresence;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// The model belongs to the last check; after the pop that was an
|
|
183
|
+
// unsat one, so ask again before reading it.
|
|
184
|
+
solver.pop();
|
|
185
|
+
solverResult = await solver.check();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (solverResult === 'unknown') {
|
|
189
|
+
return inconclusive(property, `Z3 solver returned "unknown": the ${SOLVER_TIMEOUT_MS}ms time limit or the ${Z3_SOLVER_MAX_MEMORY_MB} MB memory limit was reached. The policy may be too complex for automated verification.`, unsupportedInRule, warnings);
|
|
190
|
+
}
|
|
191
|
+
if (solverResult === 'unsat') {
|
|
192
|
+
if (property.kind === 'satisfiable') {
|
|
193
|
+
// No satisfying input exists -- rule is dead code or has contradictory conditions.
|
|
194
|
+
return {
|
|
195
|
+
verdict: 'unsatisfiable',
|
|
196
|
+
property: describeProperty(property),
|
|
197
|
+
rule: property.ruleName,
|
|
198
|
+
unsupportedConstructs: unsupportedInRule,
|
|
199
|
+
warnings,
|
|
200
|
+
message: `UNSATISFIABLE: No input can make "${property.ruleName}" true. The rule may be dead code or have contradictory conditions.`,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// For always_true / never_true: UNSAT on the negation = property proven
|
|
204
|
+
return {
|
|
205
|
+
verdict: 'proven',
|
|
206
|
+
property: describeProperty(property),
|
|
207
|
+
rule: property.ruleName,
|
|
208
|
+
unsupportedConstructs: unsupportedInRule,
|
|
209
|
+
warnings,
|
|
210
|
+
message: `PROVEN: ${describeProperty(property)}.`,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// SAT: read the model and release it as soon as the witness is out; it
|
|
214
|
+
// is Z3 memory the collector cannot see.
|
|
215
|
+
const witnessVars = new Map([...inputVars].filter(([path]) => rulePaths.has(path)));
|
|
216
|
+
const witnessPresence = new Map([...presenceVars].filter(([path]) => rulePaths.has(path)));
|
|
217
|
+
const model = solver.model();
|
|
218
|
+
let ce;
|
|
219
|
+
try {
|
|
220
|
+
ce = extractCounterexample(model, witnessVars, typeResult.sorts, witnessPresence);
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
model.release();
|
|
224
|
+
}
|
|
225
|
+
const ceFormatted = formatCounterexample(ce);
|
|
134
226
|
if (property.kind === 'satisfiable') {
|
|
135
|
-
// No satisfying input exists -- rule is dead code or has contradictory conditions.
|
|
136
227
|
return {
|
|
137
|
-
verdict: '
|
|
228
|
+
verdict: 'proven',
|
|
138
229
|
property: describeProperty(property),
|
|
139
230
|
rule: property.ruleName,
|
|
231
|
+
counterexample: ce,
|
|
232
|
+
counterexampleFormatted: ceFormatted,
|
|
140
233
|
unsupportedConstructs: unsupportedInRule,
|
|
141
234
|
warnings,
|
|
142
|
-
message: `
|
|
235
|
+
message: `SATISFIABLE: Found an input that makes "${property.ruleName}" true.\n\nWitness input:\n${ceFormatted}`,
|
|
143
236
|
};
|
|
144
237
|
}
|
|
145
|
-
//
|
|
238
|
+
// always_true / never_true: SAT means we found a violation
|
|
239
|
+
const ceLabel = property.kind === 'always_true'
|
|
240
|
+
? 'input where rule is FALSE'
|
|
241
|
+
: 'input where rule is TRUE (violates "never")';
|
|
146
242
|
return {
|
|
147
|
-
verdict: '
|
|
148
|
-
property: describeProperty(property),
|
|
149
|
-
rule: property.ruleName,
|
|
150
|
-
unsupportedConstructs: unsupportedInRule,
|
|
151
|
-
warnings,
|
|
152
|
-
message: `PROVEN: ${describeProperty(property)}.`,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
// SAT: pass solver.model() inline so the Model object is not kept alive
|
|
156
|
-
// beyond extractCounterexample -- it becomes GC-eligible immediately after.
|
|
157
|
-
const ce = extractCounterexample(solver.model(), inputVars, typeResult.sorts, presenceVars);
|
|
158
|
-
const ceFormatted = formatCounterexample(ce);
|
|
159
|
-
if (property.kind === 'satisfiable') {
|
|
160
|
-
return {
|
|
161
|
-
verdict: 'proven',
|
|
243
|
+
verdict: 'counterexample',
|
|
162
244
|
property: describeProperty(property),
|
|
163
245
|
rule: property.ruleName,
|
|
164
246
|
counterexample: ce,
|
|
165
247
|
counterexampleFormatted: ceFormatted,
|
|
166
248
|
unsupportedConstructs: unsupportedInRule,
|
|
167
249
|
warnings,
|
|
168
|
-
message: `
|
|
250
|
+
message: `COUNTEREXAMPLE: Property does NOT hold. Found ${ceLabel}:\n\n${ceFormatted}`,
|
|
169
251
|
};
|
|
170
252
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
: 'input where rule is TRUE (violates "never")';
|
|
175
|
-
return {
|
|
176
|
-
verdict: 'counterexample',
|
|
177
|
-
property: describeProperty(property),
|
|
178
|
-
rule: property.ruleName,
|
|
179
|
-
counterexample: ce,
|
|
180
|
-
counterexampleFormatted: ceFormatted,
|
|
181
|
-
unsupportedConstructs: unsupportedInRule,
|
|
182
|
-
warnings,
|
|
183
|
-
message: `COUNTEREXAMPLE: Property does NOT hold. Found ${ceLabel}:\n\n${ceFormatted}`,
|
|
184
|
-
};
|
|
253
|
+
finally {
|
|
254
|
+
solver.release();
|
|
255
|
+
}
|
|
185
256
|
});
|
|
186
257
|
}
|
|
187
258
|
catch (e) {
|
|
@@ -191,10 +262,20 @@ export async function runVerify(ast, property, signal) {
|
|
|
191
262
|
if (signal?.aborted)
|
|
192
263
|
throw e;
|
|
193
264
|
const detail = e instanceof Error ? e.message : String(e);
|
|
265
|
+
// A fault cut this solve short; the next getZ3 brings up a fresh module,
|
|
266
|
+
// so the call is worth one more try before it is reported.
|
|
267
|
+
if (attempt === 0 && isZ3RecoverableMessage(detail)) {
|
|
268
|
+
return verifyAttempt(ast, property, signal, 1);
|
|
269
|
+
}
|
|
194
270
|
const isSortConflict = /sort/i.test(detail) && /incompat/i.test(detail);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
271
|
+
// A dead Z3 says so in its message; that is the one thing the caller can
|
|
272
|
+
// act on (restart), so it goes through verbatim.
|
|
273
|
+
const z3Down = isZ3UnavailableMessage(detail);
|
|
274
|
+
return inconclusive(property, z3Down
|
|
275
|
+
? detail
|
|
276
|
+
: isSortConflict
|
|
277
|
+
? 'The rule constrains an input field to conflicting types (for example, compared against both a number and a string), which cannot be encoded for SMT solving.'
|
|
278
|
+
: 'Verification could not be completed due to an internal encoding or solver error.', [
|
|
198
279
|
...unsupportedInRule,
|
|
199
280
|
{
|
|
200
281
|
constructType: isSortConflict ? 'type_conflict' : 'encoding_error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rego-verify-engine.js","sourceRoot":"","sources":["../../src/lib/rego-verify-engine.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAuB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEjD,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,qBAAqB;AACrB,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAe3B,6CAA6C;AAC7C,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAc,EACd,QAAwB,EACxB,MAAoB;IAEpB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE1D,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAU,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;gBAAE,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAC9C,CAAC;IAEF,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,gFAAgF;QAChF,mEAAmE;QACnE,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,YAAY,CACjB,QAAQ,EACR,SAAS,QAAQ,CAAC,QAAQ,qCAAqC,EAC/D,iBAAiB,EACjB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,MAAM,uBAAuB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CACpD,CAAC;IACF,IAAI,uBAAuB,EAAE,CAAC;QAC5B,OAAO,YAAY,CACjB,QAAQ,EACR,SAAS,QAAQ,CAAC,QAAQ,sKAAsK,EAChM,iBAAiB,EACjB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,oBAAoB;IACpB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7E,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,EAAE,cAAc,EAAE,CAAC;QAEzB,+DAA+D;QAC/D,wEAAwE;QACxE,kEAAkE;QAClE,uEAAuE;QACvE,4BAA4B;QAC5B,OAAO,MAAM,UAAU,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;YAEzB,MAAM,EAAE,cAAc,EAAE,CAAC;YAEzB,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,eAAe,CACjE,EAAE,EACF,MAAM,CAAC,UAAU,EACjB,UAAU,CAAC,KAAK,EAChB,MAAM,CACP,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YAC7E,wEAAwE;YACxE,6EAA6E;YAC7E,oEAAoE;YACpE,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvF,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEnC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,YAAY,CACjB,QAAQ,EACR,SAAS,QAAQ,CAAC,QAAQ,4IAA4I,EACtK,iBAAiB,EACjB,QAAQ,CACT,CAAC;YACJ,CAAC;YAED,+EAA+E;YAC/E,qEAAqE;YACrE,4EAA4E;YAC5E,6EAA6E;YAC7E,mCAAmC;YACnC,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAE/B,qDAAqD;YACrD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAEzC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,aAAa;oBAChB,gEAAgE;oBAChE,mDAAmD;oBACnD,6BAA6B;oBAC7B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,YAAY;oBACf,0DAA0D;oBAC1D,mEAAmE;oBACnE,4BAA4B;oBAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,aAAa;oBAChB,yCAAyC;oBACzC,2DAA2D;oBAC3D,8CAA8C;oBAC9C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC5B,MAAM;YACV,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,CAAC;YAEzB,IAAI,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAExC,mEAAmE;YACnE,EAAE;YACF,yEAAyE;YACzE,0EAA0E;YAC1E,4EAA4E;YAC5E,wEAAwE;YACxE,kEAAkE;YAClE,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE;oBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC1C,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;oBAC3B,YAAY,GAAG,YAAY,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,YAAY,CACjB,QAAQ,EACR,yEAAyE,iBAAiB,gEAAgE,EAC1J,iBAAiB,EACjB,QAAQ,CACT,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACpC,mFAAmF;oBACnF,OAAO;wBACL,OAAO,EAAE,eAAe;wBACxB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;wBACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;wBACvB,qBAAqB,EAAE,iBAAiB;wBACxC,QAAQ;wBACR,OAAO,EAAE,qCAAqC,QAAQ,CAAC,QAAQ,qEAAqE;qBACrI,CAAC;gBACJ,CAAC;gBACD,wEAAwE;gBACxE,OAAO;oBACL,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;oBACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,qBAAqB,EAAE,iBAAiB;oBACxC,QAAQ;oBACR,OAAO,EAAE,WAAW,gBAAgB,CAAC,QAAQ,CAAC,GAAG;iBAClD,CAAC;YACJ,CAAC;YAED,wEAAwE;YACxE,4EAA4E;YAC5E,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAE7C,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;oBACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,cAAc,EAAE,EAAE;oBAClB,uBAAuB,EAAE,WAAW;oBACpC,qBAAqB,EAAE,iBAAiB;oBACxC,QAAQ;oBACR,OAAO,EAAE,2CAA2C,QAAQ,CAAC,QAAQ,8BAA8B,WAAW,EAAE;iBACjH,CAAC;YACJ,CAAC;YAED,2DAA2D;YAC3D,MAAM,OAAO,GACX,QAAQ,CAAC,IAAI,KAAK,aAAa;gBAC7B,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,6CAA6C,CAAC;YAEpD,OAAO;gBACL,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;gBACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,cAAc,EAAE,EAAE;gBAClB,uBAAuB,EAAE,WAAW;gBACpC,qBAAqB,EAAE,iBAAiB;gBACxC,QAAQ;gBACR,OAAO,EAAE,iDAAiD,OAAO,QAAQ,WAAW,EAAE;aACvF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sEAAsE;QACtE,uEAAuE;QACvE,qDAAqD;QACrD,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO,YAAY,CACjB,QAAQ,EACR,cAAc;YACZ,CAAC,CAAC,8JAA8J;YAChK,CAAC,CAAC,kFAAkF,EACtF;YACE,GAAG,iBAAiB;YACpB;gBACE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;gBAClE,WAAW,EAAE,MAAM;aACpB;SACF,EACD,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,QAAwB,EACxB,MAAc,EACd,qBAA4E,EAC5E,QAAkB;IAElB,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;QACvB,qBAAqB;QACrB,QAAQ;QACR,OAAO,EAAE,iBAAiB,MAAM,EAAE;KACnC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,QAAwB,EACxB,YAAqB,EACrB,qBAA4E,EAC5E,QAAkB;IAElB,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAE/B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,aAAa;YAChB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,IAAI;oBACV,qBAAqB;oBACrB,QAAQ;oBACR,OAAO,EAAE,WAAW,IAAI,WAAW,IAAI,2DAA2D;iBACnG,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,cAAc,EAAE,YAAY;gBAC5B,uBAAuB,EAAE,cAAc;gBACvC,qBAAqB;gBACrB,QAAQ;gBACR,OAAO,EAAE,yBAAyB,IAAI,2GAA2G;aAClJ,CAAC;QAEJ,KAAK,YAAY;YACf,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,IAAI;oBACV,qBAAqB;oBACrB,QAAQ;oBACR,OAAO,EAAE,WAAW,IAAI,WAAW,IAAI,2DAA2D;iBACnG,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,cAAc,EAAE,YAAY;gBAC5B,uBAAuB,EAAE,cAAc;gBACvC,qBAAqB;gBACrB,QAAQ;gBACR,OAAO,EAAE,yBAAyB,IAAI,0GAA0G;aACjJ,CAAC;QAEJ,KAAK,aAAa;YAChB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,IAAI;oBACV,cAAc,EAAE,YAAY;oBAC5B,uBAAuB,EAAE,cAAc;oBACvC,qBAAqB;oBACrB,QAAQ;oBACR,OAAO,EAAE,sBAAsB,IAAI,kEAAkE;iBACtG,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,qBAAqB;gBACrB,QAAQ;gBACR,OAAO,EAAE,wBAAwB,IAAI,sEAAsE;aAC5G,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"rego-verify-engine.js","sourceRoot":"","sources":["../../src/lib/rego-verify-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/rego-z3.d.ts
CHANGED
|
@@ -1,10 +1,66 @@
|
|
|
1
1
|
import type { init as Z3Init } from 'z3-solver';
|
|
2
2
|
export type Z3Context = ReturnType<Awaited<ReturnType<typeof Z3Init>>['Context']>;
|
|
3
|
+
/**
|
|
4
|
+
* Ceiling on Z3's own allocations, in megabytes. Reached, Z3 raises an
|
|
5
|
+
* ordinary exception that the engine turns into an inconclusive verdict.
|
|
6
|
+
* Without it the WASM heap itself runs out, and that abort surfaces outside
|
|
7
|
+
* every try/catch as an uncaughtException that ends the server.
|
|
8
|
+
*/
|
|
9
|
+
export declare const Z3_MEMORY_MAX_MB = 1024;
|
|
10
|
+
/**
|
|
11
|
+
* The solver's own bound, checked at its checkpoints, where running out
|
|
12
|
+
* degrades to an "unknown" answer. It sits well below the process ceiling on
|
|
13
|
+
* purpose: at the same value the allocator's exception won the race, and an
|
|
14
|
+
* allocation failing inside a destructor ends in an abort rather than an
|
|
15
|
+
* error. Measured in review: equal caps aborted four times in four; a lower
|
|
16
|
+
* solver bound answered "unknown" four times in four.
|
|
17
|
+
*/
|
|
18
|
+
export declare const Z3_SOLVER_MAX_MEMORY_MB = 768;
|
|
3
19
|
/**
|
|
4
20
|
* Return the shared Z3 Context, initializing WASM on first call.
|
|
5
21
|
* Safe to call from concurrent async paths.
|
|
6
22
|
*/
|
|
7
23
|
export declare function getZ3(): Promise<Z3Context>;
|
|
24
|
+
/** Read back a Z3 global parameter, after initialisation. */
|
|
25
|
+
export declare function getZ3Param(name: string): Promise<string | null>;
|
|
26
|
+
/** Whether a Z3 critical section is running right now. */
|
|
27
|
+
export declare function isZ3Busy(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Give up on the Z3 module in use. Called when it failed outside a try/catch:
|
|
30
|
+
* the heap it lives in cannot be trusted. The next call brings up a fresh
|
|
31
|
+
* module, a bounded number of times per process.
|
|
32
|
+
*/
|
|
33
|
+
export declare function markZ3Unusable(reason: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Whether an error message is one of the two this module produces once Z3
|
|
36
|
+
* has been given up on. The engine passes such a message through to the
|
|
37
|
+
* caller verbatim, since a restart is the one thing they can do about it.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isZ3UnavailableMessage(detail: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a failure is the solve in flight being cut short by a fault, which
|
|
42
|
+
* a fresh module can answer: the engine retries such a call once.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isZ3RecoverableMessage(detail: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* How many fresh modules this process may still bring up after a fault.
|
|
47
|
+
* Three for the life of the process, however far apart the faults: each
|
|
48
|
+
* retained instance costs memory, and a fourth fault is a pattern to
|
|
49
|
+
* restart out of, not to ride.
|
|
50
|
+
*/
|
|
51
|
+
export declare function z3RecoveriesLeft(): number;
|
|
52
|
+
/** For tests: how many finalizers are waiting for the open section to close. */
|
|
53
|
+
export declare function deferredFinalizersForTesting(): number;
|
|
54
|
+
/**
|
|
55
|
+
* For tests: what z3-solver's finalizers go through. Runs at once when no
|
|
56
|
+
* section is open, otherwise once the open one closes.
|
|
57
|
+
*/
|
|
58
|
+
export declare function enqueueFinalizerForTesting(finalizer: () => void): void;
|
|
59
|
+
/**
|
|
60
|
+
* Whether an uncaught error is the WASM heap giving out, rather than some
|
|
61
|
+
* unrelated failure that happened while a solve was running.
|
|
62
|
+
*/
|
|
63
|
+
export declare function isZ3Failure(e: unknown): boolean;
|
|
8
64
|
/**
|
|
9
65
|
* Run `fn` with exclusive access to the shared Z3 Context.
|
|
10
66
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rego-z3.d.ts","sourceRoot":"","sources":["../../src/lib/rego-z3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rego-z3.d.ts","sourceRoot":"","sources":["../../src/lib/rego-z3.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC;AAKhD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAIlF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAsH3C;;;GAGG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,CA+BhD;AAED,6DAA6D;AAC7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGrE;AAED,0DAA0D;AAC1D,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAYnD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI,CAGtE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAiB/C;AASD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA2BpE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC"}
|