5051275b78
Merge b626-629 (batch #626+): Part 9 condition children get instance-scoped NodeIds ({ConditionId}/{browse path}); shelve methods keep resolving; subtree forgotten on teardown
Joseph Doherty
2026-10-08 15:02:07 -04:00
66c47c3ddd
fix(opcua): shelve declaration ids from a fixed set, not an address-space lookup; pin instance-id + state-machine-id shelve calls (#629)
Joseph Doherty
2026-10-08 15:01:54 -04:00
653d138637
feat(mtconnect): CONDITION data items as native Part 9 alarms via IAlarmSource (#626)
Joseph Doherty
2026-10-08 15:01:39 -04:00
a60279eb92
Merge b626-opcuaclient (batch #626+): #635 subscription tuning, OperationLimits via SDK batching, OTel event counters, CRL options, discovery URL, full aggregate set
Joseph Doherty
2026-10-08 14:58:41 -04:00
1219b7b13e
fix(opcuaclient): review fixes - drop driver-side OperationLimits chunking (SDK batches), diagnostics as OTel counter, safe discovery selection, options validation at load (#273#275#276#277#278)
Joseph Doherty
2026-10-08 14:55:53 -04:00
cb85a455c9
feat(alarms): exact OPC UA severity + per-condition quality on native alarm events (#626)
Joseph Doherty
2026-10-08 14:55:46 -04:00
1de8357d13
Merge commit 'e6028678' into b626-629
Joseph Doherty
2026-10-08 14:55:30 -04:00
935ba8d1d4
Merge branch 'master' into b626-opcuaclient
Joseph Doherty
2026-10-08 14:47:49 -04:00
d0052d9fed
fix(opcua): Part 9 condition children get instance-scoped NodeIds (#629)
Joseph Doherty
2026-10-08 14:45:46 -04:00
e6028678b3
docs(mtconnect): upgrade note for existing multi-Device MTConnect drivers (#628)
Joseph Doherty
2026-10-08 14:44:44 -04:00
5c6e2d1b59
Merge b626-631 (batch #626+)
Joseph Doherty
2026-10-08 14:43:45 -04:00
723392e3da
Merge b626-mtconnect (batch #626+)
Joseph Doherty
2026-10-08 14:43:45 -04:00
7a9b51aeca
Merge b626-ablegacy-focas (batch #626+)
Joseph Doherty
2026-10-08 14:43:44 -04:00
2377da3cb4
Merge b626-630 (batch #626+): release prior device/session state on re-Initialize in six drivers
Joseph Doherty
2026-10-08 14:43:44 -04:00
2a41b46b17
Merge b626-s7 (batch #626+)
Joseph Doherty
2026-10-08 14:43:07 -04:00
b7b9a57b84
Merge b626-twincat (batch #626+)
Joseph Doherty
2026-10-08 14:43:07 -04:00
c69a27318d
fix(drivers): #630 re-review - S7 warns on gate-wait timeout; AbCip publishes fresh tag tables by reference swap
Joseph Doherty
2026-10-08 14:42:51 -04:00
34c52defb3
feat(s7): STRING/WSTRING/CHAR/WCHAR and DTL/DATE/TOD/TIME/S5TIME codecs, TSAP/connection-type override, negotiated PDU surfaced (#632#288#289#294#295)
Joseph Doherty
2026-10-08 14:31:44 -04:00
dcc827ca8c
feat(mtconnect): one agent client per driver — a second /raw Device is a deploy error (#628)
Joseph Doherty
2026-10-08 14:29:50 -04:00
461133235a
fix(drivers): InitializeAsync releases previous device/session state before overwrite (#630)
Joseph Doherty
2026-10-08 14:28:55 -04:00
0dc09329b7
feat(ablegacy,focas): PLC-5 octal I/O, MicroLogix function files, indirect-address parse, 16i PMC F/G (#244#245#247#265)
Joseph Doherty
2026-10-08 14:28:22 -04:00
05ed039c73
fix(twincat): TOD write bound, historian note, driver-level refused-write test (#306)
Joseph Doherty
2026-10-08 14:26:32 -04:00
da33f27544
feat(mtconnect): serve TIME_SERIES observations as variable-length double[] (#627)
Joseph Doherty
2026-10-08 14:25:45 -04:00
55eac5f68b
feat(history): full Part 13 aggregate set; unsupported-by-backend aggregates answer BadAggregateNotSupported (#285)
Joseph Doherty
2026-10-08 14:24:25 -04:00
90e3fe1cf7
feat(twincat): TIME/TOD as Double ms, DATE/DT as UTC DateTime with read decode + write encode (#306)
Joseph Doherty
2026-10-08 14:24:12 -04:00
da203d5d7e
fix(adminui): modal backdrop offset came from .rise's retained transform, not 100vw (#631)
Joseph Doherty
2026-10-08 14:22:32 -04:00
c9fdcc3ea6
fix(adminui): clear stale one-time key banner on delete; modal backdrop no longer overruns viewport (#631)
Joseph Doherty
2026-10-08 14:21:20 -04:00
d898262c4a
docs(claude): #609 removal tombstones tracker + hub against late writers
Joseph Doherty
2026-10-08 09:08:07 -04:00
b9e6802d27
Merge #609 race fix: a removed driver's late in-flight invoker calls / health emits can no longer resurrect its resilience-tracker or telemetry-hub state (Retire/Reinstate, Evict/Readmit); removal test made deterministic
Joseph Doherty
2026-10-08 09:07:57 -04:00
4a10ea1e1c
fix(runtime): a removed driver's late writes no longer resurrect its resilience/telemetry state (#609)
Joseph Doherty
2026-10-08 09:07:11 -04:00
5c0623ad2b
docs(claude): array-write element conversion + Modbus/S7-only array-to-scalar refusal; passive LocalDb half drain gate and pre-join verdict window (R6)
Joseph Doherty
2026-10-08 08:45:28 -04:00
31346f1ecd
Merge review R6 fixes: numeric array writes converted element-wise (checked) to the node's element type, refusing out-of-range/fractional/NaN; array-to-scalar refusal scoped to Modbus/S7; Primary-verdict pre-join window documented + real MemberUp subscription test; passive LocalDb pair half drain-gated on its mesh partner
Joseph Doherty
2026-10-08 08:43:59 -04:00
3be8a1217e
fix(runtime): the passive half of a LocalDb pair stands its alarm drain down for its mesh partner (review R6 MINOR-4)
Joseph Doherty
2026-10-08 08:43:06 -04:00
e93d115cbe
fix(runtime): pin the Primary-verdict member-event subscription with a test; document the pre-join allow window (review R6 MINOR-2/3)
Joseph Doherty
2026-10-08 08:33:52 -04:00
52708bff52
fix(address-space): numeric array writes convert (checked) to the node element type; array-to-scalar refusal only for Modbus/S7 (#610 review R6)
Joseph Doherty
2026-10-08 08:31:46 -04:00
42700eb298
Merge docs pass: #623 stale docs rewritten (IncrementalSync, AddressSpace, driver-specs banner, Secrets runbook replication), #624 stale claims + perf-followups-r3 tasks.json valid, CLAUDE.md updated with this batch's facts, #619 compose comment
Joseph Doherty
2026-10-08 08:20:05 -04:00
0a5d03da95
docs: apply CLAUDE-FACTS to CLAUDE.md, fix AlarmAck LDAP wording, retitle KNOWN LIMITATION 2 (#624)
Joseph Doherty
2026-10-08 08:19:30 -04:00
2befe9f9ba
docs: correct stale LDAP-role, host-probe, resilience-table, Bad-value claims; fix tasks.json (#624)
Joseph Doherty
2026-10-08 08:16:43 -04:00
f383996127
docs: soften shared-volume remark in secrets runbook (#623)
Joseph Doherty
2026-10-08 08:13:18 -04:00
90bfcbe47a
docs: rewrite IncrementalSync + AddressSpace for v3, fix driver-specs/driver-stability tier claims, update Secrets runbook for pair replication + KEK rotation (#623)
Joseph Doherty
2026-10-08 08:13:14 -04:00
a702875d41
Merge review R4 fixes (#610): array writes require an exact element-type match (BadTypeMismatch, nothing sent); Galaxy encoder refuses uint[]/ulong[]; Modbus array writability bounded by maxRegistersPerWrite/coil cap; arrayLength >= 1 required; Galaxy arrays without a declared length stay read-only; arrays to scalar nodes refused
Joseph Doherty
2026-10-08 08:08:03 -04:00
dabd8eb955
fix(address-space): exact element-type check for array writes + array-capability shape edges (#610 review R4)
Joseph Doherty
2026-10-08 08:07:36 -04:00
3eefbc7371
Merge review R5 fixes: MTConnect session publish + generation bump atomic, superseded pumps joined on stop; MQTT writes encode the birth's own Sparkplug datatype (unsupported birth types refused BadNotSupported); AbLegacy dead init join removed + Dispose join test; MQTT QoS1 and Postgres key-normalisation documented
Joseph Doherty
2026-10-08 07:53:18 -04:00
7628402893
fix(drivers): R5 minors - MTConnect session publish+generation atomic and superseded pump joined; MQTT birth-typed writes use the birth's own datatype; AbLegacy dead init join removed + Dispose join test; docs (#602)
Joseph Doherty
2026-10-08 07:52:59 -04:00
b99aea46b2
Merge review R1 fixes: removed driver's resilience tracker released; SDK timed-unshelve no-op (engine owns expiry); commented re-ack stored as AddComment; native-ack Primary verdict published from start; drain gate SharesRowsWithPeer; malformed cache bytes don't adopt the revision; HostAbortedException passthrough; ClusterRoleInfo seed filtered
Joseph Doherty
2026-10-08 07:47:57 -04:00
e3dcb180c3
fix(runtime): Primary verdict published from host start, cache boot never adopts malformed bytes, strict drain-gate predicate, HostAbortedException passthrough, seed only Up members
Joseph Doherty
2026-10-08 07:47:34 -04:00
83e9ffd27a
fix(alarms): SDK timed-unshelve timer is a no-op; commented re-ack comment is durable (#597)
Joseph Doherty
2026-10-08 07:47:28 -04:00
8a9bf23048
fix(telemetry): release a removed driver's resilience tracker state so the publisher stops re-emitting it (#609)
Joseph Doherty
2026-10-08 07:47:13 -04:00
b7a48e2b93
Merge #610: server-side array writes gated per driver capability (DriverArrayWriteSupport); ArrayWritable on the surgical whitelist + UNS Backing; shape/IndexRange refusal; ValueRank>1 out of scope
Joseph Doherty
2026-10-08 07:39:40 -04:00
18f8eb5d2f
feat(address-space): server-side array writes gated per driver capability (#610)
Joseph Doherty
2026-10-08 07:39:05 -04:00
36343c1277
Merge #593 follow-up: AbLegacy native write refusals decided before any wire traffic (status-bit sub-elements of any type, PLC-5)
Joseph Doherty
2026-10-08 07:29:18 -04:00
275b240ebd
fix(mqtt): back off the Sparkplug primary-host claim loop after failures (#602 STAB-27)
Joseph Doherty
2026-10-08 07:29:08 -04:00
e863e9f0e2
fix(ablegacy): refuse native status-bit and PLC-5 writes before creating the runtime (#593)
Joseph Doherty
2026-10-08 07:28:52 -04:00
1f4f4fca8f
fix(mqtt): birth-typed Sparkplug writes and QoS 1 for Plain writes (#602 STAB-25/26)
Joseph Doherty
2026-10-08 07:27:42 -04:00
e76df0741a
fix(mtconnect): stamp the /sample pump with its session generation and supersede a stale one (#602 STAB-20)
Joseph Doherty
2026-10-08 07:24:43 -04:00
b176469b43
Merge #621(node manager): Utils.Log* → injected ILogger; last CS0618 suppressions removed
Joseph Doherty
2026-10-08 07:20:00 -04:00
8d5e456ce1
refactor(opcua): node manager logs through injected ILogger, drop CS0618 suppressions (#621)
Joseph Doherty
2026-10-08 07:19:47 -04:00
bd63810645
fix(alarms): native ack refused off-Primary, commented re-ack reported, real UnshelveTime (#597)
Joseph Doherty
2026-10-08 07:12:29 -04:00
0bd3ec00e4
fix(address-space): announce surgically-added raw nodes; equipment-with-references removal stays surgical (#599)
Joseph Doherty
2026-10-08 07:12:29 -04:00
5a5f9b22c9
Merge #622/#621/#606: OpcUaClient driver wire tests against the in-process server; SDK telemetry ctors in driver/browser; TreatWarningsAsErrors on the last 4 src projects
Joseph Doherty
2026-10-08 07:10:55 -04:00
cb838d4ae1
test(abcip): scale the lease-soak budget with AB_LEASE_SOAK_CYCLES (#593)
Joseph Doherty
2026-10-08 07:10:55 -04:00
2b8b5fbdb2
test(opcua-client): wire-level driver tests against the in-process server; retire scaffold headers (#622)
Joseph Doherty
2026-10-08 07:07:55 -04:00
71881163df
fix(sql): bind string keys untyped on Postgres so integer key columns compare (#602 STAB-24)
Joseph Doherty
2026-10-08 07:03:00 -04:00
e9e35baa70
Merge #600.1/#603: provision changed-to-historized tags; retire dormant VirtualTagEngine; cache ScriptSandbox references; one LocalDb replication predicate for registration and drain gate
Joseph Doherty
2026-10-08 07:01:41 -04:00
93e381561b
Merge #601(malformed)/#609: malformed artifact bytes are no answer on boot/restore; telemetry snapshot eviction on driver removal
Joseph Doherty
2026-10-08 07:01:32 -04:00
75c66c16ef
Merge #625: deferred code-review findings resolved or ruled (S7.Cli verdict, browser CP release, Cluster member events, Sql Detach hoist, docs)
Joseph Doherty
2026-10-08 07:01:32 -04:00
439752d3b8
feat(adminui): S7 tag editor rejects wide-type and writable-Bool arrays at author time (#610)
Joseph Doherty
2026-10-08 06:59:29 -04:00
e3cb2dd591
fix(s7): thread ILoggerFactory into the S7 driver factory (#602 CONV-3)
Joseph Doherty
2026-10-08 06:59:29 -04:00
b007d450d8
chore(build): OpcUaClient driver/browser on ITelemetryContext ctors, TreatWarningsAsErrors on remaining src projects (#621#606)
Joseph Doherty
2026-10-08 06:59:25 -04:00
6a5e804eca
Merge #593/#594: Ab.Transport offline/simulator test gaps, libplctag BadParam per-tag path, fixture suites skip when absent
Joseph Doherty
2026-10-08 06:58:44 -04:00
7e36842556
test(abcip): ab_server soak of ConnectionLease.ReleaseInBackground; fixture docs (#579, #593, #594)
Joseph Doherty
2026-10-08 06:58:25 -04:00
4f6231fa40
refactor(localdb): one replication predicate shared by table registration and the alarm drain gate (#603)
Joseph Doherty
2026-10-08 06:56:00 -04:00
db10e9d2e3
Merge #604: AdminUI stale-open guards on 5 modals, ValidationSummary, API-key delete confirm, ErrorBoundary
Joseph Doherty
2026-10-08 06:55:40 -04:00
9b159025f7
Merge #598/#621(client): AddComment API + CLI comment, Galaxy-era fallback reads removed, CLI test serialization, Client.Shared on async SDK APIs
Joseph Doherty
2026-10-08 06:54:22 -04:00
48bd266e19
feat(client): AddComment + comment CLI, drop Galaxy-era alarm fallback, serialize CLI tests (#598); Client.Shared off obsolete sync SDK APIs (#621)
Joseph Doherty
2026-10-08 06:53:57 -04:00
0fb194a096
Merge #608/#602/#596: stale WaveC TODOs resolved, FOCAS/TwinCAT factory logging, Modbus health asymmetry documented, AbCip browsePageDelayMs field, Device1 by-design
Joseph Doherty
2026-10-08 06:53:59 -04:00
53247a056a
fix(runtime): malformed artifact bytes on boot/restore are no answer (#601); evict telemetry snapshots on driver removal (#609)
Joseph Doherty
2026-10-08 06:53:45 -04:00
9c39f2b6c4
fix(drivers): ILoggerFactory on FOCAS+TwinCAT factories; replace stale TODO(v3 WaveC); AbCip browsePageDelayMs form field; document Device1 + Modbus health (#608#602#596)
Joseph Doherty
2026-10-08 06:53:38 -04:00
a6192159fe
Merge #618/#617/#620: fatal-log + exit on fail-start; ns=0 boot warning corrected; Health.Akka role match documented as accepted residual
Joseph Doherty
2026-10-08 06:53:12 -04:00
413bc5c04f
fix(host): fatal-log, flush and exit non-zero when the host fails to start (#618)
Joseph Doherty
2026-10-08 06:52:54 -04:00
6a6ac9a11f
fix(abcip): libplctag ErrorBadParam at tag create is a per-tag config error, no device backoff (#570, #593)
Joseph Doherty
2026-10-08 06:52:47 -04:00