Commit Graph

1137 Commits

Author SHA1 Message Date
Joseph Doherty 62a49779ac test(host): unreachable-directory activation fails bounded; document the SDK impersonation threading contract (03/S2) 2026-07-13 12:00:35 -04:00
Joseph Doherty 0c785415a2 feat(host): LDAP directory-outage circuit — fail-fast denial during sustained outage (03/S2) 2026-07-13 11:56:45 -04:00
Joseph Doherty 21abe42a90 feat(host): hard wall-clock bound + bounded concurrency on OPC UA LDAP authentication (03/S2) 2026-07-13 11:52:10 -04:00
Joseph Doherty 0d5cb89d48 feat(security): LdapAuthResult.IsSystemFailure distinguishes directory outage from credential deny (03/S2) 2026-07-13 11:39:35 -04:00
Joseph Doherty 09faa05f06 feat(security): LDAP auth timeout/concurrency/outage-circuit options; project ConnectionTimeoutMs into the shared library (03/S2) 2026-07-13 11:38:37 -04:00
Joseph Doherty ce6d9e21d3 test(host): red repro — LDAP authenticator has no wall-clock bound on session activation (03/S2) 2026-07-13 11:36:32 -04:00
Joseph Doherty 1a698cbb97 Merge R2-11 TagConfig consolidation (arch-review round 2) [PR #434]
v2-ci / build (push) Successful in 3m55s
v2-ci / unit-tests (push) Failing after 8m14s
Findings 01/C-1, 01/P-1 (single TagConfigIntent.Parse in Commons, 4 copies
delegate, parse-once) + 05 CONV-2/UNDER-1/UNDER-6 (shared strict TagConfigJson
readers, per-driver Inspect() + writable key, FOCAS capability pre-flight,
Modbus probe timeoutMs, deploy-gate Warn|Error). Phase C runtime-strict flip
deferred. T22/T24 deferred. Auto-merged AddressSpaceApplier.cs + DriverHostActor.cs
with R2-04/R2-10; verified OpcUaServer.Tests 286/286 + Runtime.Tests 396/396.
Build clean.
2026-07-13 11:29:32 -04:00
Joseph Doherty 4449baac69 feat(adminui): writable checkbox in driver-typed tag editors (R2-11, 05/UNDER-6)
Models gain an optional bool? Writable (absent stays omitted; explicit false round-trips,
unknown keys preserved); the six editors gain a Writable checkbox (FOCAS disabled+read-only
hint). 9 model round-trip tests green. docker-dev /run verify of one editor deferred-live.
2026-07-13 11:22:12 -04:00
Joseph Doherty d62b140ccd Merge R2-04 Failure-visibility trio (arch-review round 2) [PR #433]
v2-ci / build (push) Successful in 3m48s
v2-ci / unit-tests (push) Failing after 9m14s
Findings 01/S-1 (AddressSpaceApplyOutcome failure field + apply.failed logging,
no optimistic success), 06/S-1 (Galaxy write fails closed -> BadCommunicationError
+ #5 revert, no knowingly-lost raw Write), 03/S4 (PrimaryGatePolicy default-deny
unknown-role-multi-driver on all gates + scripted-alarm emit gate). T13/T15 (2-node
live gates) deferred -- T15 is the behavior-affecting S4 live gate, must run in heavy
pass. Clean merge, build clean.
2026-07-13 11:19:24 -04:00
Joseph Doherty 4260b6ecaa feat(controlplane): deploy-gate TagConfig strictness — Warn default, Error opt-in at the draft gate (R2-11, 05/CONV-2) 2026-07-13 11:15:34 -04:00
Joseph Doherty 68588da05f test(r2-04): 2-node delivery-path guard for the primary write gate (deferred-live) 2026-07-13 11:13:31 -04:00
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 8401055c9d feat(controlplane): EquipmentTagConfigInspector — DriverType-dispatched deploy-time TagConfig inspection (R2-11) 2026-07-13 11:09:35 -04:00
Joseph Doherty b2a56ebf3b fix(driver-modbus): probe parses the factory DTO shape — timeoutMs no longer silently dropped (R2-11, 05/CONV-2) 2026-07-13 11:07:44 -04:00
Joseph Doherty c6f975b963 test(r2-04): primary-gate boot-window guards (deny-on-unknown multi-node, allow single-node) 2026-07-13 11:06:44 -04:00
Joseph Doherty 24435efa8b fix(driver-focas): equipment tags run the capability-matrix pre-flight authored tags get (R2-11, 05/UNDER-6) 2026-07-13 11:05:02 -04:00
Joseph Doherty e294416087 fix(driver-focas): equipment tags forced read-only until PMC writes exist; shared readers + Inspect (R2-11, 05/UNDER-1) 2026-07-13 11:01:55 -04:00
Joseph Doherty 4f5bbd253c feat(driver-twincat): shared TagConfigJson readers, writable key, Inspect warnings (R2-11) 2026-07-13 11:00:31 -04:00
Joseph Doherty 6e2415bb4c feat(driver-ablegacy): shared TagConfigJson readers, writable key, Inspect warnings (R2-11) 2026-07-13 10:59:27 -04:00
Joseph Doherty d374ba332b feat(driver-abcip): shared TagConfigJson readers + Inspect warnings (R2-11) 2026-07-13 10:58:17 -04:00
Joseph Doherty 1cceef406e feat(driver-s7): shared TagConfigJson readers, writable key, Inspect warnings (R2-11) 2026-07-13 10:57:01 -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 64b9bba9e9 feat(driver-modbus): shared TagConfigJson readers, writable key, Inspect warnings (R2-11) 2026-07-13 10:55:41 -04:00
Joseph Doherty edbbc0438c test(r2-04): live guard - advised write remains Good under fail-closed advise (skip-gated) 2026-07-13 10:54:13 -04:00
Joseph Doherty 084c6e3cee feat(r2-04): meter unconfirmed + advise-failed Galaxy writes 2026-07-13 10:53:17 -04:00
Joseph Doherty a9b7a5002a feat(core-abstractions): TagConfigJson shared strict-capable field readers (R2-11, 05/CONV-2) 2026-07-13 10:53:13 -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 7bbec77716 refactor(runtime,opcuaserver): device-host normalization re-homed to Commons DeviceConfigIntent (R2-11) 2026-07-13 10:46: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 99ce5b401e fix(r2-10): in-process resilience status store 2026-07-13 10:43:47 -04:00
Joseph Doherty 12b2ce078b fix(r2-10): register the tracker's production reader on driver nodes + wiring guard 2026-07-13 10:42:18 -04:00
Joseph Doherty a452a20947 refactor(opcuaserver): composer parses TagConfig once per tag via TagConfigIntent (R2-11, 01/P-1)
Deletes the composer's ExtractTagFullName/Alarm/Historize/Array statics and (co-located
to keep the build green, per plan T5) the three OpcUaServer.Tests ExtractTag* suites whose
tables now live in Commons.Tests/TagConfigIntentTests. T10 is the grep-sweep verification.
2026-07-13 10:42:08 -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 37f180c5a3 fix(r2-10): periodic DPS publisher for tracker snapshots 2026-07-13 10:40:54 -04:00
Joseph Doherty b6633f7562 feat(commons): DeviceConfigIntent — device-host extraction + normalization home (R2-11) 2026-07-13 10:39:54 -04:00
Joseph Doherty cd3f1270ee feat(commons): TagConfigIntent.Parse — single home for the byte-parity TagConfig intents (R2-11, 01/C-1) 2026-07-13 10:39:07 -04:00
Joseph Doherty 0ba60db1e4 fix(r2-10): successful capability calls reset ConsecutiveFailures 2026-07-13 10:38:51 -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 353f04b70c test(core,config): FullName-semantics characterization for walker + draft gate (R2-11) 2026-07-13 10:37:21 -04:00
Joseph Doherty 2cce61fc04 fix(r2-10): OnClosed records breaker-close on the status tracker 2026-07-13 10:37:12 -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 2e14fe1f24 test(runtime): golden TagConfig corpus + compose/decode parity characterization (R2-11) 2026-07-13 10:35:47 -04:00
Joseph Doherty 205d398055 fix(r2-10): breaker-close marker + IsBreakerOpen on ResilienceStatusSnapshot 2026-07-13 10:35:41 -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 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 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