"""Cross-adapter conformance suite (``contracts.md`` §10).

Every adapter authors import the suite and run it against their
real engine in their own integration tests::

    from mgf.vm.core.conformance import hypervisor_conformance_suite

    def test_libvirt_conformance(libvirtd_container) -> None:
        adapter = LibvirtAdapter(libvirtd_container.uri)
        hypervisor_conformance_suite(adapter).run_all()

The suite is **capability-gated**: each scenario queries
``adapter.capabilities()`` and skips itself if the engine doesn't
support the feature. That's the mechanism by which "wrap, don't
marry" stays true — adapters differ; the contract doesn't.

This module is scaffolding + a starter set of scenarios. The full
catalog of 26 CONF-* scenarios from ``contracts.md`` §10 fills in
incrementally as the adapter implementations land.

Scaffolded scenarios:
  * CONF-H-01 — define → start → stop → undefine round-trip
  * CONF-H-02 — define idempotency (same spec → same DomainId)
  * CONF-H-03 — start idempotency (already-running is success)
  * CONF-H-11 — host-network observation on HypervisorBackend (D-G14)
  * CONF-M-01 — sample_metrics observation on MetricsBackend (D-G13)
  * CONF-O-01 — copy / overlay / archive→extract round-trip on
    HostDiskBackend (D-G18)
  * CONF-N-01 — define / start / stop / delete round-trip on
    NetworkBackend (D-G15)
  * CONF-S-01 — create-list-delete volume round-trip
  * CONF-D-01 — claim → assignment_for → release round-trip
  * CONF-X-03 — LifecycleObserver fires on every legal transition

Adapter authors call ``run_all()`` to execute the full catalog;
individual scenarios are also callable for debugging
(``suite.run_one("CONF-H-01")``).
"""

from __future__ import annotations

from mgf.vm.core.conformance.runner import (
    ConformanceResult,
    ConformanceSuite,
    DeviceConformanceSuite,
    GuestAgentConformanceSuite,
    HostDiskConformanceSuite,
    HypervisorConformanceSuite,
    MetricsConformanceSuite,
    NetworkConformanceSuite,
    StorageConformanceSuite,
    device_conformance_suite,
    guest_agent_conformance_suite,
    host_disk_conformance_suite,
    hypervisor_conformance_suite,
    metrics_conformance_suite,
    network_conformance_suite,
    storage_conformance_suite,
)

__all__ = [
    "ConformanceResult",
    "ConformanceSuite",
    "DeviceConformanceSuite",
    "GuestAgentConformanceSuite",
    "HostDiskConformanceSuite",
    "HypervisorConformanceSuite",
    "MetricsConformanceSuite",
    "NetworkConformanceSuite",
    "StorageConformanceSuite",
    "device_conformance_suite",
    "guest_agent_conformance_suite",
    "host_disk_conformance_suite",
    "hypervisor_conformance_suite",
    "metrics_conformance_suite",
    "network_conformance_suite",
    "storage_conformance_suite",
]
