# Workflow Language Inclusion Checker

> Workflow Language Inclusion Checker is a paid API for AI agents from detect.halowerk.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-11-04).

Checks whether every trace accepted by an old event-contract automaton is still accepted by a new one, returning a verdict and shortest counterexample if not.

## Facts

- Endpoint: POST https://detect.halowerk.com/v1/workflow/workflow-language-inclusion?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-04
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/workflow-language-inclusion-checker-912c3e36
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_vp6oP-YQXUUBbNV4A9OJ9

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability workflow-language-inclusion-checker-912c3e36 -d '<json body>'
```

Example prompt: Check whether my updated workflow contract still accepts every trace the old one did — the old automaton has 3 states (initial: 0, finals: [2], transitions: 0->1 on 'submit', 1->2 on 'approve') and the new one has 4 states (initial: 0, finals: [3], transitions: 0->1 on 'submit', 1->2 on 'review', 2->3 on 'approve'). Tell me if language inclusion holds and if not give me the shortest counterexample.

## When to prefer this

Use this endpoint when you need to formally verify backward compatibility of event-contract or workflow-automaton changes — specifically when you need to know if every trace accepted by the old contract is still accepted by the new one, and want the shortest concrete counterexample if not. Prefer this over manual testing or general model checkers when your contracts are expressible as small finite automata (up to 8 states, 32 transitions) and you need a deterministic, low-latency answer.

## Known failure modes

- Invalid automaton structure (initial state out of range, finals referencing nonexistent states) — 400 Bad Request
- Automaton exceeds size limits (more than 8 states or 32 transitions) — 400 validation error
- Nondeterministic or malformed transition labels — may produce unexpected inclusion results
- Network timeout for large or complex automata near the size boundary
- Payment not attached or insufficient — 402 Payment Required

## How this service works

An agent that changes a deterministic event contract needs whether every accepted old trace is still accepted by the new contract and the shortest counterexample length.

## Output

Returns a boolean indicating whether the language of the before automaton is a subset of the language of the after automaton (inclusion holds), and if not, the shortest event trace (sequence of labels) that is accepted by the before automaton but rejected by the after automaton, along with its length.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "artifact": {
   "type": "object",
   "required": [
    "before",
    "after"
   ],
   "properties": {
    "after": {
     "type": "object",
     "required": [
      "states",
      "initial",
      "finals",
      "transitions"
     ],
     "properties": {
      "finals": {
       "type": "array",
       "items": {
        "type": "integer",
        "maximum": 127,
        "minimum": 0
       },
       "maxItems": 8,
       "minItems": 0
      },
      "states": {
       "type": "integer",
       "maximum": 8,
       "minimum": 1
      },
      "initial": {
       "type": "integer",
       "maximum": 127,
       "minimum": 0
      },
      "transitions": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "from",
         "to",
         "label"
        ],
        "properties": {
         "to": {
          "type": "integer",
          "maximum": 127,
          "minimum": 0
         },
         "from": {
          "type": "integer",
          "maximum": 127,
          "minimum": 0
         },
         "label": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1
         }
        },
        "additionalProperties": false
       },
       "maxItems": 32,
       "minItems": 0
      }
     },
     "additionalProperties": false
    },
    "before": {
     "type": "object",
     "required": [
      "states",
      "initial",
      "finals",
      "transitions"
     ],
     "properties": {
      "finals": {
       "type": "array",
       "items": {
        "type": "integer",
        "maximum": 127,
        "minimum": 0
       },
       "maxItems": 8,
       "minItems": 0
      },
      "states": {
       "type": "integer",
       "maximum": 8,
       "minimum": 1
      },
      "initial": {
       "type": "integer",
       "maximum": 127,
       "minimum": 0
      },
      "transitions": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "from",
         "to",
         "label"
        ],
        "properties": {
         "to": {
          "type": "integer",
          "maximum": 127,
          "minimum": 0
         },
         "from": {
          "type": "integer",
          "maximum": 127,
          "minimum": 0
         },
         "label": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1
         }
        },
        "additionalProperties": false
       },
      
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/workflow-language-inclusion-checker-912c3e36/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from detect.halowerk.com](https://www.zero.xyz/host/detect.halowerk.com/llms.txt)
