Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 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
e01fe6c
Fix FAT live value authority and scroll flicker
masarray Sep 5, 2026
3fefb0f
Guard FAT live value authority against stale recycled rows
masarray Sep 5, 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