Commit Graph

  • bbf5f85c95 docs(claude): batch #626+ facts — re-init release, S7/TwinCAT/AbLegacy/OpcUaClient/MTConnect ports, condition child NodeIds (#629) Joseph Doherty 2026-10-08 15:25:19 -04:00
  • f4d513e111 test+docs(mtconnect): CONDITION alarm wire test, reinit barrier, docs (#626) Joseph Doherty 2026-10-08 15:13:30 -04:00
  • 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
  • ba62022e88 feat(opcuaclient): subscription tuning, OperationLimits chunking, diagnostics counters, revocation options, DiscoveryUrl (#273 #275 #276 #277 #278) Joseph Doherty 2026-10-08 14:40:20 -04:00
  • 18a20981a5 fix(drivers): #630 review - AbCip disposes alarm projection + clears tag tables, join not abortable by init token; S7 swaps Plc under _gate; doc rationale Joseph Doherty 2026-10-08 14:39:05 -04:00
  • ff055ebd79 fix(s7): numeric TSAP loads in form, shared TSAP conflict error, Test Connect read detects PUT/GET disabled, pin Int32 ms rounding (#632 #638) Joseph Doherty 2026-10-08 14:38:49 -04:00
  • d8f3dd7394 fix(ablegacy): review fixes - one family-aware address authority in Contracts, deploy gate + editor check, malformed address -> BadNodeIdUnknown warned once, probe normalised, octal/migration docs (#244 #245 #247) Joseph Doherty 2026-10-08 14:38:25 -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
  • b29642c5da Merge #602 stability: FOCAS/AbLegacy loop joins on shutdown, Postgres untyped string binds, MTConnect pump generation, MQTT birth-typed writes + QoS1 plain writes + claim backoff Joseph Doherty 2026-10-08 07:33:03 -04:00
  • babc452740 docs(drivers): MQTT write QoS/claim backoff and Sql Postgres untyped binds (#602) Joseph Doherty 2026-10-08 07:32:42 -04:00
  • 85491f1ebc Merge review R3 fixes: per-page interactive ErrorBoundary, DisposeBridge cancels on timeout, CSV commit refreshes after close, SecurityMode=None documented, browsePageDelayMs omit-by-default Joseph Doherty 2026-10-08 07:31:42 -04:00
  • c120794958 Merge review R2 fixes: Galaxy subscribe-once deadline returns BadTimeout, S7 probe honours backoff, write success clears only write-side Faulted, null array elements rejected, S7_SIM_ALLOW_WRITES opt-in Joseph Doherty 2026-10-08 07:31:36 -04:00
  • e77bca385a fix(galaxy,s7): R2 review minors — subscribe-once deadline, probe vs backoff, write-fault ownership, null array elements, write opt-in Joseph Doherty 2026-10-08 07:31:22 -04:00
  • 1475991fd6 fix(adminui,client): error boundary inside the interactive scope, stale-commit OnSaved, AbCip browse delay emit, DisposeBridge cancel (review R3) Joseph Doherty 2026-10-08 07:31:19 -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
  • ca0f1e7735 Merge #597/#599: real UnshelveTime, commented re-ack reports, native ack refused off-Primary, /alerts ack-path test; surgically-added raw nodes announced, equipment-with-references removal keeps references severed; Backing* parity guard Joseph Doherty 2026-10-08 07:12:59 -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
  • 80ed056d41 Merge #602(S7)/#610.2: S7 connect backoff, write-path worst-state-wins, Volatile health, factory logging, driver-side array writes Joseph Doherty 2026-10-08 07:01:32 -04:00
  • 3fb6549209 fix(review): resolve deferred code-review findings; S7.Cli verdict, browser CP release, MemberLeft/Exited/Downed, Sql Detach hoist (#625) Joseph Doherty 2026-10-08 06:59:53 -04:00
  • 5a5c80ee57 fix(drivers): join FOCAS and AbLegacy background loops on shutdown (#602 STAB-23/6) Joseph Doherty 2026-10-08 06:59:38 -04:00
  • 82372f1672 fix(s7): connect backoff, worst-state write health, Volatile health, array writes (#602, #610) Joseph Doherty 2026-10-08 06:59:29 -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
  • d3bca7afd4 fix(adminui): stale-open guards, validation summaries, key-delete confirm, error boundary (#604) Joseph Doherty 2026-10-08 06:55:23 -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
  • ba3d882897 Merge #605: Galaxy gateway seam hardening (advise-failure unmark, derived historian health, duplicate attributeRef surfaced, bounded subscribe-once read) Joseph Doherty 2026-10-08 06:52:49 -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