Skip to content

M2.14 Browser Files: one verified COMTRADE record per row, compact native grid - #595

Closed
masarray wants to merge 9 commits into
fix/m214-rcb-discovery-state-provenance-20261016from
fix/m214-browser-files-bundle-grid-20261016
Closed

masarray wants to merge 9 commits into
fix/m214-rcb-discovery-state-provenance-20261016from
fix/m214-browser-files-bundle-grid-20261016

Conversation

@masarray

Copy link
Copy Markdown
Owner

Milestone 2 — one logical record, not a raw-file list

Confirmed source-level gap: the existing pinned ARIEC fault-record catalog already groups CFG/DAT/HDR/INF into Iec61850FaultRecordSet with exact RecordId and complete-member proof. ARSAS browser UI was binding Files (raw member file rows) and duplicating file nodes in the left tree.

Optimized consumer-only fix

  • Keep IedBrowserFileCatalog.Files unchanged as the precise wire/root-file authority, add a precomputed immutable DisplayRows projection: one row per verified engine-declared record plus loose unclassified root entries.
  • Bundle display identity is record.BaseName, download route retains the exact chosen CFG remote path; ambiguous or incomplete bundles still fail through the existing TryGetRecord gate. Aggregate size & modified time come from engine KnownSizeBytes and LastModifiedUtc, never guesses from extension grouping.
  • Replace the left Files expandable file tree with one nonexpandable category node. Right panel remains virtualized.
  • Compact 27px WPF row with vertically centered cells, consistent alternating backgrounds and provided vector geometry for File List. No raster/font asset or protocol changes.
  • Disable context Download unless the selection is a verified complete native CFG/DAT record.
  • Add regression for bundle display/size/identity, loose browsing-only entries, no file tree descendants and unchanged exact transfer/download safety.

Boundaries

The source-level FileDirectory/COMTRADE backend remains unchanged. This changes presentation, not relay value or read permissions. No competitor product references are added to the repository. No main, engine pin, writes, capture, or release changes. Stacked on #594; exact-SHA CI + BCUGE field UX acceptance required.

Copy link
Copy Markdown
Owner Author

D18 evidence-gated stacked historical retirement, not a new merge, not WPF/engine/release promotion.

Exact HEAD 8d29512f8a3adb2b039b8967ec1f938f40e50f75 remains an RC ancestor (behind=0 vs protected RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50). All 7 original changed paths exist in the RC. Models/IedBrowserRemoteFile.cs and tests/ARSAS.Tests/M2IedBrowserFilesTests.cs have byte-identical Git blobs at original HEAD and RC, including tests for one record per engine-proven complete CFG/DAT, browse-only unknown files/folders, no duplicate Files tree, ambiguous identity failure, size/completeness integrity and native grid contract. Five other changed files evolved: no blanket source-byte equivalence claim.

Verified actual evolved RC code: IedBrowserFileCatalog.DisplayRows still builds exactly one bundle row per engine-authorized record with IsBundle/BundleMemberCount, excludes verified member paths from raw rows, retains independent raw file provenance, rejects ambiguous paths in TryGetRecord, requires complete record and CFG+DAT for native viewer; newer code additionally handles exact allowed root RIO sidecars. MainWindow.IedBrowser.Files.cs still uses _iedBrowserFileCatalog?.DisplayRows, constrains Download complete record to TryGetRecord, and avoids fabricated file permissions. IedBrowserPresentation still shows Files as one navigation node with the remote inventory in the separate grid; current IedBrowserPresentationTests.cs retains RemoteComtradeFiles_StayInRightGrid_NotDuplicatedInTree and is evolved, not an exact test-blob match.

The existing exact RC SHA Windows/SCL/reference-guard CI passes (runs 40165560413, 40165560386, 40165560409); none rerun now. No real-Ied COMTRADE transport/FAT claim. Decision: close this historical PR as superseded by later integrated RC code; retain issue/release/physical gates, branch and discussion, and leave active owner threads untouched.

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