Repository navigation
Milestone R1 — Open SCL and Discovery converge into verified static reporting #129
Description
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 stillfeat/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 head1d3899e5). - 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=CanonicalEngineeringContextwhileprobeOk=falsestays 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 compactSTATIC · <DataSet>route indicator; Enable + GI remains explicit. - Exact-head behavioral CI must emit
STATIC_REPORT_ROUTE_RESTORE_PASSand 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