**Language / Язык:** [English](compatibility.md) | [Русский](ru/compatibility.md)

# Compatibility

This document explains how the simulator claims compatibility with the
vSphere Automation API across catalog majors **6–9**. Prefer live reports
when the process is running.

## Live reports

| URL | Format |
|---|---|
| `/ui/api/compatibility?major=N` | JSON |

The Web UI also exposes a compatibility panel driven by this endpoint.

## Registry vs verified surface coverage

| Major | vSphere label | Implemented / universe | Coverage |
|---|---|---:|---:|
| 6 | 7.0 | 31 / 1077 | 2.9% |
| 7 | 7.0 U3 | 77 / 1077 | 7.2% |
| 8 | 8.0 | 103 / 1077 | 9.6% |
| 9 | 8.0 U2 (Automation 9.1 surface) | **1077 / 1077** | **100%** |

- **Universe** — unique verb+path routes derived from the public
  [vSphere Automation API operations index](https://developer.broadcom.com/xapis/vsphere-automation-api/latest/operation-index/)
  (1348 documented operations → ~1037 unique routes → 1077 registered in this
  simulator's route table, since some paths back multiple named operations).
- **Implemented (per major)** — routes whose catalog floor
  (`app/vsphere/contracts/matrix.py`) is at or below that major. This is a
  **catalog/documentation** score, not a live-traffic gate.
- **Runtime** — regardless of the applied catalog major, every registered
  route is always served by its real handler (104 deep handlers) or the
  DB-backed stub surface. See [API surface](api-surface.md).

After **Apply as runtime** (`POST /ui/api/contract/apply?major=N`), the live
report loads that major's ledger (`evidence/vsphere-{version}.json`) so the
Web UI compatibility panel reflects the selected major.

## Evidence dimensions

Per-major ledgers in `evidence/vsphere-{version}.json` record `declared`,
`implemented`, `observed`, and `verified` counts plus per-HTTP-verb and
per-domain (`auth_session`, `inventory`, …) breakdowns. Regenerate with:

```bash
make evidence          # app/evidence_gen.py
make vsphere-bundles   # stub OpenAPI matrices + evidence ledgers together
```

Executable backing for those claims:

| Suite | Role |
|---|---|
| `tests/compatibility/test_verified_surface.py` | hot-swap + ledger drift + score gates |
| `tests/compatibility/test_group_smoke.py` | representative REST group mutations with PostgreSQL |
| `tests/compatibility/test_vsphere_pyvmomi.py` | external pyvmomi SOAP smoke |
| `tests/integration/test_vsphere_full_api.py` | broad REST/SOAP integration coverage |

Additional cookbooks under [`examples/`](../examples/README.md) and the
`pulumi-vsphere` lab suite under [`pulumi-tests/`](../pulumi-tests/README.md)
(`make pulumi-tests`) are manual or CI-optional depending on the stack.

## Known behavioural limits

| Area | Behaviour |
|---|---|
| External systems | NSX Manager, live LDAP/SAML/OIDC IdPs, and ACME directories do not contact real remotes; seeded/local state only |
| TLS | Local self-signed development gateway only (Compose); use your own certs / cert-manager for real deployments |
| Hypervisor | No real ESXi/KVM execution; no binary NFC uploads |
| Observation corpus | Sanitized real-vCenter observation data remains limited; deep semantic parity is verified path-by-path via the suites above, not by exhaustive production diffing |

Historical release notes: [compatibility-0.1.0.md](compatibility-0.1.0.md).
