"""Canonical capability provisioning contract for generated apps.

See project memory ``project_capability_provisioner_architecture`` for the full design.
Generated code should consume platform capabilities (Auth, Forms, Files, Records, ...);
it should not be the source of truth for them. Each capability implements the same
declare -> provision -> link -> project -> reconcile -> expose -> certify lifecycle,
via :class:`CapabilityProvisioner`.

The public contract lives in :mod:`lifecycle`; every registered capability
(``auth``, ``forms``, ``feature_packs``, ``files``, ``records``,
``notifications``, ``webhooks``, ``secrets``) implements it directly. An
earlier, simpler ``base.py``/``auth_provisioner.py`` lifecycle existed
alongside this one for a while (see docs/CAPABILITY_RUNTIME_PROJECTION.md's
former "Deferred" note); it had no remaining callers once the workspace
hydrate's "auth" entry was switched onto ``AuthV2Provisioner`` and was
removed rather than kept as a second, unused lifecycle surface.
"""
from __future__ import annotations

from src.domain.capabilities.lifecycle import (
    CapabilityProvisioner,
    CapabilityIssue,
    CapabilityState,
    PlanAction,
    ProvisionPlan,
    ProvisionResult,
)

__all__ = [
    "CapabilityProvisioner",
    "CapabilityState",
    "CapabilityIssue",
    "PlanAction",
    "ProvisionPlan",
    "ProvisionResult",
]
