Repository navigation
Conversation
…g and dual-link safety
…before resuming data
… require fresh standby failover proof
M1 IEC101-R01–R04: migrate single and dual A/B to one admitted exchange, canonical secondary correlation, FCB completion rule, no automatic mutating replay and immutable TX per exchange. M2 IEC101-R05: persistent RX framer per COM epoch for single and dual. Add negative, busy, NACK, stale epoch and dual-parity fixtures. Refs #143; preserves draft #136.
…och proofs IEC101-R06/R09/T06/T10/S06: shared bounded no-eviction operator FIFO for single and A/B, explicit capacity rejection and stop discard; bounded manual A/B switch intents; purge old secondary link proof, DFC, and reader state on new physical epochs. Require positive FC7 reset acknowledgment before resetting single-link FCB. Refs #143.
… epoch IEC101-R09/R10, T07/T10: reject stale queued controls when A→B→A changes the active generation or same COM reconnect changes epoch, even if visible link name matches. Add owner-stamp negative fixture. Refs #143.
|
Parallel-work reconciliation notice — 2026-11-11 PR #146 Raw Frames readability is merged into master at |
Build on draft #145 only: shared per-link transaction policy, exact FC9/10/11 retransmission after true physical RX silence, no mutating FC3 retry, single+A/B integration, partial-frame/no-RX/FC11/FCB/stop/failover fixtures. 925 xUnit + real WPF Windows CI, CodeQL/dependency/hygiene green. No hardware FAT, never treat as production release.
M1/T02 integration checkpoint — 2026-11-11Stacked PR #148 squash-merged into THIS DRAFT branch at IEC101-R02/R03, T02 milestone: one unchanged-FCB/FCV byte-exact FC9/10/11 read retransmission after verified total physical serial RX silence; shared per-link transaction core used by single-link and A/B dual-link; no variable FC3/GI/control retransmission; no retry on partial bytes, malformed/out-of-context reply or stale link epoch. Only one outstanding exchange; terminal failure once; physical retry trace labeled. Deterministic single/A/B, FC11 recovery, partial FT1.2 and actual failover-after-2-drops fixtures. Exact-head #148 base-master validation ( State: parent #145 remains Draft, now 19 commits ahead / 2 behind public master Next P0 risks: L11/T04 late old FC11/current FC9 ambiguity; L14/P05 COM cancel/unplug; S04/S05/T08 source-qualified GI/command outcome stages; P02 60/500/2,000 SOE 1200-bps throughput/FIFO. This software checkpoint is not certification or release authorization. |
…n journal bytes Eliminate CI timing race: verify writer-completed bytes and intact baseline before changing one existing payload byte. Preserve strict CRC32 and truncated-capture negative assertions; no production monitor/runtime behavior changed.
Reliability CI stabilization — exact-head follow-upCI on #145 head Commit New exact-head CI pending. Draft P0 still cannot be marketed as field certified; physical SICAM A8000 FAT, late-response and SOE count proof remain open. |
…y to live A/B runtime Merge draft shared engine with UI/rebrand master without overlapping file replacements. PROFILE-01/RED-01: selected historical NUC101 does not force post-switch GI; project overrides are fail-closed; generic preserves previous UI failover behavior. Add positive/negative Master profile fixtures and evidence-limits doc. No physical FAT, balanced IEC101 or universal NUC compliance claim.
|
/ci full |
…current master
…ft without overwriting engine recovery
2026-11-13 — ARIEC60870 cross-thread checkpoint / live GitHub reconciliationPublic Validation, exact master SHA: Windows CI run #43413562094 SUCCESS — Release build, format, protocol smoke, 989/989 xUnit (Core 93, Master 213, Monitor 129, Reporting 5, Desktop 509, Repository 40), packaged GUI, real-WPF OBS-C 1,400-frame acceptance and screenshot artifacts. CodeQL #43413561907 SUCCESS; repository hygiene #43413561925 SUCCESS. Windows GUI, field-tools, OBS-C and test-results artifacts available from that master CI run. Do not equate simulated/WPF acceptance to physical SICAM RTU FAT. Published release: stable v3.6.9, tag This IEC-101 active-master Draft PR #145: branch Remaining proof boundaries: software-successful forensic UI and one-owner RX evidence do NOT certify Master per-link FCB/FCV recovery, USB/COM unplug and reconnect on physical hardware, dual A/B switchover, staged GI/SBO lifecycle, multi-vendor interoperability, nor 1,200-bps 60/500/2,000 SOE FIFO completeness. Issue #143 remains CLOSED by owner; do not reopen just because Draft #145 is pending. Next milestone recommendation: stage a scoped semantic rebase/merge of Draft #145 onto exact master (no source rollbacks), identify genuinely overlapping transport/decoder paths and add red-test evidence for IEC-101 late same-service reply, physical COM recovery and 1,200-bps SOE burst. Keep full-work active Master UX: no artificial mandatory lab mode, no disabled GI/command workflows, no speculative field-certification claims. Checkpoint policy: This comment is a traceable snapshot, not a code change, release or approval to merge the Draft. |
2026-11-13 — LIVE P0 semantic reconciliation (after #201 and #202 merges)Current verified source master:
Merged milestone #201: PR #201 at squash merge Merged milestone #202: PR #202 at squash merge Semantic integration disposition: Do not reintroduce the outdated draft reader implementation or wholesale replace any current master source file. #145's Remaining critical software gate: source/epoch-correct late identical FC11, E5 permitted service context, FCB advance only on the right acknowledged request, safe read-only retry versus unknown command delivery, DFC/ACD and Class1/2 fairness, GI staged ACTCON/ACTTERM, SBO/DO verified feedback, A/B physical unplug/reopen cancellation and stale command elimination. Keep #145 draft until semantically reconciled, valid exact-head CI and field evidence. Do not equate RX bytes/frames or GUI event rows with RTU source-side event completeness. FIELD FAT PENDING: physical SICAM A8000 1200-bps SOE 60 / 500 / 2000 source-event versus raw / decoded / valid / duplicate / missing accounting, IEC_Test same-adapter matched comparison, dual A/B failover, COM unplug/replug, command lifecycle/multi-vendor. Prior operator report that active FC0 enabled startup is not evidence of these other FAT cases. Release: stable v3.6.9 untouched; no installer/updater FAT or new stable publication. |
) * feat(iec101): port bounded 1200-bps frame completion and partial RX accounting from draft #145 * fix(iec101): apply configured baud to single-link FT1.2 receive budget * fix(iec101): apply configured baud to A/B link FT1.2 receive budget * test(iec101): deterministic 1200-bps frame completion, timeout and stale E5 suppression * docs(iec101): record live 43/44 draft reconciliation and hard reliability gates * fix(iec101): retain canonical single-link RX reader for entire COM epoch * test(iec101): aborted status prefix cannot make stale E5 verify single-link RTU * docs(iec101): record persistent RX epoch owner and cross-poll E5 regression
2026-11-13 — v3.6.10 PUBLIC STABLE & post-release master reconciliation (supersedes prior release status)PUBLICATION VERIFIED: ArSee / ARIEC60870 v3.6.10 exists, Exact-source gate: master CI #43435781986 succeeded on Included software milestones: #197/#198/#199/#200 forensic Event Journal and Original Frame features, #201 bay-specific 31-point IEC-101/104 example mapping and fail-closed CA/TI lookup, #202 bounded 1200-bps FT1.2 receive, per-COM-epoch persistent reader and stale-E5 suppression. Draft #145 remains OPEN / UNMERGED: shared transaction/FCB authority, dual-link recovery and more aggressive retransmission semantics not included, not certified. Landing/download synchronization: post-publication PR #204 was merged after green docs-only CI/hygiene. Current Known limits / FIELD FAT PENDING: SICAM A8000 physical 1200-bps event batches 60/500/2,000 with source-device versus physical RX/decode/filter/drop reconciliation; serial USB COM unplug/replug, GI ACTCON/ACTTERM, SBO/DO feedback, dual-link A/B failover and multi-vendor acceptance. Never equate runtime event counters or a green simulation with physical SCADA conformance. Next engine milestone: Reconcile #145 semantically against current release source and #199 forensic-only TX/RX tracker. Preserve the published GUI, sample profile, updater and site; no blind merge. Stop double transaction ownership, test out-of-context FC11/E5/DFC/FCB and unknown-delivery mutating commands before any further stable release. |
2026-11-11 — CURRENT cross-thread reconciliation checkpoint
Branch state:
feat/iec101-shared-transaction-core-20261111@78b09bafcba9e201322a835a4ea6fb204d0b74c7, two-parent merge of prior engine1a2eb88cplus latestmaster@0cedf8891bf28954b862b7912e0db29f68aebc68. Behind master: 0; ahead 43; path overlap with #164: 0.0cedf889.1c23a029, 892/892 xUnit, 19/19 protocol smoke, 1,400-frame WPF acceptance and packaged artifacts; CodeQL, dependency and hygiene SUCCESS. A prior WPF failure #43006490977 was traced to a stale TI250 Unknown vs VendorSpecific assertion and corrected with typed opaque raw-evidence/zero-Values checks before merge.2026-11-11 — SICAM A8000 FC0 startup field finding carried into P0 branch
39973eb551b17f0ce4587673a5123a88390c7e86. Active IEC-101 single/A-B fresh default FC0=true, explicit/saved OFF preserved; IEC-103/104 and IEC101 passive are unchanged. FC0 resets link-layer FCB state, not RTU process/user application.1a2eb88cb753da202e85faa72cf5ca0997a53614carries IEC-101: default FC0 Reset Remote Link on active Connect after SICAM field finding #163 into this draft without overwriting the P0 transaction/serial recovery; 3 overlapping files were merged semantically and 2 unmodified-by-engine files inherited verbatim.master...PR145is 0 behind at reconciliation.2026-11-11 — RECONCILIATION AFTER FRAME DETAILS UX #161
1b560783fe71a5b0cd5621735aeb96017251a9a8(two-parent merge; parents P0 enginec4e3bf84andmaster@7d866087).2026-11-11 — CURRENT L14/P05 physical COM reopen implementation
c4e3bf84d98dd133b017642532f72b306a87f14e, reconciled withmaster@859ca50d724b60d8015bd99bd47136c08d358ee0in two-parent commit7a54f173; 0 behind master at reconciliation. Preserves Desktop: ArSee versioned window title • IEC 101/104/103 #157 versioned ArSee title, smart CI and both concurrent passive-monitor test stabilizations.efe93b80catches actual driver/port errors (not normal response timeout/DFC), invalidates pending FCB transaction, clears stale controls, closes/reopens same configured COM with bounded exponential backoff and cancellation, then requires addressed FC9 secondary verification before normal polling. Configured startup GI/clock-sync are one-shot per operator session; no blind application replay or automatic remote reset.3f6d705dtags faulting physical owner, continues healthy link, clears stale active controls/owner generation only, per-link reopen/backoff, re-verification and existing fresh-proof standby promotion; standby never acquires active poll/GI rights merely by opening COM.39365cdcdistinguishes unexpected COMBytesToRead/Readinvalidation from a regular protocol timeout, including cases where OS driver still reports the handle open.76d6c8a3,c47efffb,eab9e1a4andc4e3bf84: initial port missing, active A unplug during Class2, missing standby, both COM missing, cancellation, RX I/O failure while IsOpen=true, false recovery of a non-transport engine invariant, and no re-transmission of startup GI after a physical reconnect.2026-11-11 — Screenshot-driven Frame Interpreter merged + IEC101 P0 integration checkpoint
4c3c66def5275d1719077ea857ae3b5ed78b671f, a two-parent reconciliation merge of prior engine5e5d08bfwith current master8617f048. 0 overlapping source paths, 0 commits behind master at integration, engine changes preserved. Public master only contains the merged UI correction; P0 engine remains a Draft PR until software/field gates are distinguished.8617f048: darker amber ACD (not a fault), spacedIOA3: 128 · IOA2: 0 · IOA1: 107, consistent child-detail↳line, 17.5 DIP WPF line rhythm/4 DIP paragraph gaps; original hex, frame ownership, quality, timestamps and full-work UI unchanged.2026-11-11 — Full-workflow IEC-101 P0, no artificial lab mode
Previously validated engine-only head:
5e5d08bf8ee6e47e428d2ffc451319dae6325772(master37baba35, reconciled). User authority: the application must remain immediately usable as a real IEC101 active Master; the user manages field isolation. Do not introduce lab-only modes, disabled GI/command features, mandatory workflow wizard or blanket UI blocking. Retain actual IEC101 link verification/FCB/DFC safety, correct configuration and explicit operator intents.973950d3— Correct unrequested GI on learned CA: only a session with startup, manual or profile-approved GI actually requested may do one follow-up GI at observed CA. Full Class1/2/event reception remains active even when startup GI is off. Restrict CA observation to decoded valid process objects. Stop mutatingBaseSettings.CommonAddressor silently rerouting physical controls from observed process traffic. Synthetic single + A/B GI-disabled negative tests and positive configured-GI/command-target test.32c97017— Reset CA learning and one-shot retry hints on physical A/B promotion; post-switch GI on B uses B's configured CA rather than old A's observed CA. New failover source-ownership regression test.69412bbe— Red owner-swap regression found a real missingPhysicalSourceon dual-link TX evidence;Iec101DualLinkChannel.SendRawAsyncnow tags every fixed/variable TX with its physical A/B source and test rejects unattributed TX.5e5d08bf— GI authorization is now per promoted active owner, not the global GI counter. A's earlier GI must not trigger a hidden observed-CA GI on B when the configured post-switch policy isDisabledorManualOnly; B Class2/events stay operational. Additional negative A/B failover regression.2026-11-11 · S02 / L10-L14 / P02-P09 reliability execution — CURRENT HEAD
70724e189e1b1ac353f2fba90d7a4463e0418a27on existing Draft PR P0 IEC-101: reconcile #136 and integrate shared per-link transaction/FCB core #145. Master37baba35already reconciled; no public release.9026b162): expire FT1.2 incomplete prefix on timeout and cancellation; preserve fragment frame/byte counters and block ambiguous late E5 until a verified addressed frame; cancelled Close always releases COM ownership. Focused timeout/cancel tests, including legitimate E5 after re-synchronization; previous exact-head software CI SUCCESS.72ef098c): fixed true Class 2 starvation under perpetual ACD in single-link and active A/B; use configured MaxConsecutiveClass1BeforeClass2, never Class 2 on standby/new owner or under DFC busy. Permanent-ACD synthetic peer tests; previous exact-head Windows CI SUCCESS, 941/941 xUnit and 19/19 protocol smoke.f3ff5585): 60, 500, 2,000 spontaneous Type1/COT3 synthetic SOE source-to-engine accounting fixtures. These are intentionally instantaneous, not physical 1200 bps. Validate original ASDU/frame counts, in-memory retained event facts, and zero silent memory drop when capacity sufficient.7ae6acc7): replace unbounded single-link evidence List and dual-link O(n) RemoveAt(0) with consistent O(1) bounded Queue.EvidenceEventsDroppedFromMemorycounts evictions, andEvidenceReceivedcallback still delivers every live event. Negative small-window test checks explicit eviction and 60 live callbacks.70724e18): keep periodic standby FC9-only status supervision alive during continuous active ACD, with unchanged active owner guard. Added a paced synthetic A/B fixture proving standby gets a second health probe before the Class 2 fairness poll.2026-11-11 · reconciled NUC101 runtime PROFILE-01 / RED-01 milestone (CURRENT HEAD)
816046555904a13c9563f7543e697e106d78928b, parentefce3a1and second parent master37baba3; Git compare 22 ahead / 0 behind master. Full merged tree preserves all 24 prior IEC101/monitor files and all 102 distinct master UI/rebrand/website files (zero overlapping changed paths).Requiredirrespective of selected versioned Historical NUC101 / project policy. Selected profile is now validated and bound toIec101DualLinkRedundancyOptions, using one pre-existing GI scheduler. Generic default retains previous on-failover GI; Historical NUC101 default does not force GI;Disabled,Manual,OnFailover,ProjectRequiredproject policy values map to actual dual-link behavior.Iec101DualLinkRedundancyOptionsTestscovers generic/NUC/project GI policy, wrong widths/protocol/unsupported balanced mode; commit81604655additionally rejects unrepresentable Link A/B station addresses before TX and verifies valid 2-byte link addresses remain intact. Read implementation and limitations.Closes no release gate yet. References #143; implementation lineage and reconciliation from draft #136 (preserved, not overwritten).
M0 — reconciled baseline
master c358f62ad06592d13bac956b2c71b3e5a764bea0(PR docs(IEC-101): canonical P0 transaction reliability plan, verification matrix and tracking #144 canonical docs merged).e5b6634ac2bd92312f633c7a779e8da62f5bc61b. Merge reconciliation commit4794ac4dc06e9426efc8b3ef90d69cafe56ef148.eac974d7820f0ced197a221233154a388691ec51(0 behind master, 22 IEC101-scoped changed files).M1 — shared engine, actual runtime integration
Iec101PerLinkTransactionEngineper physical link; original transmitted frame, source, connection epoch, exchange ID, pending primary FC, in-flight exclusion, canonicalIec101SecondaryResponseValidator, typed verdict and exclusive FCB transition owner.Iec101MasterSessionandIec101DualLinkChanneluse the same Begin → TransmitAttempt → Await → Validate → Complete sequence.Iec101SharedTransactionCoreTests.M2/M3 — initial reliability hardening
Iec101QueueAndEpochSafetyTests.Evidence, gates and non-claims
55e77c4: Windows CI success, CodeQL success, Dependency review success, Repository hygiene success.eac974dWindows CI, CodeQL, dependency, hygiene; exact-head gates must complete before readiness.v3.6.8-rc.3.