Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
c1972be
fix: select only RCB-backed static DataSets
masarray Sep 5, 2026
cc60008
fix: resolve indexed static RCB instances safely
masarray Sep 5, 2026
20e30e7
fix: preserve SCL RCB authority and resolve indexed live instances
masarray Sep 5, 2026
2830f3a
test: guard RCB-backed static selection and indexed instances
masarray Sep 5, 2026
02c51cb
fix: union SCL and live static membership authority
masarray Sep 5, 2026
f9633fb
fix: make static authority projection compile explicitly
masarray Sep 5, 2026
3e1141e
fix: keep opened SCL DataSet inventory authoritative across reconnect
masarray Sep 5, 2026
944e0e4
test: preserve SCL DataSet authority across fast reconnect
masarray Sep 5, 2026
7e1faac
test: update deterministic static RCB authority guards
masarray Sep 5, 2026
29fee6f
fix(static-dataset): pin receiver-first ARIEC report activation
masarray Sep 5, 2026
689925b
test(static-dataset): guard receiver-first engine pin
masarray Sep 5, 2026
8e620be
fix(static-dataset): choose non-occupied indexed RCB instance
masarray Sep 5, 2026
163ae04
fix(static): make SCL report controls authoritative
masarray Sep 5, 2026
2831ddb
test(static-dataset): guard non-occupied indexed RCB selection
masarray Sep 5, 2026
42477c0
chore(static-dataset): keep physical candidate on proven PR111 engine
masarray Sep 5, 2026
68cfc8d
test(static-dataset): keep engine lineage guard on PR111 candidate
masarray Sep 5, 2026
5bfddf9
fix(static): keep SCL RCB authority across all candidates
masarray Sep 5, 2026
e0a2edf
test(static): guard SCL authority and candidate evaluation
masarray Sep 5, 2026
1cfaa05
test(static): enforce design-first RCB authority
masarray Sep 5, 2026
c955d00
fix(static): include owner evidence in RCB selection
masarray Sep 5, 2026
9fd5d84
test(static): cover owner-aware RCB occupancy
masarray Sep 5, 2026
3ce8b3a
Fix static planner regression guard false positive
masarray Sep 5, 2026
64587c3
Tighten static planner no-first-RCB regression guard
masarray Sep 5, 2026
00a5dc8
Fix P0 regression guard comment
masarray Sep 5, 2026
be61b06
Pin ARSAS to PR111 semantic projection hardening
masarray Sep 5, 2026
aee3c34
Align TotPF regression with PR111 P1 engine pin
masarray Sep 5, 2026
27c5007
Use client-compatible BRCB activation for static reports
masarray Sep 5, 2026
1abdafb
Pin ARIEC client-compatible BRCB activation
masarray Sep 5, 2026
13ef03f
Test: sync ARIEC client-compatible activation pin
masarray Sep 5, 2026
2544fee
Bench: add progressive static RCB plus MX fallback patch
masarray Sep 5, 2026
cd94a3c
CI: build Progressive Static IED bench executable
masarray Sep 5, 2026
b754c98
Fix dual-role static Pos status projection
masarray Sep 5, 2026
3fc52a8
Register dual-role static control status rows
masarray Sep 5, 2026
6085e8d
Keep exact static Pos control companions selected
masarray Sep 5, 2026
943333a
Add Q0 Pos dual-role static regression guards
masarray Sep 5, 2026
10f38c7
Sync static RCB regression wording
masarray Sep 5, 2026
b20c12a
Generalize static DataSet control companion projection by CDC
masarray Sep 5, 2026
af34703
Retain exact static controls independently of feedback rows
masarray Sep 5, 2026
d2c2615
Report generalized static control projection evidence
masarray Sep 5, 2026
4ef6f4d
Guard generalized static DataSet control retention
masarray Sep 5, 2026
6482886
Add shared Engineering/FAT command bridge
masarray Sep 5, 2026
2dadaab
Add command panel to FAT workspace
masarray Sep 5, 2026
09e9194
Guard shared FAT command panel contract
masarray Sep 5, 2026
a82b0d2
Fix FAT command panel lifecycle hook
masarray Sep 5, 2026
4691e3b
Harden FAT command feedback and Stop UX
masarray Sep 5, 2026
712e2c5
Guard FAT field UX defaults and failure feedback
masarray Sep 5, 2026
9f5a15e
P0 preserve shared Static DataSet selection authority
masarray Sep 5, 2026
cde0d95
P0 restore FAT live authority and shared SCL fast-connect
masarray Sep 5, 2026
fe636f7
P0 default Engineering control checks on signal creation
masarray Sep 5, 2026
cc4bb22
P0 keep appended Static DataSet mode authoritative
masarray Sep 5, 2026
3aeec02
Add Build #1888 P0 recovery regression gates
masarray Sep 5, 2026
0c6d548
Fix FAT runtime projection thread affinity and live binding bridge
masarray Sep 6, 2026
583c607
Stabilize FAT value templates and reflow header actions
masarray Sep 6, 2026
37bc974
Bind structured static DataSet members to resolved live leaves
masarray Sep 6, 2026
7676661
Quiesce FAT live projection before close persistence
masarray Sep 6, 2026
557e71b
Cover bench regressions from Build 1912
masarray Sep 6, 2026
04188d0
Keep FAT projection active when close is cancelled
masarray Sep 6, 2026
c5fc74e
Fix FAT close lifecycle compile shadowing
masarray Sep 6, 2026
d3d2749
Keep FAT evidence start and stop off the UI thread
masarray Sep 6, 2026
cd27d62
Restore deterministic Removed Signals entry point
masarray Sep 6, 2026
ed7152f
Guard responsive FAT evidence and reversible remove
masarray Sep 6, 2026
054b62d
Allow FAT start with safe import-ready subset
masarray Sep 6, 2026
2ace97e
Make RCB export selection multi-select
masarray Sep 6, 2026
10dd45c
Pin ARIEC P0 multi-RCB export engine
masarray Sep 6, 2026
6eddeb1
Add P0 multi-RCB legacy SAS export bridge
masarray Sep 6, 2026
d618062
Enable arbitrary multi-RCB selection and export
masarray Sep 6, 2026
3caa50b
Fix P0 RCB multi-select model import
masarray Sep 6, 2026
16dc1e1
Pin corrected P0 multi-RCB engine commit
masarray Sep 6, 2026
dd78e6b
Pin tested P0 multi-RCB engine revision
masarray Sep 6, 2026
9fafddb
Pin exact-runtime P0 multi-RCB engine revision
masarray Sep 6, 2026
5e8d218
Keep multi-RCB export on golden ARIEC engine
masarray Sep 6, 2026
1e6a4eb
Restore exact Build 1888 ARIEC golden pin
masarray Sep 6, 2026
2fe4f86
Keep FAT session transitions on WPF dispatcher
masarray Sep 6, 2026
f42a315
Guard FAT session thread ownership regression
masarray Sep 6, 2026
5b434b2
Add golden-engine multi-RCB regression coverage
masarray Sep 6, 2026
50d7f89
Match multi-RCB regression to WPF checkbox binding order
masarray Sep 6, 2026
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
114 changes: 114 additions & 0 deletions .github/workflows/progressive-static-bench.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Build Progressive Static IED Bench

