Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions scripts/verify-rcb-export.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ $temporaryWorkflows = @(
".github/workflows/full-source-snapshot-temp.yml",
".github/workflows/rcb-integration-diagnostic-temp.yml",
".github/workflows/apply-rcb-card-patch-temp.yml",
".github/workflows/apply-ied-card-two-row-fix-temp.yml"
".github/workflows/apply-ied-card-two-row-fix-temp.yml",
".github/workflows/apply-live-rcb-name-standard-fix-temp.yml"
)
foreach ($temporary in $temporaryWorkflows) {
if (Test-Path (Join-Path $root $temporary)) {
Expand All @@ -112,25 +113,33 @@ if (![string]::IsNullOrWhiteSpace($EngineRoot)) {
$filterPath = Join-Path $engine "src/AR.Iec61850/Scl/Export/SclReportControlFilter.cs"
$exportPath = Join-Path $engine "src/AR.Iec61850/Scl/Export/LegacySasSclExporter.cs"
$identityPath = Join-Path $engine "src/AR.Iec61850/Scl/Export/AuthoritativeLiveIedSclExporter.cs"
foreach ($path in @($availabilityPath, $filterPath, $exportPath, $identityPath)) {
$liveNamePath = Join-Path $engine "src/AR.Iec61850/Scl/Export/LiveRcbSclInstanceNormalizer.cs"
foreach ($path in @($availabilityPath, $filterPath, $exportPath, $identityPath, $liveNamePath)) {
if (!(Test-Path $path)) { throw "Required ARIEC61850 RCB API is missing: $path" }
}

$availability = Get-Content $availabilityPath -Raw
$filter = Get-Content $filterPath -Raw
$export = Get-Content $exportPath -Raw
$identity = Get-Content $identityPath -Raw
$liveName = Get-Content $liveNamePath -Raw
Require-Text $availability 'does not expose enough reservation evidence to prove availability' "Edition 1 BRCB uncertainty guard is missing."
Require-Text $filter 'var document = new XDocument(source);' "SCL filter must clone rather than mutate the source document."
Require-Text $filter 'Legacy SAS export requires exactly one selected ReportControl.' "Exactly-one-RCB guard is missing."
Require-Text $export 'Filtered SCL validation expected one ReportControl' "Post-export single-RCB validation is missing."
Require-Text $export 'The original source file was not modified.' "Engine evidence no longer states source immutability."
Require-Text $export 'ApplyExactRuntimeReportControlIdentity' "Exact runtime RCB normalization is missing."
Require-Text $export 'A_BRCB_120101' "The exact-name double-index regression evidence is missing."
Require-Text $export 'must not contain RptEnabled because that can append a second instance suffix' "Exact runtime RCB export no longer rejects duplicate instance indexing."
Require-Text $export 'A_BRCB_120101' "The source-backed exact-name double-index regression evidence is missing."
Require-Text $export 'must not contain RptEnabled because that can append a second instance suffix' "Source-backed exact runtime RCB export no longer rejects duplicate instance indexing."
Require-Text $identity 'element.SetAttributeValue("indexed", "false")' "Live MMS RCBs must be exported explicitly as non-indexed concrete instances."
Require-Text $identity 'rptEnabled.SetAttributeValue("max", "1")' "Live MMS RCB export must retain exactly one concrete instance."
Require-Text $identity 'A_BRCB_120101' "The live-model duplicate-index field case is no longer documented in the authoritative export boundary."
Require-Text $identity 'ValidateReportControlIdentity' "Live RCB identity validation is missing."
Require-Text $liveName 'A_BRCB_120101' "The standalone live RCB exact-name regression boundary is missing."
Require-Text $liveName 'indexed=false' "The standalone live RCB normalizer no longer preserves concrete MMS names."
Require-Text $identity '"ldName",' "Engine identity boundary must write explicit MMS Logical Device names through LDevice.ldName."
Require-Text $identity 'ValidateIdentity' "Engine must validate the normalized IED and MMS-domain identity mapping."
Require-Text $identity 'missingDomains' "Engine must reject loss of discovered MMS Logical Device domains."
}

Write-Host "Legacy SAS RCB export, exact runtime RCB naming, authoritative IED identity, automatic read-only availability, transient success overlay, stable IED card layout, Edition 1 CID default, and engine boundaries passed."
Write-Host "Legacy SAS RCB export, exact live MMS RCB naming, authoritative IED identity, automatic read-only availability, transient success overlay, stable IED card layout, Edition 1 CID default, and engine boundaries passed."
Loading