From 063cf6e26c401e0586dc440adb5e646d8e74b0cd Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Thu, 5 Nov 2026 13:33:15 +0700 Subject: [PATCH] test(P9): isolate exact-SHA engine in ARSAS Windows reporting trial Reuse vetted nonpromotion FAST DEV workflow, preserve P8 fallback, stage P9-specific artifact name and engine/manifest verification without changing mainline engine lock. --- .../workflows/_ci-p1-windows-build-test.yml | 32 +++++++++++++++++-- engines/ARIEC61850.reporting-trial.json | 10 +++--- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/.github/workflows/_ci-p1-windows-build-test.yml b/.github/workflows/_ci-p1-windows-build-test.yml index 2a2bcad4d..dbdf4e200 100644 --- a/.github/workflows/_ci-p1-windows-build-test.yml +++ b/.github/workflows/_ci-p1-windows-build-test.yml @@ -287,7 +287,16 @@ jobs: if ($proc.ExitCode -ne 0) { throw "Portable EXE smoke failed: $($proc.ExitCode)" } $out = '.\ARSAS\TestResults\sg7-bcu-fat-trial' New-Item -ItemType Directory -Path $out -Force | Out-Null - $name = if ($env:FOCUS -eq 'reporting') { 'ARSAS-REPORTING-P8-TRIAL-' + $engineSha.Substring(0,8) + '-win-x64.exe' } else { 'ARSAS-SG7_BCU-ED2-FAT-TRIAL-' + $engineSha.Substring(0,8) + '-win-x64.exe' } + $reportMilestone = if ($env:FOCUS -eq 'reporting') { + $trial = Get-Content '.\ARSAS\engines\ARIEC61850.reporting-trial.json' -Raw | ConvertFrom-Json + if ($trial.commit -cne $engineSha -or $trial.runMode -cne 'fast-dev-nonpromotion') { + throw 'Reporting trial manifest does not match the exact engine or nonpromotion mode.' + } + if ($trial.trialMilestone -eq 'P9') { 'P9' } else { 'P8' } + } else { '' } + $name = if ($env:FOCUS -eq 'reporting') { + "ARSAS-REPORTING-$reportMilestone-TRIAL-$($engineSha.Substring(0,8))-win-x64.exe" + } else { 'ARSAS-SG7_BCU-ED2-FAT-TRIAL-' + $engineSha.Substring(0,8) + '-win-x64.exe' } $exe = Join-Path $out $name Copy-Item $source $exe -Force if ((Get-FileHash $exe -Algorithm SHA256).Hash.ToLowerInvariant() -cne $exeHash) { @@ -322,6 +331,16 @@ jobs: No cyclic MMS fallback, no automatic RCB mutation and no controls. CI PASS does not prove physical 77/77, 4/4, or interoperability. '@ | Set-Content (Join-Path $out 'READ-ME-FIRST.txt') -Encoding utf8 + if ($reportMilestone -eq 'P9') { + @' + ARSAS REPORTING P9 | NONRELEASE ENGINE TRIAL + ------------------------------------------------- + P9 exact-SHA engineering trial: NOT stable or production. + Verify physical Report continuity and per-RCB first image before qualification. + Preserve approved production pin, no hidden polling and no auto control. + Source, engine and EXE SHA must match portable-build-identity.json. + '@ | Set-Content (Join-Path $out 'READ-ME-FIRST.txt') -Encoding utf8 + } } else { @' ARSAS SG7_BCU IEC 61850 EDITION 2 | SUPERVISED FAT TRIAL @@ -405,8 +424,15 @@ jobs: $env:TRIAL_SHA -match '^[0-9a-f]{40}$' -and $env:FOCUS -in @('command-read', 'reporting')) if ($trial) { - $artifactPrefix = if ($env:FOCUS -eq 'reporting') { 'ARSAS-REPORTING-P8-TRIAL' } else { 'ARSAS-SG7-BCU-FAT-TRIAL' } - $filePrefix = if ($env:FOCUS -eq 'reporting') { 'ARSAS-REPORTING-P8-TRIAL' } else { 'ARSAS-SG7_BCU-ED2-FAT-TRIAL' } + $reportMilestone = if ($env:FOCUS -eq 'reporting') { + $trial = Get-Content '.\ARSAS\engines\ARIEC61850.reporting-trial.json' -Raw | ConvertFrom-Json + if ($trial.commit -cne $env:TRIAL_SHA -or $trial.runMode -cne 'fast-dev-nonpromotion') { + throw 'Artifact reporting milestone disagrees with exact engine provenance.' + } + if ($trial.trialMilestone -eq 'P9') { 'P9' } else { 'P8' } + } else { '' } + $artifactPrefix = if ($env:FOCUS -eq 'reporting') { "ARSAS-REPORTING-$reportMilestone-TRIAL" } else { 'ARSAS-SG7-BCU-FAT-TRIAL' } + $filePrefix = if ($env:FOCUS -eq 'reporting') { "ARSAS-REPORTING-$reportMilestone-TRIAL" } else { 'ARSAS-SG7_BCU-ED2-FAT-TRIAL' } "artifact_name=$artifactPrefix-$env:GITHUB_RUN_ID.exe" | Out-File $env:GITHUB_OUTPUT -Append -Encoding utf8 "artifact_path=ARSAS/TestResults/sg7-bcu-fat-trial/$filePrefix-*-win-x64.exe" | Out-File $env:GITHUB_OUTPUT -Append -Encoding utf8 "artifact_archive=false" | Out-File $env:GITHUB_OUTPUT -Append -Encoding utf8 diff --git a/engines/ARIEC61850.reporting-trial.json b/engines/ARIEC61850.reporting-trial.json index 246b9f4c1..c6d6cddb9 100644 --- a/engines/ARIEC61850.reporting-trial.json +++ b/engines/ARIEC61850.reporting-trial.json @@ -1,18 +1,20 @@ { "schemaVersion": 1, "repository": "masarray/ARIEC61850", - "commit": "ae1ce23dbc181c2a17aef20802f7517892fe4264", + "commit": "58d22be43d93d1d439df04a99ba935a7ec45cd4c", "approvedBaselineCommit": "f75e323e9f8443aa20e0a3818a1d5d77255b2c0f", "runMode": "fast-dev-nonpromotion", "scope": "reporting", "enginePullRequests": [ 198, - 199 + 199, + 200 ], - "engineCiRun": 40870337847, + "engineCiRun": 41980603839, "mainlinePromotionForbidden": true, "physicalQualificationRequired": true, "automaticRcbMutationForbidden": true, "cyclicMmsProcessPollingForbidden": true, - "purpose": "Exact source/engine nonrelease reporting multi-RCB + structured FCD trial; approved lock and stable release unchanged." + "purpose": "Exact-SHA P9 nonrelease Windows integration of four-RCB reporting, bounded delivery and closed-session isolation; physical qualification mandatory. Stable and approved engine lock remain unchanged.", + "trialMilestone": "P9" }