Skip to content

P6 #144: source-aware canonical static acquisition preflight - #150

Draft
masarray wants to merge 13 commits into
perf/144-targeted-rcb-hotpathfrom
feat/144-p6-canonical-acquisition-preflight
Draft

masarray wants to merge 13 commits into
perf/144-targeted-rcb-hotpathfrom
feat/144-p6-canonical-acquisition-preflight

Conversation

@masarray

@masarray masarray commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

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:

  • canonical/SCL structural evidence;
  • actual live MMS-observed report inventory.

A design/SCL inventory must never be silently promoted to live operational RCB evidence.

Changes

  • make MmsReportInventory self-describing with explicit MmsReportInventoryAuthority:
    • LiveMmsObserved
    • SclDesignProjection
    • Unknown;
  • inventories produced by live MMS discovery are stamped LiveMmsObserved at the mapper boundary rather than relying on a caller-supplied authority flag;
  • add pure MmsCanonicalStaticAcquisitionPreflightPlanner;
  • planner composes:
    1. canonical configured-static coverage;
    2. exact canonical -> live RCB resolution;
    3. explicit unresolved-segment evidence;
  • if inventory is not live MMS-observed, operational target resolution is withheld and no network probe is authorized;
  • unresolved live segments remain unresolved; no sibling/name-family guess and no automatic broad scan;
  • add preferred one-shot PrepareCanonicalStaticAcquisitionAsync so planning and execution consume the same inventory instance;
  • add ProbeCanonicalStaticAcquisitionAsync for explicit plan/execute separation, with an execution-time authority recheck so an SCL inventory cannot be swapped in after planning;
  • exact target budget is fail-closed: if the target set exceeds budget, no partial subset is probed;
  • availability execution reuses PR P4 #144: targeted RCB hot path and association-scoped static DataSet evidence #147 exact-target RCB probing and association-scoped static DataSet evidence.

Canonical structural projection

  • add MmsCanonicalReportInventoryProjection.Build(CanonicalIedModel) so applications do not recreate DataSet/RCB projection logic;
  • exact configured identities are preserved;
  • no 01/indexed RCB instance is fabricated;
  • no writable attribute exposure, RptEna, reservation, Owner or other live state is invented;
  • SCL ingress is tagged SclDesignProjection; discovery-derived canonical snapshots are tagged CanonicalModelProjection, 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

  • SCL-projected inventory is never promoted to live target evidence;
  • live inventory resolves only exact targets;
  • partial resolution remains explicit and does not broaden unresolved siblings;
  • a non-operational plan performs zero network work even on a disconnected session;
  • target-budget overflow fails before network access and never starts a partial probe.

Consumer direction

ARSAS #446 should consume this contract later:

  • ARSAS supplies selected signal intent;
  • ARIEC computes canonical static coverage and exact live target evidence;
  • ARIEC performs bounded targeted availability;
  • ARSAS consumes the result rather than re-implementing report semantics.

No ARSAS engine-lock or active #425/#445/#450 files are changed in this milestone.

Software gate

Combined P0-P6 integration head 51fa7092e83472a125aae9a29f033d31f59e6281 passed .NET CI #758 end-to-end in CI-only PR #148:

  • source/provenance verification;
  • restore;
  • Release build;
  • complete tests;
  • package;
  • artifact/diagnostics upload.

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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant