"""Capability modernization program — 3A audited; Sheets foundation required next."""
from src.domain.connectors.invoke_capabilities import CAPABILITY_CONVERSION_PATTERN
from src.domain.connectors.public_gateway import PHASE_0_INVARIANTS, PHASE_0_STATUS, PHASE_0A_STATUS


def test_program_is_phase_0_not_a_new_family() -> None:
    pattern = CAPABILITY_CONVERSION_PATTERN
    assert PHASE_0_STATUS == "complete"
    assert PHASE_0A_STATUS == "complete"
    assert PHASE_0_INVARIANTS["integrations_layer"] == "lifecycle_not_runtime"
    assert PHASE_0_INVARIANTS["public_response_owner"] == "core"
    assert PHASE_0_INVARIANTS["bff_strip"] == "defense_in_depth"
    assert PHASE_0_INVARIANTS["email_send_dual_path"] == (
        "dashboard_capability_and_generated_app_jobs"
    )
    assert PHASE_0_INVARIANTS["email_send_jobs_is_not_core_url"] == "true"
    assert pattern["current_program_phase"] == 8
    assert pattern["phase_1_status"] == "1c_complete_1d_zapier_blocked"
    assert pattern["phase_1d_status"] == "blocked_until_catalog_and_cloud_path"
    assert pattern["phase_2_status"] == "2g_codegen_defaults_complete"
    assert pattern["phase_2a_status"] == "frozen"
    assert pattern["phase_2p_status"] == "complete"
    assert pattern["phase_2b_status"] == "frozen"
    assert pattern["phase_2c_status"] == "complete"
    assert pattern["phase_2d_status"] == "complete"
    assert pattern["phase_2e_status"] == "complete"
    assert pattern["phase_2f_status"] == "complete"
    assert pattern["phase_2g_status"] == "complete"
    assert pattern["phase_3_status"] == "complete"
    assert pattern["phase_4_status"] == "complete"
    assert pattern["phase_5_status"] == "complete"
    assert pattern["phase_6_status"] == "6p_complete"
    assert pattern["phase_7_status"] == "complete"
    assert pattern["next_program_slice"] == "9_app_block_modernization"
    assert pattern["opened_families"]["forms.*"] == "composition_integration"
    assert "zapier.automation" not in pattern["parked_families"]
    assert pattern["opened_families"]["automation.workflow.trigger"] == "A"
    assert pattern["public_api_boundary"] == "dashboard_bff"
    assert pattern["public_response_owner"] == "core"
    assert pattern["bff_strip_role"] == "defense_in_depth"
    assert pattern["topology"][1] == "dashboard_bff_public"
    assert pattern["topology"][2] == "core_private"
    assert pattern["five_surfaces"] == (
        "catalog",
        "core",
        "cloud",
        "dashboard_bff",
        "codegen",
    )
    assert pattern["public_route_kinds"]["capabilities"] == "stable_product_runtime"
    assert pattern["public_route_kinds"]["connectors"] == "provider_admin_advanced"
    assert pattern["public_route_kinds"]["connector_catalog"] == "provider_admin_advanced"
    assert pattern["public_route_kinds"]["workspace_connector_defaults"] == "provider_admin_advanced"
    assert pattern["public_route_kinds"]["integrations"] == "provider_admin_advanced"
    assert "automation.workflow.trigger" in pattern["opened_families"]
    assert pattern["opened_families"]["messaging.sms.send"] == "A"
    assert pattern["parked_families"] == {}
    assert pattern["opened_families"]["crm.*"] == "canonical_model"
    assert pattern["opened_families"]["crm.contact.*"] == "A"
    assert pattern["opened_families"]["crm.company.*"] == "A"
    assert "crm.contact.upsert" not in pattern["deferred"]
    assert "payments.checkout" not in pattern["deferred"]
    assert pattern["no_capability_state_until_family_opened"] is True
    assert pattern["opened_families"]["document.*"] == "A"
    assert pattern["opened_families"]["spreadsheet.*"] == "A"
    assert "spreadsheet.*" not in pattern["closed_families"]
    assert pattern["opened_families"]["storage.file.*"] == "split"
    assert pattern["managed_vs_customer_invariant"].startswith("Internal use of provider X")
    assert pattern["parallel_execution_domain_invariant"].startswith("P2HS-owned execution")
    assert pattern["execution_domains_are_not_fallbacks"] is True
    assert pattern["no_parallel_execution_domain_registry"] is True
