Skip to content

P3: generic SV explorer and SCL-driven semantics#50

Draft
masarray wants to merge 21 commits into
mainfrom
agent/sv-evidence-context-p3
Draft

P3: generic SV explorer and SCL-driven semantics#50
masarray wants to merge 21 commits into
mainfrom
agent/sv-evidence-context-p3

Conversation

@masarray

@masarray masarray commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Direction correction

The earlier profile-manifest direction has been removed from this PR. ArSubsv is being hardened as a generic IEC 61850 Sampled Values explorer: one wire parser, generic raw seqOfData inspection, and SCL-driven semantics. Manufacturer or device identity must never select decoding, channel order, scaling, quality interpretation, or health logic.

Implemented

  • removed the declarative multivendor profile-manifest engine and its sample files/tests
  • added SvGenericPayloadInspector for vendor-neutral seqOfData inspection
  • exposes byte offset, raw hex, signed INT32, unsigned UINT32, FLOAT32 representation, structural word grouping, and preserved trailing bytes
  • eight-byte grouping is explicitly structural only; it does not automatically mean value + quality
  • added SvGenericAsduInspector for svID, datSet, smpCnt, confRev, smpSynch, refrTm presence, smpRate, smpMod, and generic payload evidence
  • hardened engineering scaling: no SCL mapping means raw counts, even when packet length and sample rate resemble a known fixed layout
  • SCL-backed fixed-layout scaling additionally requires protection-rate evidence
  • added a generic Subscriber presentation layer for unbound streams
  • unbound decoded rows are displayed as generic words with offsets and signed/unsigned representations
  • synthetic channel labels and quality claims are hidden from the user when SCL is not bound
  • semantic waveform, RMS, and phasor presentation is withheld for unbound traffic
  • compact UI terminology changes from Profile/Confidence to Mapping/Semantics
  • existing SCL-bound ordered decoding and CT/VT measurement context remain available
  • added deterministic engine, scaling, and ASDU tests
  • documented the full generic explorer audit and implementation roadmap

Safety boundary

This tranche corrects the public presentation and scaling path, but the legacy unbound auto-layout routine still exists internally in SvStreamRuntime. Its generated labels are neutralized before presentation and no longer activate engineering scaling. The next tranche will remove that runtime routine entirely and feed SvGenericPayloadInspector directly into the snapshot model.

Next tranche

  • replace the runtime unbound auto-layout decoder entirely
  • add typed generic payload words to SvStreamSnapshot and evidence reports
  • separate PROTOCOL, STREAM, CONFIGURATION, and MEASUREMENT health states
  • remove lifetime parse-error stickiness from current global health
  • add generic selected-word waveform in raw counts
  • complete ordered SCL FCDA/BType mapping for configurable IEC 61869-9 datasets
  • add optional-field and orphan-stream verification
  • validate with byte-exact SCL/PCAP/known-injection regression fixtures

Validation at head 12dd0ab

  • CI: passed
  • Publisher warnings-as-errors build: passed
  • Subscriber warnings-as-errors build: passed
  • test and coverage gates: passed
  • dependency vulnerability checks: passed
  • GitHub Pages validation: passed
  • CodeQL: passed
  • Windows portable publish: passed
  • Windows installer build: passed
  • CycloneDX SBOM generation: passed
  • release-artifact validation: passed
  • silent installer smoke test: passed
  • SHA-256 checksum generation: passed

The PR remains draft because the internal runtime auto-layout removal and real SCL/PCAP visual validation are still pending.

@masarray masarray changed the title P3: versioned declarative SV profile manifests P3: generic SV explorer and SCL-driven semantics Jul 22, 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