Skip to content

Milestone R1 — Open SCL and Discovery converge into verified static reporting #129

Open

Description

@masarray

Stage→main owner correction (2026-10-23): source PR #127 and #136 are CLOSED unmerged as Git ancestors, not deleted. Their R0 and R1A commits remain in OPEN cumulative PR #137, head b47ac165f4ae9a3927cb81641cefc88df3e477dc. #137 owns R0 Browser + R1A Signal Catalog + R1B exact RCB route code review, but base is still feat/browser-dataset-signals-r1a, NOT main. Different independent PR #130 remains OPEN and diverged, requires separate source parity check; do not blanket-close. R0 #128 and R1/field acceptance remain OPEN. Issue #134 was consolidated here, not accepted by closure.

Purpose

Deliver one canonical IED engineering model and one static report-only workflow for both Open SCL and Live Discovery after R0 (#128) is accepted. This milestone must be operator-usable rather than a cosmetic ARStack screen.

Acceptance — model and lifecycle

  • Open SCL → select IED (for multi-IED files) → canonical LD/LN/DO/DA browser, offline values/evidence.
  • Discover IED → construct the same canonical Browser model, with IED identity, ordered static DataSets and RCB inventory.
  • Switching between independent IED tabs never changes another association or selected context.
  • Save discovered SCL → disconnect → re-open → deterministic semantic round trip, with unresolved identity/type/membership failing closed.
  • Large-model browse and incremental discovery remain responsive without unbounded UI work.

Acceptance — static reporting authority

  • Post-discovery Signal Catalog explicitly offers Dataset Signals and an alternative browse/select route.
  • Both Open SCL and Discovery can select Static Dataset and converge into the identical static reporting controller/path.
  • Respect exact ordered IED DataSet membership and FC/MMS identity; do not silently rebind the RCB DataSet.
  • Correct BRCB/URCB selection, enable/read-back and explicit GI when supported; surface reasons for failures.
  • Static reporting uses report notifications only; cyclic MMS fallback disabled, no mixed static/dynamic authority.
  • Dynamic DataSet authoring remains explicitly separate, owned-only and guarded.

Evidence / exit gate

  • Offline/synthetic behavioral QA for both entry paths and selected static dataset, plus negative cases.
  • Real IED AA1E1F06R4 compare discovered model, saved SCL, static member order, RCB mapping and observed value/quality/timestamp against trusted evidence.
  • CI Qt/C++/Release Hardening success on exact commit; Windows portable and installer for manual GUI acceptance.
  • Screenshots/diagnostics demonstrate the full flow; no 'done' based only on static source token tests.

Baseline guard

Work from the last verified main/discovery build, not a reverted or older branch. Retain static report-only and no polling fallback.

R1 implementation sequence

R1A — Signal Catalog and read-only static mapping, stacked PR #136

  • Live-discovery Signal Catalog exposes Dataset Signals or Browse Data Model; no implicit RCB enable/GI.
  • Same canonical Dataset Signals view can be reopened for an Open SCL model.
  • Inspect bound RCB uses canonical DataSet reference matching and refuses absent/dynamic/empty membership; no RCB rewrite.
  • Exact-head Qt and C++ behavioral QA, including DATASET_SIGNALS_STATIC_PIVOT_PASS (PR R1A: canonical Signal Catalog → Dataset Signals → bound static RCB #136 head 1d3899e5).
  • Rendered dialog and selected static Dataset Signals acceptance with offline/fixture evidence (Linux offscreen, active-tab isolation).

R1B — reporting convergence (not implemented yet)

  • From either entry path, explicit Static Dataset selection flows through the same report-only controller; never mix cyclic MMS polling.
  • BRCB/URCB/RCB ownership/GI and read-back diagnostics verified against AA1E1F06R4.

Do not mark full R1 done from R1A source changes or CI green alone.

R1A verified fixture evidence

  • Linux rendered release soak at 1d3899e5: BROWSER_SIGNAL_CATALOG_PASS discovery_modal=visible offline_dataset=visible canonical_members=ordered static_rcb=matched no_write=true no_gi=true background_tab=isolated.
  • The new rendered QA originally failed on missing offline canonical RCB-to-DataSet projection, now preserved with bindingSource=CanonicalEngineeringContext while probeOk=false stays honest. Actual runtime wire operations are unchanged.
  • Windows installer and full exact-head checks remain in progress; no real AA1E1F06R4 evidence yet. R1B static report-only convergence is still open.

R1B — route persistence and live report attach, stacked PR #137

  • Persist the exact canonical static DataSet chosen in Dataset Signals.
  • Re-attach Reports by live probing and restore only an exact bound RCB whose probe succeeds; no row-0 fallback.
  • Fail closed when the chosen static DataSet has no verified live RCB binding.
  • Manual DataSet/RCB selection clears the armed route so operator intent overrides automation.
  • UI exposes Static Reporting… and a compact STATIC · <DataSet> route indicator; Enable + GI remains explicit.
  • Exact-head behavioral CI must emit STATIC_REPORT_ROUTE_RESTORE_PASS and all Qt/C++/Release Hardening jobs must pass.

R1B intentionally does not add polling fallback, DatSet writes, automatic RCB enable or automatic GI.

R1A acceptance checklist transferred from #131 · 2026-10-23

#131 is retired as redundant milestone tracking, NOT as acceptance completed. The following exact R1A obligations and already-observed scoped evidence remain here, in addition to R1 parent gates:

  • Open SCL and live discovery expose a read-only Signal Catalog using ONE canonical engineering model, never a separate shadow model.
  • Dataset Signals and Browse All Signals are accessible; live discovery prompts once per loaded context generation, and manual re-entry remains possible.
  • Offline SCL DataSet members show exact ordered member/FC evidence without an MMS association (rendered synthetic fixture, R1A: canonical Signal Catalog and offline DataSet browsing in IED Browser #130 head 7d7cc5e; not field evidence).
  • Connected report inventory must resolve only exact canonical DataSet references, without auto-enable, GI, DataSet create or RCB rebind.
  • Explicit bounded Read members path only; no cyclic MMS fallback.
  • Rendered QA observes first offline Dataset member, active IED slot and nonblank Model Values, with no Qt ReferenceError/TypeError/binding loop at historic 7d7cc5e.
  • Qt/Release Hardening + actual Windows portable/installer on the same accepted final commit (historic Linux/Qt CI is not a current release installer).
  • Hands-on screenshots and real AA1E1F06R4 signal/association proof before claiming parity.

Historical supporting evidence: Linux rendered release soak 36316508395 reports BROWSER_DATASET_CATALOG_PASS source=opened_scl ordered_members=1 read_only=true offline=true; Qt source/fixture contract 36316508426. Physical report enable/readback/GI and complete R1B are consolidated below from issue #134. Independent #130 remains OPEN; #136 source is a verified ancestor preserved inside OPEN PR #137. Original checklist: #131.

R1B unresolved acceptance copied from #134

Retiring issue #134 as duplicate tracking does not accept R1B. This OPEN #129 is the sole milestone/field owner; #137 contains parent #136 R1A commits by exact ancestry, yet is unmerged.

  • Open SCL and Discovery select exact canonical static DataSet, list matching BRCB/URCB with actual live binding/probe readiness; never silently choose another Dataset.
  • Preserve selected static Dataset member order, FC/MMS identities, actual q/t/value provenance and invalid/unavailable state.
  • Explicit operator association, RCB enable/write+readback and optional GI; report-only, no cyclic MMS fallback or silent DataSet/RCB rebind.
  • Present RptID/DatSet/ConfRev/BufTm/IntgPd/TrgOps/OptFlds/RptEna/reservation/owner/report count/EntryID/SqNum, sequence/quality/time diagnostics and errors.
  • Separate guarded owned-only dynamic Dataset authoring from static reports.
  • Negative/runtime+rendered GUI QA for both entry paths, cross-tab isolation and 1024px+desktop; real authorized AA1E1F06R4 physical evidence.
  • Exact-final-head Qt, C++, sanitizer/security, Release Hardening and Windows installer/portable; snapshots alone do not certify R1B.
    Preserve R0 Milestone R0 — Restore usable IEC 61850 Browser before UX expansion #128 as dependency; merged into Milestone R1 — Open SCL and Discovery converge into verified static reporting #129 from R1B — Static DataSet to exact RCB reporting workflow #134.

Activity

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