# C++ Exception Unwind Handler Selection Validator

> C++ Exception Unwind Handler Selection Validator is a paid API for AI agents from detect.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-11-05).

Validates claimed C++ exception unwind catch-frame selection and destructor ordering for a given unwind scenario

## Facts

- Endpoint: POST https://detect.halowerk.com/v1/F-A-NEXT-CPP_UNWIND/cpp-exception-unwind-handler-selection?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-05
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/c-exception-unwind-handler-selection-validator-3a1371b9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_3g9qKgfx7Oke2uzFodigD

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 c-exception-unwind-handler-selection-validator-3a1371b9 -d '<json body>'
```

Example prompt: Check whether claim index 3 is the correct catch frame for a thrown type 2 with this type hierarchy and stack frames — the frames have handlers [1,3] and [2], with objects that have escaping destructor throws flagged, and the types include a public base from parent 0.

## When to prefer this

Use this endpoint when you need to programmatically verify C++ exception unwind handler selection logic — particularly when testing compiler behavior, validating runtime type information hierarchies, or checking determinate destructor ordering in complex stack unwind scenarios involving multiple frames and type inheritance.

## Known failure modes

- Invalid claim value outside allowed numeric range
- Type array or frame array exceeding 512 items
- Malformed type hierarchy with missing required fields
- Circular or inconsistent parent references in type list
- Missing required cpp_unwind fields returning 400 error
- Ambiguous or indeterminate destructor order detected

## How this service works

Prüft den behaupteten erreichten C++-Catch-Frame und die determinate Destruktorreihenfolge einer anonymen Unwind-Sicht.

## Output

A validation result indicating whether the claimed catch frame index is correct for the given C++ exception unwind scenario, along with determinate destructor ordering correctness for the anonymous unwind view.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "artifact": {
   "type": "object",
   "required": [
    "cpp_unwind"
   ],
   "properties": {
    "cpp_unwind": {
     "type": "object",
     "required": [
      "claim",
      "frames",
      "thrown_type",
      "types"
     ],
     "properties": {
      "claim": {
       "type": "number",
       "maximum": 1000000000000,
       "minimum": -1000000000000
      },
      "types": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "parent",
         "public_base"
        ],
        "properties": {
         "parent": {
          "anyOf": [
           {
            "type": "null"
           },
           {
            "type": "number",
            "maximum": 1000000000000,
            "minimum": -1000000000000
           }
          ]
         },
         "public_base": {
          "type": "boolean"
         }
        },
        "additionalProperties": false
       },
       "maxItems": 512
      },
      "frames": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "handlers",
         "objects"
        ],
        "properties": {
         "objects": {
          "type": "array",
          "items": {
           "type": "object",
           "required": [
            "escaping_destructor_throw",
            "id"
           ],
           "properties": {
            "id": {
             "type": "number",
             "maximum": 1000000000000,
             "minimum": -1000000000000
            },
            "escaping_destructor_throw": {
             "type": "boolean"
            }
           },
           "additionalProperties": false
          },
          "maxItems": 512
         },
         "handlers": {
          "type": "array",
          "items": {
           "type": "number",
           "maximum": 1000000000000,
           "minimum": -1000000000000
          },
          "maxItems": 512
         }
        },
        "additionalProperties": false
       },
       "maxItems": 512
      },
      "thrown_type": {
       "type": "number",
       "maximum": 1000000000000,
       "minimum": -1000000000000
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/c-exception-unwind-handler-selection-validator-3a1371b9/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)
