Skip to content

M2.14 Files: show root MMS inventory first; bound COMTRADE enrichment - #593

Closed
masarray wants to merge 6 commits into
fix/m214-smv-tab-passive-entry-20261015from
fix/m214-browser-files-root-first-20261015
Closed

masarray wants to merge 6 commits into
fix/m214-smv-tab-passive-entry-20261015from
fix/m214-browser-files-root-first-20261015

Conversation

@masarray

Copy link
Copy Markdown
Owner

Field regression addressed

The Browser Files path synchronously awaited a full FaultRecordTransferClient.DiscoverAsync recursive traversal (depth 4 / 128 directories / 20k entries) before requesting or rendering the root MMS FileDirectory. A slow, unsupported or timed-out COMTRADE scan could make an otherwise valid root file listing appear entirely unreadable.

Minimal optimized consumer change

  • One ARIEC-backed MMS transfer association remains the only network authority; root FileDirectory is read first and presented to the existing native WPF Browser as soon as returned.
  • Reuse Iec61850FaultRecordCatalogBuilder.Build to identify supported root CFG/DAT bundles in-memory without a second root directory scan. If the root has no directory candidates, skip expensive recursive discovery entirely.
  • When directory candidates exist or root fails, perform optional recursive fault-record discovery with a 30-second linked budget, retain usable root entries if traversal fails or times out, and surface partial-status diagnostics in a compact tooltip.
  • Publication remains device/association/read-operation fenced. Downloads are still gated by the existing verified complete-record catalog; no generic arbitrary-file downloads, no additional client/decoder, no new background polling.
  • Deterministic regression covers root-only fast-path, early UI publication order, recursive timeout/failure, root failure fallback, and operator cancellation.

Boundaries and acceptance

BCUGE FileDirectory still requires physical replay. Field-specific nested directories may require a separate tested follow-up; this patch does not promise unlimited traversal or generic file download. Stack on #592, no main, ARIEC engine pin, release or control operation changes. Exact-SHA Windows CI required before approval.

Copy link
Copy Markdown
Owner Author

D5 exact-source reconciliation — preserve root-first MMS directory, bounded optional COMTRADE scan

Disposition A: Close historical #593 unmerged; current RC already has the tested root-first behavior and extra physical RIO sidecar safeguards. Old head 9fbb92eb9184944153e687118fd8b41196bae273 is exact ancestor of RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50, compare +1299/-0, merge-base old HEAD.

Canonical replacement: protected draft RC #727/#729 at 817c3910e8223fa2ac531a4426ada5d2d4bbbe50, not published stable.

Unique delta fully reviewed across all 3 paths:

  • Models/IedBrowserFileDiscoveryPlanner.cs old bdf53ac19821dddeedd58634cefd433842438b4b→RC 85e46d4beb1d8a2f796a6e5b2b79e44dc660f000: original root-FIRST, bounded optional subdirectory scanning remains intact and its DiscoverAsync body retains all control branches, deadline default 30 s, root-capture publishRoot before scan, early return on complete no-folder root and timeout/failure returns partial root truth. Added IedBrowserRioSidecarBridge.Attach only around engine-proven records and actual root RIO candidates, no unclassified download authority or new parser.
  • MainWindow.IedBrowser.cs old f3c107b8180bcb0dcaf4e35be392edcb7dd5df1f→RC 21a0551413a5437a562c463f011204868aab7b3e: same read-root FIRST transfer.ReadRootFileDirectoryAsync delegate, bounded transfer.DiscoverAsync optional enrichment, WPF dispatcher-published early catalog with current owner, CTS, selected IED and connected checks, and truthful root/records partial status. No stale-IED GUI mutation intentionally accepted.
  • tests/ARSAS.Tests/M214RootFirstFileDirectoryTests.cs exact old and RC blob 1a9ea238c9f0e665fd72b8f22cd3276911c8d34b; all ordering, bounded timeout, root-first and negative record proof cases retained.

Safety: This is only historical carrier closure. No root-Read new traffic, no control Write/Operate, no parallel Npcap, no engine pin/stable release changes. Existing current exact-head #753 full Windows CI/portable smoke successful is not physical FAT proof.

Follow-up: Physical IED MMS root FileDirectory and subsequent COMTRADE/RIO checks remain open. Current RC owns implementation; old #593 branch and source remain recoverable.

@masarray masarray closed this Oct 26, 2026
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