on:
push:
branches:
- fix/static-dataset-rcb-backed-acquisition
workflow_dispatch:

permissions:
contents: read

jobs:
build-progressive-static:
name: Build Progressive Static portable EXE
runs-on: windows-latest
steps:
- name: Checkout ARSAS branch
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Resolve immutable ARIEC engine pin
shell: powershell
run: |
$lock = Get-Content .\engines\ARIEC61850.lock.json -Raw | ConvertFrom-Json
if ($lock.repository -notmatch '^[^/]+/[^/]+$' -or $lock.commit -notmatch '^[0-9a-f]{40}$') {
throw 'Invalid ARIEC61850 integration lock.'
}
"ARIEC61850_REPOSITORY=$($lock.repository)" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
"ARIEC61850_COMMIT=$($lock.commit)" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append

- name: Checkout exact ARIEC engine revision
shell: powershell
run: |
$engineRoot = Join-Path $env:RUNNER_TEMP 'ARIEC61850'
git clone --quiet --filter=blob:none --no-checkout "https://github.com/$env:ARIEC61850_REPOSITORY.git" $engineRoot
git -C $engineRoot fetch --quiet --depth 1 origin $env:ARIEC61850_COMMIT
git -C $engineRoot checkout --quiet --detach $env:ARIEC61850_COMMIT
$actual = (git -C $engineRoot rev-parse HEAD).Trim()
if ($actual -ne $env:ARIEC61850_COMMIT) {
throw "Engine pin mismatch: expected $env:ARIEC61850_COMMIT, got $actual"
}
$engineProject = Join-Path $engineRoot 'src\AR.Iec61850\AR.Iec61850.csproj'
$npcapProject = Join-Path $engineRoot 'src\AR.Iec61850.Transports.Npcap\AR.Iec61850.Transports.Npcap.csproj'
"ENGINE_PROJECT=$engineProject" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append
"NPCAP_PROJECT=$npcapProject" | Out-File $env:GITHUB_ENV -Encoding utf8 -Append

