Repository navigation
Conversation
|
Staging reconciliation 2026-10-22: this old standalone PR's intended functional scope exists in the newer staging implementation, but the old branch still diverges from the newer code. Do NOT cherry-pick the historic file snapshots. Original HEAD Code and test evidence: Staging has MmsCanonicalStaticAcquisitionPreflightPlanner, authority-gated LiveInventoryRequired (no SCL design inventory promoted to live), exact-target planning, ProbeCanonicalStaticAcquisitionAsync and tests for SCL refusal, exact targets, unresolved no-broadening, inventory swap rejection. Newer tests additionally cover bounded exact-target pagination replacing the legacy global abort. This source scope passed Windows PR #192 synthetic merge CI #39782663272: 1,262/1,262 tests, zero warnings/errors, exact staging SHA |
Stacked milestone for #144, based on PR #147.
Goal
Move the next orchestration boundary into ARIEC61850 so ARSAS does not have to reproduce IEC 61850 static-coverage -> live-RCB targeting -> availability semantics.
The engine must know the difference between:
A design/SCL inventory must never be silently promoted to live operational RCB evidence.
Changes
MmsReportInventoryself-describing with explicitMmsReportInventoryAuthority:LiveMmsObservedSclDesignProjectionUnknown;LiveMmsObservedat the mapper boundary rather than relying on a caller-supplied authority flag;MmsCanonicalStaticAcquisitionPreflightPlanner;PrepareCanonicalStaticAcquisitionAsyncso planning and execution consume the same inventory instance;ProbeCanonicalStaticAcquisitionAsyncfor explicit plan/execute separation, with an execution-time authority recheck so an SCL inventory cannot be swapped in after planning;Canonical structural projection
MmsCanonicalReportInventoryProjection.Build(CanonicalIedModel)so applications do not recreate DataSet/RCB projection logic;01/indexed RCB instance is fabricated;RptEna, reservation, Owner or other live state is invented;SclDesignProjection; discovery-derived canonical snapshots are taggedCanonicalModelProjection, not live runtime authority.This directly prepares removal of ARSAS-side
BuildTrustedSclReportInventory/indexed-name fabrication once the engine pin can be coordinated.Anti-naive boundary
This closes a subtle Open-SCL trap: an application can synthesize an RCB inventory from SCL for structural planning, but that inventory is not live evidence. The new contract prevents a consumer from accidentally calling it operational truth.
No vendor branching, broad fallback, indexed-name fabrication, or UI-level IEC semantics are introduced.
Tests
Consumer direction
ARSAS #446 should consume this contract later:
No ARSAS engine-lock or active #425/#445/#450 files are changed in this milestone.
Software gate
Combined P0-P6 integration head
51fa7092e83472a125aae9a29f033d31f59e6281passed .NET CI #758 end-to-end in CI-only PR #148:CI #754 first caught a test-only canonical evidence enum-name typo; it was corrected before the green exact-head gate. No runtime workaround was introduced.