# Migration to Governed SDK 0.4.2

URL: https://docs.nexart.io/docs/governed-execution/migration-0-4-2

Why Governed Execution SDK 0.4.0 rejected valid HITL bundles, what 0.4.1 and 0.4.2 corrected, and the regression cases to run before upgrading production.

## 0.4.0 issue

Native validation required concrete parents to equal all possible contracted topology parents. Valid bundles, such as HITL routes, failed with `MISSING_CONTRACTED_PARENT`.

## 0.4.1

- Concrete parents may be a subset of legal topology candidates.
- Illegal selected edges remain invalid.
- Causal checks remain enforced.

## 0.4.2

- Permits cycles and self-edges in static topology.
- Preserves acyclic concrete execution.
- Enforces concrete-edge legality against supplied topology in the generic profile.
- Uses the shared contracted-edge resolver for generic and native paths.
- Does not change certificate identity, canonicalisation, schemas or the public API.

## Install

```
npm install --save-exact @nexart/governed-execution@0.4.2
```

Pin the exact version so every verifier evaluates the same rules.

## Regression checklist

| Case | Expect |
| --- | --- |
| Cyclic static topology, acyclic execution | OK |
| Static self-edge, repeated node | OK |
| HITL legal parent subset | OK |
| Omitted-node contraction | OK |
| No topology supplied | OK, not-supplied |
| Edge outside legal candidates | ILLEGAL_EXECUTED_EDGE |
| Unrecorded-only cycle | UNRESOLVABLE_CONTRACTION_CYCLE |
| Self, forward or dangling parent | CAUSAL_ERROR |
| Malformed stateHash | SCHEMA_ERROR |
| Previously sealed CERs | Same certificateHash as before upgrade |
