Option Strict On
Option Explicit On

Imports System

Namespace Nexamas.UI.Quality

    ''' <summary>
    ''' Final commercial-readiness closure gate for the product-controls hardening plan.
    ''' This gate is promotion-aware: preview controls must keep blockers, while
    ''' ProductionReady controls must pass the declared promotion gates.
    ''' </summary>
    Friend NotInheritable Class MASFinalCommercialReadinessClosureGate
        Private Const ExpectedProductControlCount As Integer = 8

        Private Sub New()
        End Sub

        Friend Shared Function Passes() As Boolean
            Dim snapshot As MASFinalCommercialReadinessClosureSnapshot = BuildSnapshot()
            Return snapshot IsNot Nothing AndAlso snapshot.ReadyForFinalCommercialReadinessClosure
        End Function

        Friend Shared Function BuildSnapshot() As MASFinalCommercialReadinessClosureSnapshot
            Try
                Dim matrix As MASCommercialReadinessMatrix = MASCommercialReadinessMatrixBuilder.BuildProductControlsMatrix()
                Dim hasExpectedCoverage As Boolean = matrix IsNot Nothing AndAlso matrix.Count = ExpectedProductControlCount
                Dim allControlsHaveValidStageBoundary As Boolean = True
                Dim allPreviewControlsHaveBlockers As Boolean = True

                If matrix Is Nothing OrElse matrix.Count = 0 Then
                    allControlsHaveValidStageBoundary = False
                    allPreviewControlsHaveBlockers = False
                Else
                    For Each record As MASCommercialReadinessRecord In matrix.Records
                        If record Is Nothing Then
                            allControlsHaveValidStageBoundary = False
                            allPreviewControlsHaveBlockers = False
                            Continue For
                        End If

                        If record.Stage <> MASCommercialReadinessStage.CompactPreview AndAlso
                           record.Stage <> MASCommercialReadinessStage.ProductionReady Then
                            allControlsHaveValidStageBoundary = False
                        End If

                        If record.Stage = MASCommercialReadinessStage.CompactPreview AndAlso
                           String.IsNullOrWhiteSpace(record.BlockerSummary) Then
                            allPreviewControlsHaveBlockers = False
                        End If
                    Next
                End If

                Return New MASFinalCommercialReadinessClosureSnapshot(
                    hasExpectedCoverage,
                    allControlsHaveValidStageBoundary,
                    allPreviewControlsHaveBlockers,
                    MASPublicAdapterPolicyGate.Passes(),
                    MASProductionPromotionRuleGate.Passes(),
                    MASControlSpecificProductionGapGate.Passes(),
                    MASDocumentationSampleEvidenceGate.Passes(),
                    MASMeasuredRuntimeBenchmarkGate.Passes(),
                    MASBenchmarkBaselineThresholdPolicyGate.Passes(),
                    MASKeyboardAccessibilityStressGate.Passes(),
                    MASInputFocusRuntimeHardeningGate.Passes(),
                    MASMultiWindowMotionIsolationGate.Passes(),
                    MASFrameSchedulerDispatcherBoundaryGate.Passes(),
                    MASFloatTransitionDisposeGate.Passes(),
                    MASMotionConsumerPressureGate.Passes(),
                    MASReducedMotionMutationDuringAnimationGate.Passes(),
                    MASThemeDpiRtlMutationDuringMotionGate.Passes(),
                    MASRenderCanvasStateIsolationGate.Passes(),
                    MASControlsSubtreeClipContractGate.Passes(),
                    MASRuntimeEnvironmentMutationCoordinatorGate.Passes(),
                    MASHostSurfaceThemeAwareClearGate.Passes(),
                    MASRepeatedRenderFaultDiagnosticsGate.Passes(),
                    MASOfficialDispatcherAsyncCompletionGate.Passes(),
                    MASDataGridLargeDataSummaryPolicyGate.Passes(),
                    MASDataGridAddRowMisuseDiagnosticsGate.Passes(),
                    MASDataGridRuntimeCultureIntegrationGate.Passes(),
                    MASDataGridCultureInvalidationRegressionGate.Passes(),
                    MASDataGridMalformedValueDiagnosticsGate.Passes(),
                    MASDataGridAccessibilitySemanticsGate.Passes(),
                    MASDataGridDataViewResidualReviewGate.Passes(),
                    MASDiagnosticsQualityResidualReviewGate.Passes(),
                    MASLocalizationRtlResidualReviewGate.Passes(),
                    MASVirtualizationResidualReviewGate.Passes(),
                    MASPublicSurfaceMaterialGatewayManifestGate.Passes(),
                    MASRuntimeFaultStrictModeGate.Passes(),
                    MASTimeMotionOwnershipGate.Passes(),
                    MASHostingContractClosureGate.Passes(),
                    MASDashboardProviderMasterDetailStateClosureGate.Passes(),
                    MASMasterDetailSplitViewClosureGate.Passes(),
                    MASRoutingShellBoundaryClosureGate.Passes(),
                    MASDashboardProviderHostAdoptionClosureGate.Passes(),
                    MASDashboardResizeHostSampleClosureGate.Passes(),
                    MASReleaseFreezeEvidenceLockdownGate.Passes())
            Catch ex As Exception
                Nexamas.UI.Diagnostics.MASExceptionSilencer.SwallowDiagnosticOnly(ex, "MASFinalCommercialReadinessClosureGate.BuildSnapshot")
                Return Nothing
            End Try
        End Function

    End Class

End Namespace
