Cai
2026-08-09 9d2e633b4345c7e2e4764fb3d7a88e5277e64943
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
 
function Invoke-AnaSemiRepair3StaticChecks {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][string]$ModulePath,
        [Parameter(Mandatory)][string]$ValidationPath
    )
    $moduleText = [IO.File]::ReadAllText($ModulePath, [Text.UTF8Encoding]::new($false, $true))
    $validationText = [IO.File]::ReadAllText($ValidationPath, [Text.UTF8Encoding]::new($false, $true))
    $checks = @(
        [ordered]@{ id='S01-STRICTMODE'; expected='present'; actual=$(if($moduleText.Contains('Set-StrictMode -Version Latest')){'present'}else{'absent'}) },
        [ordered]@{ id='S02-EXPORT-CONVERT'; expected='present'; actual=$(if($moduleText.Contains('ConvertTo-AnaSemiAuthorizationWindow')){'present'}else{'absent'}) },
        [ordered]@{ id='S03-EXPORT-TEST'; expected='present'; actual=$(if($moduleText.Contains('Test-AnaSemiAuthorizationWindow')){'present'}else{'absent'}) },
        [ordered]@{ id='S04-EXPORT-SELECTOR'; expected='present'; actual=$(if($moduleText.Contains('Select-AnaSemiExactRelatedProcess')){'present'}else{'absent'}) },
        [ordered]@{ id='S05-EXPORT-INVOKE'; expected='present'; actual=$(if($moduleText.Contains('Invoke-AnaSemiPreconsumptionPreflight')){'present'}else{'absent'}) },
        [ordered]@{ id='S06-GATE-WAIT0'; expected='present'; actual=$(if($moduleText.Contains('$InvocationGate.Wait(0)')){'present'}else{'absent'}) },
        [ordered]@{ id='S07-NO-GATE-RELEASE'; expected='absent'; actual=$(if($moduleText.Contains('.Release(')){'present'}else{'absent'}) },
        [ordered]@{ id='S08-DATETIMEOFFSET'; expected='present'; actual=$(if($moduleText.Contains('[DateTimeOffset]::ParseExact')){'present'}else{'absent'}) },
        [ordered]@{ id='S09-CREATENEW'; expected='present'; actual=$(if($validationText.Contains('[IO.FileMode]::CreateNew')){'present'}else{'absent'}) },
        [ordered]@{ id='S10-NO-MYSQL'; expected='absent'; actual=$(if(($moduleText+$validationText) -match '(?i)mysql|config_editor|SHOW GRANTS|CURRENT_USER'){'present'}else{'absent'}) },
        [ordered]@{ id='S11-NO-LEGACY-ROUTE'; expected='absent'; actual=$(if(($moduleText+$validationText) -match '(?i)mbx send|project inbox|session bridge|history fallback'){'present'}else{'absent'}) },
        [ordered]@{ id='S12-NO-NETWORK'; expected='absent'; actual=$(if(($moduleText+$validationText) -match '(?i)Invoke-WebRequest|Invoke-RestMethod|HttpClient|WebClient'){'present'}else{'absent'}) }
    )
    $rows = foreach($c in $checks) {
        $match = [string]$c.actual -ceq [string]$c.expected
        [ordered]@{actual=[string]$c.actual;check_id=[string]$c.id;expected=[string]$c.expected;status=$(if($match){'MATCH'}else{'MISMATCH'});stop_code=$(if($match){$null}else{'STATIC_CHECK_MISMATCH'})}
    }
    return ,@($rows)
}