- name: Apply Progressive Static bench policy
shell: powershell
run: |
.\scripts\apply-progressive-static-bench.ps1 -ProjectRoot $env:GITHUB_WORKSPACE
$runtime = Get-Content .\Services\Iec61850MonitorRuntime.cs -Raw
$selection = Get-Content .\Services\Iec61850StaticDataSetAuthoritySelection.cs -Raw
if ($runtime -notmatch 'Progressive Static acquisition ready' -or
$runtime -notmatch 'Static DataSet: MMS polling fallback' -or
$runtime -notmatch 'uncovered MX measurement' -or
$selection -match 'reportBackedDataSets.Contains') {
throw 'Progressive Static bench source verification failed.'
}

- name: Build patched bench source
shell: powershell
run: |
dotnet restore .\ArIED61850Tester.csproj `
-p:ArIec61850Project="$env:ENGINE_PROJECT" `
-p:ArIec61850NpcapProject="$env:NPCAP_PROJECT"
if ($LASTEXITCODE -ne 0) { throw "restore failed: $LASTEXITCODE" }

dotnet build .\ArIED61850Tester.csproj -c Release --no-restore `
-p:ArIec61850Project="$env:ENGINE_PROJECT" `
-p:ArIec61850NpcapProject="$env:NPCAP_PROJECT"
if ($LASTEXITCODE -ne 0) { throw "build failed: $LASTEXITCODE" }

- name: Publish portable Progressive Static EXE
shell: powershell
run: |
.\scripts\publish-windows-portable.ps1 `
-Version '1.6.33-progressive-static' `
-Runtime 'win-x64' `
-SingleFile $true `
-SelfContained $true `
-EngineProject $env:ENGINE_PROJECT `
-NpcapProject $env:NPCAP_PROJECT

$source = '.\dist\ARSAS-1.6.33-progressive-static-win-x64-portable.exe'
$target = '.\dist\ARSAS-1.6.33-Progressive-Static-IED-Test.exe'
if (!(Test-Path $source -PathType Leaf)) {
throw "Portable EXE was not produced: $source"
}
Move-Item $source $target -Force
$hash = (Get-FileHash $target -Algorithm SHA256).Hash.ToLowerInvariant()
$head = (git rev-parse HEAD).Trim()
@(
"ARSAS head: $head",
"ARIEC engine: $env:ARIEC61850_COMMIT",
'Bench policy: configured RCB first; uncovered MX/measurement -> bounded MMS polling; uncovered discrete -> fail-closed; dynamic DataSet writes -> disabled.',
"SHA256: $hash"
) | Set-Content .\dist\Progressive-Static-build-info.txt -Encoding utf8
Write-Host "SHA256=$hash"

- name: Upload Progressive Static IED test artifact
uses: actions/upload-artifact@v4
with:
name: ARSAS-Progressive-Static-IED-Test
path: |
dist/ARSAS-1.6.33-Progressive-Static-IED-Test.exe
dist/Progressive-Static-build-info.txt
if-no-files-found: error
retention-days: 14
Loading
Loading