Skip to content

Introduce immutable runtime snapshots and PCAP replay for v1.4.0-beta.1#9

Merged
masarray merged 26 commits into
mainfrom
architecture/v1.4.0-beta.1
Jul 10, 2026
Merged

Introduce immutable runtime snapshots and PCAP replay for v1.4.0-beta.1#9
masarray merged 26 commits into
mainfrom
architecture/v1.4.0-beta.1

Conversation

@masarray

@masarray masarray commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Engineering intent

Begin the v1.4 runtime architecture with a coherent immutable publication boundary and deterministic offline PCAP replay through the same decoder/analyzer entry point used by live Npcap capture.

Implemented

  • immutable selected-stream runtime generations with copied identity, waveform samples, analog/RMS/phasor values, shape evidence, and diagnostics
  • atomic snapshot publisher: consumers see either the previous complete generation or the next complete generation
  • AnalyzerRuntimeSnapshotSource adapter so live or other IAnalyzerDataSource implementations can migrate to immutable generations without changing capture contracts
  • bounded classic PCAP 2.4 reader for Ethernet link type 1
  • little-endian and big-endian PCAP support
  • microsecond and nanosecond timestamp variants
  • replay routed through RawProcessBusAnalyzer.ObserveOwnedFrame, the same entry point used by live Npcap capture
  • deterministic coverage for replay timing, immutable generations, three-stream isolation, truncated records, unsupported link type, invalid timestamp fractions, and frame-size boundaries
  • dedicated repeated Runtime Architecture workflow with TRX evidence
  • candidate-package support for architecture/* branches
  • version, release workflow, landing page, changelog, roadmap, packaging guide, tested matrix, release checklist, release notes, and issue form synchronized to 1.4.0-beta.1

Automated validation

  • Repository health gate
  • Clean restore and Release build
  • Full test suite: 54/54 passed
  • Runtime Stability workflow
  • Runtime Architecture: 3 repeated passes, 14/14 tests per pass
  • CodeQL
  • NuGet high/critical vulnerability audit
  • GitHub dependency delta review
  • Portable candidate publish and package verification
  • Candidate checksum and manifest

Candidate commit: 1461584b2d90b0bde1c472728b166cadd924d366

Portable candidate SHA256:
a251dbcd2f94c6a4e60d2c207263b188be316c4c6110ffb022916b84843cf35c

Safety boundary

  • receive-only behavior remains unchanged
  • replay is file input only and never publishes SV/GOOSE traffic or sends control commands
  • replay uses the existing decoder instead of introducing a second protocol implementation
  • Windows/Npcap and recorded timestamps remain screening evidence unless independently validated

Honest scope limits

  • classic PCAP is supported; PCAPNG is not yet claimed
  • the immutable boundary and live-source adapter are implemented, but the WPF live workspace has not yet been fully migrated to the new runtime generation model
  • the internal analyzer is still partly monolithic; complete SvStreamRuntime, sequence tracker, windowing, phasor, and shape-component extraction continues in later v1.4 builds
  • replay does not recreate switch loading, NIC buffering, packet loss absent from the capture, or hardware timestamp behavior

Remaining release gate

  • Windows/Npcap regression smoke using the candidate package
  • confirm existing live SV/GOOSE/PTP/SCL behavior did not regress
  • optional sanitized classic-PCAP replay verification through an engineering harness/API consumer
  • final maintainer release decision

Keep this PR in draft until the candidate field regression is complete.

@masarray masarray marked this pull request as ready for review July 10, 2026 20:59
@masarray masarray merged commit 85d43a0 into main Jul 10, 2026
8 checks passed
@masarray masarray deleted the architecture/v1.4.0-beta.1 branch July 10, 2026 21:00
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