Joseph Doherty
1647942414
fix(r2-04): scripted-alarm alerts emit uses PrimaryGatePolicy (consistency with 03/S4)
2026-07-13 11:10:43 -04:00
Joseph Doherty
72b1600245
fix(r2-04): primary gates default-DENY on multi-driver clusters while role unknown (03/S4)
2026-07-13 10:59:43 -04:00
Joseph Doherty
f2e899aaad
feat(r2-04): PrimaryGatePolicy - membership-aware default-deny + denial meter (03/S4)
2026-07-13 10:55:46 -04:00
Joseph Doherty
084c6e3cee
feat(r2-04): meter unconfirmed + advise-failed Galaxy writes
2026-07-13 10:53:17 -04:00
Joseph Doherty
610306734c
fix(r2-04): Galaxy fail-closed write when AdviseSupervisory fails - Bad status feeds #5 node revert (06/S-1)
2026-07-13 10:51:16 -04:00
Joseph Doherty
a537d29f44
refactor(r2-04): internal IMxWriteOps seam under GatewayGalaxyDataWriter (sealed SDK session untestable)
2026-07-13 10:48:30 -04:00
Joseph Doherty
759125372a
fix(r2-04): surface degraded address-space applies (Error log + otopcua.opcua.apply.failed)
2026-07-13 10:44:18 -04:00
Joseph Doherty
e37abf36a0
fix(r2-04): Materialise* passes return swallowed-failure tallies (void -> int)
2026-07-13 10:41:19 -04:00
Joseph Doherty
b3d57ca363
fix(r2-04): Safe* helpers report failure; Apply tallies removal-pass failures into FailedNodes
2026-07-13 10:38:10 -04:00
Joseph Doherty
437f82b145
fix(r2-04): AddressSpaceApplyOutcome carries RebuildFailed/FailedNodes; SafeRebuild returns bool (01/S-1)
2026-07-13 10:36:42 -04:00
Joseph Doherty
46fedda3e4
Merge R2-02 ResilienceConfig hardening (arch-review round 2) [PR #431 ]
...
v2-ci / build (push) Successful in 3m53s
v2-ci / unit-tests (push) Failing after 8m15s
Findings 01/S-6 (High — clamp hostile ResilienceConfig, no ValidationException
driver-brick), 01/U-6 (delete dead bulkhead knob), 01/S-8=03/S12 (Write/Ack
non-idempotent + retry->0), 04/C-7 (JsonObject round-trip preserves unknown
keys), 01/S-7=03/S13 (per-Create options-generation kills respawn cache race).
T15/T18 deferred. STATUS.md conflict resolved additively. Build clean.
2026-07-13 10:29:43 -04:00
Joseph Doherty
d8c6357be8
fix(r2-02): factory stamps a per-Create options generation — closes the respawn stale-pipeline race (01/S-7)
2026-07-13 10:23:25 -04:00
Joseph Doherty
5daf7155a8
fix(r2-02): options-generation in the pipeline cache key — stale respawn re-cache unreachable (01/S-7, 03/S13)
2026-07-13 10:22:07 -04:00
Joseph Doherty
901d4e6ed3
Merge R2-03 Virtual-Tag failure quality (arch-review round 2) [PR #430 ]
...
v2-ci / build (push) Successful in 4m2s
v2-ci / unit-tests (push) Failing after 8m20s
Findings 02/S13 (VT failure/timeout degrades node to Bad quality, no stale-Good
forever), 02/S12 (evaluator retry-once on disposed-race), 02/P7 (compile-cache
clear gated on changed expression set). T11/T12 deferred. STATUS.md conflict
resolved additively. Build clean.
2026-07-13 10:20:43 -04:00
Joseph Doherty
112f88c9fe
fix(r2-02): resilience section — parse-failure lockout + truthful raw pane (04/C-7; live-/run deferred)
2026-07-13 10:19:50 -04:00
Joseph Doherty
9e0a05dc6a
fix(r2-02): non-lossy ResilienceFormModel round-trip — preserve unknown keys, never overwrite unparseable stored JSON (04/C-7)
2026-07-13 10:18:31 -04:00
Joseph Doherty
a916ae6ebe
perf(runtime): gate the VT apply-boundary compile-cache clear on a changed expression set (02/P7)
2026-07-13 10:15:47 -04:00
Joseph Doherty
07eec11d31
docs+test(r2-02): bulkhead doc sweep + parsed-knob-must-be-wired guard (01/U-6, OVERALL theme 1)
2026-07-13 10:15:32 -04:00
Joseph Doherty
fea6477f45
Merge R2-01 S7 fault-path hardening (arch-review round 2) [PR #429 ]
...
v2-ci / build (push) Successful in 3m37s
v2-ci / unit-tests (push) Failing after 6m49s
Findings 05/STAB-14 (High regression — connect-timeout OCE no longer silently
kills S7 subscriptions), STAB-15 (framing/desync + mid-PDU cancel fatal
classification), STAB-8 seam note. All prod changes in S7Driver.cs; T11 live
outage gate deferred. STATUS.md conflict resolved additively. Build clean.
2026-07-13 10:14:59 -04:00
Joseph Doherty
ef00d6e5aa
fix(host): retry VT evaluation once on ObjectDisposedException from the apply-boundary cache clear (02/S12)
2026-07-13 10:12:59 -04:00
Joseph Doherty
12b3206555
Merge R2-05 AdminUI authorization (arch-review round 2) [PR #428 ]
...
v2-ci / build (push) Successful in 3m27s
v2-ci / unit-tests (push) Failing after 8m29s
Finding 04/C-1 (High): explicit named-policy gating on all 38 AdminUI pages via
new AdminUiPolicies (ConfigEditor + AuthenticatedRead) + anti-drift reflection
guard. T15 live pass deferred (docker-dev auto-admin can't observe deny).
STATUS.md conflict resolved additively. Build clean.
2026-07-13 10:12:57 -04:00
Joseph Doherty
524a0b5606
refactor(r2-02): remove bulkhead fields from the resilience form (01/U-6)
2026-07-13 10:10:06 -04:00
Joseph Doherty
56854139c9
refactor(r2-02): delete the dead bulkhead knob — options + parser (01/U-6); stored JSON keys become ignored unknowns
2026-07-13 10:08:27 -04:00
Joseph Doherty
99b424240a
docs(r2-02): correct WriteIdempotentAttribute's unwired claim; disable Write/Ack retry authoring cells (S-8)
2026-07-13 10:07:01 -04:00
Joseph Doherty
20ff67bf9a
fix(r2-02): non-idempotent write arm — cache the no-retry snapshot (01/P-4) and record tracker in-flight accounting (S-8 residual)
2026-07-13 10:05:52 -04:00
Joseph Doherty
4640ecb19b
docs(r2-06): note WriteLiveValues Quality is a documented-dead input (0.2.0 C-002); keep 192 populated (06/C-7)
2026-07-13 10:04:29 -04:00
Joseph Doherty
92b2ac4891
docs(r2-01): mark EnsureConnectedAsync as the R2-09 connect-throttle seam (STAB-8 note, task 10)
2026-07-13 10:04:22 -04:00
Joseph Doherty
496f97da20
fix(r2-02): write dispatch defaults to non-idempotent — no-retry arm authoritative (03/S12 layer 2)
2026-07-13 10:04:09 -04:00
Joseph Doherty
8999c722a0
fix(r2-01): probe failures mark the handle dead under the gate so the next tick reopens (STAB-15b, task 9)
2026-07-13 10:03:36 -04:00
Joseph Doherty
eab0b6be12
fix(r2-02): enforce the spec's no-retry invariant for Write/AlarmAcknowledge overrides (01/S-8, 03/S12 layer 1)
2026-07-13 10:01:54 -04:00
Joseph Doherty
33044061c3
fix(r2-01): cancellation observed mid-PDU marks the connection dead before propagating (STAB-15a, task 8)
2026-07-13 10:01:20 -04:00
Joseph Doherty
57c224c65a
fix(r2-02): range-validation warnings on the resilience override form (01/S-6 authoring layer)
2026-07-13 10:00:43 -04:00
Joseph Doherty
aac3285468
refactor(adminui): replace authorization string literals with AdminUiPolicies constants
2026-07-13 09:58:42 -04:00
Joseph Doherty
dab0029add
fix(r2-01): classify ISO-on-TCP framing/desync faults as connection-fatal (STAB-15a, task 7)
2026-07-13 09:58:11 -04:00
Joseph Doherty
b77bbd13b7
fix(r2-06): warning parity — malformed-endpoint warning in ServerHistorianOptions.Validate() (06/S-11)
2026-07-13 09:57:29 -04:00
Joseph Doherty
b5bf4b73ff
fix(adminui): gate every page with named policies — ConfigEditor on the mutating surface (R2-05, 04/C-1)
2026-07-13 09:56:08 -04:00
Joseph Doherty
e748f929c8
fix(r2-06): wire AddValidatedOptions<ServerHistorianOptions> + alarm-only-mode startup warning in Program.cs (06/S-11)
2026-07-13 09:55:25 -04:00
Joseph Doherty
8d306a1bd2
fix(r2-02): pipeline Build clamps policy values — building a pipeline can never throw Polly ValidationException (01/S-6 belt-and-braces + brick repro)
2026-07-13 09:55:05 -04:00
Joseph Doherty
5369994e57
fix(r2-06): GREEN — ServerHistorianOptionsValidator (consumer-gated fail-fast on bad Endpoint) (06/S-11)
2026-07-13 09:54:37 -04:00
Joseph Doherty
963543a578
fix(r2-01): filter OCE catches on the owning token in read/write wrappers + poll loop (STAB-14 defense-in-depth, task 4)
2026-07-13 09:54:03 -04:00
Joseph Doherty
294d74c1de
fix(r2-02): range-clamp ResilienceConfig overrides in the parser (01/S-6) — timeout/retry/breaker clamped with diagnostics, never brick
2026-07-13 09:53:28 -04:00
Joseph Doherty
01253818de
fix(runtime): VT script failure/timeout degrades node quality to Bad once per transition (02/S13)
2026-07-13 09:52:56 -04:00
Joseph Doherty
4bb25fc039
fix(r2-01): surface connect-timeout as TimeoutException, not OCE — poll loops no longer die on unreachable-host outages (STAB-14, task 3)
2026-07-13 09:52:42 -04:00
Joseph Doherty
183b72b7cb
feat(security): add ConfigEditor + AuthenticatedRead AdminUI policies behind AdminUiPolicies constants
2026-07-13 09:52:13 -04:00
Joseph Doherty
3108abc13b
fix(r2-06): GREEN adapter guard — TryCreate + named InvalidOperationException on bad ServerHistorian:Endpoint (06/S-11)
2026-07-13 09:52:07 -04:00
Joseph Doherty
c5ca3e8587
feat(runtime): EvaluationResult carries OpcUaQuality; VT bridge publishes it + historizes BadInternalError on Bad (02/S13)
2026-07-13 09:51:15 -04:00
Joseph Doherty
4be13429b6
fix(r2-02): add ResiliencePolicyRanges single-source-of-truth to Core.Abstractions (01/S-6 task 1)
2026-07-13 09:51:05 -04:00
Joseph Doherty
3b5ef439d4
docs(xmldoc): fix genuine doc issues surfaced by /fixdocs (17 fixes)
...
v2-ci / build (push) Successful in 3m11s
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Failing after 3m51s
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Failing after 1m50s
v2-ci / unit-tests (push) Failing after 8m37s
- CapabilityInvoker: 3 methods that implement IDriverCapabilityInvoker now use
<inheritdoc /> instead of duplicating the interface docs (MissingInheritDoc).
- TwinCAT NativeRegistration ctor: added the 8 missing <param> tags (MissingParam).
- Stripped the arch-review bookkeeping IDs STAB-1 (IS7Plc, S7Driver) + STAB-2
(TwinCATDriver x4) from comments, keeping the descriptive text.
Left the other 86 flagged items untouched — they are checker false positives on
legitimate technical content: interface-implemented events / IEqualityComparer /
IDisposable members whose <inheritdoc/> IS correct (10 InheritDocMisused), and domain
terms the heuristic misreads as tracking IDs (IEEE-754, S7-1200/300/400/1500, PLC-5,
D2-260, S7/Melsec memory addresses, OPC UA Part 9, phase-N design-doc filename refs,
UNS level-N descriptions, and prose like 'the #1 bug source' / failover 'pick #3 ').
2026-07-10 06:23:12 -04:00
Joseph Doherty
8f7b0017ef
Merge branch 'fix/archreview-crit4-twincat-replay'
2026-07-09 06:07:33 -04:00
Joseph Doherty
dfc02af3f0
Merge branch 'fix/archreview-crit3-s7-reconnect'
2026-07-09 06:07:33 -04:00