Skip to content

P5: explicit trusted-SCL identity health and broad-mismatch gate #94

Closed

Description

@masarray

Goal

Turn trusted-SCL online synchronization evidence into an explicit, typed identity/health decision instead of allowing every completed synchronization to appear as a generic Connected state.

P5 follows P2/P3 trusted-SCL initial synchronization and P4 SCL-derived association addressing. The empirical SCL-assisted profile already requires explicit mismatch handling: preserve trusted SCL identity for partial evidence, never silently merge unknown online structure, and stop or explicitly fall back when the online model is broadly incompatible.

Health classes

matched

  • every expected SCL MMS domain is online;
  • no extra online domain is silently merged;
  • no skipped FC roots;
  • no AccessResult/read failure;
  • no structural FC-root mapping failure.

degraded

At least one mismatch exists, but available evidence does not prove a different/incompatible model. Examples:

  • some expected domains missing;
  • extra online domains;
  • FC root access denied/read failed;
  • a subset of readable FC roots does not match the local SCL structure while other roots still map successfully.

The trusted SCL semantic identity remains authoritative. Missing/failed values remain unavailable and diagnostics must show exact counts.

incompatible

Fail closed on clear broad mismatch evidence:

  • expected SCL domain set is non-empty and none of those domains exists online; or
  • FC roots return MMS Data, but every readable root fails structural mapping to the trusted SCL tree, with no access-denied/read-failure evidence masking the decision.

Do not label access-policy failure alone as an incompatible IED/model.

Product policy

  • matched -> normal trusted-SCL ONLINE state.
  • degraded -> remain online with explicit degraded health; preserve local SCL topology and unavailable values.
  • incompatible -> stop trusted-SCL product synchronization and surface a fault with exact evidence.
  • Never silently invoke full live discovery while a trusted SCL is armed.
  • Existing explicit user fallback remains: clear/unarm trusted SCL, then reconnect using live discovery.

Acceptance gates

  • Core classifier exposes typed matched/degraded/incompatible state and deterministic evidence counts.
  • Exact domain/root evidence classifies matched.
  • Missing/extra domain and mixed root failures classify degraded.
  • Access-denied-only evidence remains degraded, not incompatible.
  • No expected domain online classifies incompatible.
  • All readable roots structurally mismatch classifies incompatible.
  • Workbench exposes trusted-SCL health and refuses to publish an incompatible synchronization as Connected.
  • Diagnostics include domain/root/access/mapping counts and the explicit policy outcome.
  • Workbench QA proves matched path, degraded path, incompatible fail-closed path, and explicit user-controlled live-discovery fallback.
  • Retained SCL-assisted, IED Simulator Qt, Release Hardening, Embedded and C++ workflows remain green.

Boundaries

Activity

  1. masarray commented on Sep 15, 2026

    @masarray
    OwnerAuthor

    P5 internal closure — exact-head proof

    Closed on c114d1977335f8427f9ab85e9b65d26fe4effcc4.

    Exact-head proof is complete:

    The Workbench now exposes typed matched/degraded/incompatible trusted-SCL health, refuses to publish incompatible synchronization as Connected, retains explicit user-controlled live-discovery fallback, and emits typed evidence counts in diagnostics.

    Release artifact from the same exact head: arstack-iec61850-workbench-windows-rc, artifact ID 10374597841, digest sha256:2efc27cfb0d7ae64cd2784a15a7276fe97d288c104c89a0f26d265dc5afc13a4.

    P5 is internally complete. Physical field-device interoperability remains deliberately outside this internal CI closure. PR #82 remains OPEN + DRAFT.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions