"""Closed-lane freeze. Visualization + Calculation frozen; next family selected."""

from pathlib import Path

import yaml

ROOT = Path(__file__).resolve().parents[1]
REGISTRY = ROOT / "src/domain/app_blocks/platform_coverage_registry.v1.yaml"
SELECTION = ROOT / "docs/audits/ARCHITECTURE_LANE_NEXT_FAMILY_SELECTION.md"


def test_program_freeze_does_not_reorder_architecture_queue():
    registry = yaml.safe_load(REGISTRY.read_text(encoding="utf-8"))
    freeze = registry["program_freeze"]
    assert freeze["lane_c"] == "closed"
    assert freeze["deployment_plane_repo_isolation"] == "closed"
    assert freeze["project_bootstrap"] == "starter_assembly"
    assert freeze["connected_repo"] == "adopt_and_patch"
    assert freeze["framework_substrate_is_product_boilerplate"] == "no"
    assert freeze["frontend_bff"] == "/api"
    assert freeze["physical_cloud_origin"] == "deployment_plane_only"
    assert freeze["repo_publish_policy"] == "allowlist_then_sanitize"
    assert freeze["client_bundle_cloud_leak_scan"] == "required"
    assert freeze["open_p0"] == "see_ledger"
    assert freeze["open_p1"] == "see_ledger"
    assert freeze["architecture_lane_started"] is True
    assert freeze["fast_lane_application_coverage"] == "fl_d5"
    assert freeze["fast_lane_application_coverage_status"] == "composition_proven_runtime_proven_25"
    assert registry["fast_lane_batch_11_started"] is False
    assert registry["c4_c5_harvest_ranking"] == "evidence_only"
    assert registry["membership_family_frozen"] is True
    assert registry["family_just_frozen"] == "visualization_calculation"
    assert registry["next_architecture_family"] == "not_yet_selected"
    assert registry["architecture_lane_status"] == "ready_to_resume"
    assert registry["next_architecture_action"] == "selection_closed"
    assert registry["selection_action"] == "content_collection_closed"
    assert registry["fast_lane_status"] == "parallel_composition_allowed"
    assert registry["platform_coherent_promoted_by_architecture"] is False
    assert SELECTION.is_file()
    selection = SELECTION.read_text(encoding="utf-8")
    assert "selection_closed: yes" in selection
    assert "implementation_authorized: already_present_bounded_contract" in selection
    assert "extend_frozen_family" in selection
    assert "next_architecture_family = not_yet_selected" in selection
    by_id = {row["id"]: row for row in registry["capabilities"]}
    assert by_id["calculation.evaluate"]["architecture_action_class"] == "extend_frozen_family"
    assert by_id["calculation.evaluate"]["extends_family"] == "visualization_calculation"
    assert by_id["search"]["architecture_action_class"] == "admit_next_family"
    assert by_id["organizations"]["architecture_action_class"] == "admit_next_family"
    google_calendar = next(
        item for item in registry["capabilities"] if item["id"] == "google_calendar"
    )
    assert google_calendar["status"] == "provider_specific"
    assert google_calendar["architecture_lane_required"] is False
    catalog = "src/domain/connectors/catalog/google_calendar.py"
    assert google_calendar["canonical_authority"] == catalog
    assert google_calendar["canonical_authority"] != "not_admitted"
    # contract and workforce freezes were explicitly lifted by the user
    # (see docs/audits/ARCHITECTURE_LANE_CONTRACT.md); property/lab/membership
    # remain guarded.
    assert registry["next_architecture_family"] not in {
        "property",
        "lab",
        "laboratory",
        "membership",
    }
