Run a bounded synthetic case pack against a stored policy version
Executes an independently authored case pack against the rules stored on this policy version, in process, and returns the per-case results.
SYNTHETIC. No decision, receipt, policy snapshot or audit row is created, nothing is signed and nothing is persisted. The response carries no integrity_hash, no signature and no decision id — it is not receipt-shaped and cannot be presented as a real evaluation. Non-billing, and rate-limited under the standard per-tenant/per-key tier.
RECORDS what the stored rules did for each supplied case at the supplied evaluation_time, and how that compares to the case’s expectation.
ESTABLISHES deterministic agreement for the exact cases, rules, context and evaluator version exercised. It does NOT establish completeness beyond those cases, the truth of the case classifications, or source fidelity — the spike found one invented rule and one over-broad rule that oracle execution did not catch.
Five scoring states, not a pass rate. match and mismatch are the scored outcomes. unrepresentable is an expected NOT_APPLICABLE: the evaluator has no verdict for “this policy does not apply”, and its zero-rule ALLOW is retained as engine output rather than promoted to the policy outcome. not_scored is an expected OUT_OF_SCOPE_INSUFFICIENT_EVIDENCE, or a case with no expectation. operational_failure is an evaluator exception for that case — an indeterminate state, never an ALLOW. The summary reports five counts and no ratio, because the states do not roll up.
422 CASE_PACK_CANDIDATE_DERIVED refuses a pack that declares non-independent authorship AND whose every comparable expectation names exactly the rule codes the candidate fires. That check is narrow: it cannot detect a derived pack that declares independent, and coincidence with the firing set is also what a CORRECT independent oracle looks like.
Authorizations
MeshQu API key passed as a bearer token: Authorization: Bearer mqu_…. Mint one in the console (Settings → API keys).
Tenant UUID for multi-tenant isolation. Required on all authenticated routes — validated before authentication (middleware/tenant.ts), so a missing or non-UUID header returns 400 (MISSING_TENANT_ID / INVALID_TENANT_ID) before the API key is checked.
Path Parameters
Policy id.
Policy version number.
x >= 1Body
Response
Default Response
Always true. This is a synthetic preview: no decision, receipt, policy snapshot or audit row was created, nothing was signed, and nothing was persisted. It is non-billing and rate-limited under the standard per-tenant/per-key tier.
true Always true. Synthetic case executions are not metered as evaluations.
true Always false. Stated as a field rather than only in prose so a client can assert it, and so a future change that began persisting would have to change this literal and every test reading it.
false meshqu-case-pack/v1 Names the SEMANTICS of the shared verdict loop, not a build, package version or deployment.
PRESENTATION metadata. Excluded from the digest-bound projection that occupies the review package's case_execution_results slot, so re-running identical work does not move a package digest.
The candidate-derivation canary verdict for the executed pack. A REJECTED pack never reaches this response — it is a 422. See the 422 description for the heuristic's stated limits.