Commit Graph

  • f2f1e4280c merge: Task 12 — native AbCip tag runtime, factory and device mapping Joseph Doherty 2026-10-07 16:58:37 -04:00
  • 5fd9ff941e feat(ablegacy): Transport option selects native or libplctag across driver, probe and CLI Joseph Doherty 2026-10-07 16:57:20 -04:00
  • e2e441d45e fix(abcip): native runtime write guards, same-width integer exemption, deferred path encoding (Task 12 review r1) Joseph Doherty 2026-10-07 16:56:30 -04:00
  • f2377251af merge: Task 14 — native AbLegacy tag runtime + factory Joseph Doherty 2026-10-07 16:54:40 -04:00
  • b249c15c1a fix(ablegacy): refuse status-bit writes, decode status bits as 0/1, reject over-long replies, global TNS Joseph Doherty 2026-10-07 16:54:18 -04:00
  • d0f89f9ec1 docs(plans): native AB transport tasks.json status sync Joseph Doherty 2026-10-07 16:49:32 -04:00
  • 33dbd342e5 fix(ab-transport): trim-only CIP path canonicalisation, observe abandoned shared opens, no Forward Open after dispose during connect Joseph Doherty 2026-10-07 16:49:19 -04:00
  • 25cc836865 feat(abcip): native tag runtime over the managed CIP transport, with returned-type checking Joseph Doherty 2026-10-07 16:47:48 -04:00
  • c31e6deebf feat(ablegacy): native PCCC tag runtime over the managed transport Joseph Doherty 2026-10-07 16:45:50 -04:00
  • a251954bf7 fix(ab-transport): harden Task 9 pool and connection (close chaining, uncancellable shared open, monotonic throttle, canonical CIP path, internal ctors, shared-pool logger) Joseph Doherty 2026-10-07 16:45:26 -04:00
  • b82fffd269 feat(ab-transport): per-device connection with routing modes, shared scheduler, keep-alive and Forward Open throttle Joseph Doherty 2026-10-07 16:35:11 -04:00
  • d7145ddfa5 docs(plans): native AB transport tasks.json status sync Joseph Doherty 2026-10-07 16:23:09 -04:00
  • ba73f48f9c merge: Task 10 — RequestScheduler (MSP coalescing) + LogixTagClient fragment loops Joseph Doherty 2026-10-07 16:23:08 -04:00
  • 5211975067 fix(ab-transport): harden Task 10 scheduler and tag client (dispose faults, pump guard, read cap, write validation, 8-byte wide-struct alignment) Joseph Doherty 2026-10-07 16:22:40 -04:00
  • 1c7fd5d5de feat(ab-transport): MSP-coalescing request scheduler and fragmented Logix read/write Joseph Doherty 2026-10-07 16:15:05 -04:00
  • 2f9c7eff58 merge: Task 5 — EtherNet/IP encapsulation codec + single-flight client Joseph Doherty 2026-10-07 16:14:02 -04:00
  • 4c1c362b0e feat(ab-transport): EtherNet/IP encapsulation codec and single-flight session client Joseph Doherty 2026-10-07 16:09:06 -04:00
  • 7c81844be5 merge: Task 8 — PCCC codec (Execute PCCC, SLC typed, PLC-5 range read) Joseph Doherty 2026-10-07 16:07:32 -04:00
  • 5eb018937b fix(ab-transport): PCCC review r1 - UA bit, bit limits, stricter ParseReply, non-const verified flags Joseph Doherty 2026-10-07 16:07:13 -04:00
  • 110fb861e9 merge: Task 7 — CIP service codecs (CM, MSP, Logix, symbol, template) Joseph Doherty 2026-10-07 16:07:07 -04:00
  • 6d16765804 fix(ab-transport): harden Task 7 codecs (read status, 32-bit start instance, empty-More, size range) Joseph Doherty 2026-10-07 16:06:49 -04:00
  • 13d631d856 feat(ab-transport): PCCC Execute-PCCC codec for SLC/MicroLogix typed logical and PLC-5 range read Joseph Doherty 2026-10-07 16:03:43 -04:00
  • 5f86b370f7 feat(ab-transport): Connection Manager, MSP, Logix read/write, symbol and template service codecs Joseph Doherty 2026-10-07 16:03:41 -04:00
  • ec1a39ff6e merge: Task 4 — golden libplctag<->ab_server frame captures Joseph Doherty 2026-10-07 15:59:39 -04:00
  • 617b9ba40c docs(plans): native AB transport tasks.json status sync Joseph Doherty 2026-10-07 15:59:39 -04:00
  • b085360454 test(ab-transport): non-zero array/BOOL captures, committed capture client, sim quirks Joseph Doherty 2026-10-07 15:58:05 -04:00
  • 1201d5fcfb test(ab-transport): golden libplctag<->ab_server frame captures for Logix, Micro800 and PCCC Joseph Doherty 2026-10-07 15:50:00 -04:00
  • de14d354e6 fix(ab-transport): widen libplctag guard regex to catch aliases and static usings Joseph Doherty 2026-10-07 15:49:24 -04:00
  • 29f456c3ef test(ab-transport): guard libplctag confinement to its adapters (falsified by adding using libplctag to AbCipDriver.cs) Joseph Doherty 2026-10-07 15:47:52 -04:00
  • d602a08925 merge: Task 6 — CIP path encoding + Logix type codes Joseph Doherty 2026-10-07 15:46:31 -04:00
  • 0d2f27bb1d merge: Task 3 — AbLegacy seam decoupled from libplctag types Joseph Doherty 2026-10-07 15:46:31 -04:00
  • 62abdb4c5b merge: Task 2 — AbCip seam decoupled from libplctag types Joseph Doherty 2026-10-07 15:46:31 -04:00
  • 52505678d6 docs(plans): native AB transport tasks.json status sync Joseph Doherty 2026-10-07 15:46:31 -04:00
  • 10c909cbc2 fix(abcip): translate decode/encode-time libplctag exceptions; doc and probe-test cleanups Joseph Doherty 2026-10-07 15:44:02 -04:00
  • a57d61c484 refactor(abcip): confine libplctag to its adapters behind AbStatus/AbTransportException Joseph Doherty 2026-10-07 15:40:07 -04:00
  • 1affb4b613 refactor(ablegacy): confine libplctag to its adapter behind AbStatus/AbTransportException Joseph Doherty 2026-10-07 15:39:01 -04:00
  • f2f1ec2585 feat(ab-transport): CIP route/symbolic path encoders and Logix type codes Joseph Doherty 2026-10-07 15:38:04 -04:00
  • a0897fda96 feat(ab-transport): project skeleton with AbStatus, CIP reply parsing and the ICipChannel seam Joseph Doherty 2026-10-07 15:34:34 -04:00
  • b6f64c369a docs(plans): sync native AB transport plan + tasks.json after task transcription fixes Joseph Doherty 2026-10-07 15:24:25 -04:00
  • d4808fa948 docs(plans): fold Fable review into the native AB transport plan; add tasks.json Joseph Doherty 2026-10-07 15:17:07 -04:00
  • f3e92fec27 Merge TwinCAT native array subscriptions (live-validated on the Elma PLCs) Joseph Doherty 2026-10-07 15:08:17 -04:00
  • 6106946504 docs(plans): native AB transport implementation plan (draft, pre-review) Joseph Doherty 2026-10-07 14:59:26 -04:00
  • 1982af8155 docs(twincat): native array notifications, sub-range / size-cap rules, live TC2 gate record Joseph Doherty 2026-10-07 14:56:03 -04:00
  • 313946e6ea fix(twincat): refuse a scalar tag over a PLC array on the read path too Joseph Doherty 2026-10-07 14:50:39 -04:00
  • 1e68121b17 fix(twincat): register a bit-indexed BOOL notification on its parent word (live TC2 gate) Joseph Doherty 2026-10-07 14:50:39 -04:00
  • dcc35f3481 feat(twincat): native ADS notifications for array tags, decoded from raw bytes Joseph Doherty 2026-10-07 14:45:35 -04:00
  • 45b6062de5 docs(plans): native .NET EtherNet/IP+CIP+PCCC transport to replace libplctag under AbCip/AbLegacy — design Joseph Doherty 2026-10-07 14:35:14 -04:00
  • 9dbaa6d758 Merge TwinCAT fixes ported from ignitionoee + live-validated on the Elma PLCs Joseph Doherty 2026-10-07 14:28:01 -04:00
  • 8060cfd2a5 fix(twincat): size strings by the resolved type and refuse VAR_IN_OUT references (live TC2 gate) Joseph Doherty 2026-10-07 14:27:22 -04:00
  • 6cc40963b4 Merge AbCip fixes found against real CompactLogix presses Joseph Doherty 2026-10-07 14:17:58 -04:00
  • 58c61c1610 Merge FOCAS wire-decode corrections ported from ignitionoee Joseph Doherty 2026-10-07 14:17:58 -04:00
  • cc876bdf43 docs(abcip): record the 2026-10-07 real-controller verification and the browse/read behaviour it changed Joseph Doherty 2026-10-07 14:17:19 -04:00
  • e3d6b76ede fix(abcip): a scalar read whose width disagrees with its authored type is BadTypeMismatch Joseph Doherty 2026-10-07 14:15:19 -04:00
  • 2fc1b488fe docs(focas): record the wire decode corrections ported from the ignitionoee driver Joseph Doherty 2026-10-07 14:13:00 -04:00
  • 9b51dbca60 test(focas): bring the vendored focas-mock onto the real 31i-B wire shapes; integration tests follow Joseph Doherty 2026-10-07 14:12:06 -04:00
  • 68cf3ae8b7 fix(abcip): stride user-string arrays by the read buffer, not the built-in STRING size Joseph Doherty 2026-10-07 14:11:08 -04:00
  • 0ca56cb1f6 fix(abcip): an unknown tag no longer throttles its whole device or reads as a comms error Joseph Doherty 2026-10-07 14:09:43 -04:00
  • 26b512adba fix(focas): a missing O-number or refused program sub-read goes Bad, not a Good 0 Joseph Doherty 2026-10-07 14:08:26 -04:00
  • a0a024c80b fix(abcip): accept module-defined I/O tag paths (Local:1:I.Data, ABB_OmniCore:I.X) Joseph Doherty 2026-10-07 14:07:49 -04:00
  • 75754478ac docs(twincat): TC2 leading-dot globals, port 801 / no AddRoute, string + declared-type rules, native arrays refused Joseph Doherty 2026-10-07 14:07:35 -04:00
  • 1dba46bd7b fix(focas): decode servo/spindle meters by their base/exponent envelope; MaxRpm -> MotorSpeedPct Joseph Doherty 2026-10-07 14:07:22 -04:00
  • 28bbb5e5e2 fix(abcip): browse program-scoped tags and surface symbol array dimensions Joseph Doherty 2026-10-07 14:06:48 -04:00
  • 83a314e734 fix(twincat): string subscriptions, Windows-1252 STRING decode, and declared-type kind checks (ignitionoee 0.19.2-0.19.4) Joseph Doherty 2026-10-07 14:05:46 -04:00
  • 3b48e05e9a fix(abcip): decode real @udt template buffers; browse STRINGs as String, hide BOOL hosts Joseph Doherty 2026-10-07 14:04:11 -04:00
  • 69e0a622f3 fix(focas): scale positions from each cnc_rddynamic2 block; delete the fabricated cnc_getfigure Joseph Doherty 2026-10-07 14:03:08 -04:00
  • 1a74c3c2e0 fix(twincat): map TwinCAT 2 ADS base-type names in symbol browse Joseph Doherty 2026-10-07 13:59:40 -04:00
  • 9460da513c fix(focas): decode all four bytes of an axis/spindle name record, up to the first NUL Joseph Doherty 2026-10-07 13:58:40 -04:00
  • b7b754fd98 fix(twincat): accept TwinCAT 2 leading-dot globals in TwinCATSymbolPath (ignitionoee 0.19.1) Joseph Doherty 2026-10-07 13:58:40 -04:00
  • 665ecd55c2 fix(focas): decode cnc_rdmacro dec_val at offset 6; vacant/fractional macros go Bad Joseph Doherty 2026-10-07 13:57:11 -04:00
  • e3d7a8f071 docs: note that psbridge and winrm remote access to the wonder boxes are disabled (2026-09-11) Joseph Doherty 2026-09-11 09:05:33 -04:00
  • b8b4c18f54 chore(deps): bump Auth 0.2.1->0.3.0, LocalDb 0.2.1->0.3.4, MxGateway.Client/Contracts 0.2.0->0.2.1 Joseph Doherty 2026-09-03 11:23:21 -04:00
  • 2c792613bf docs(claude): point sister-project-history detail to scadaproj skill dir Joseph Doherty 2026-09-03 10:58:37 -04:00
  • fcbfb56181 docs(archreview): tranche-1 capstone — five live gates PASS (S18 re-gated after the hard-deadline fix); follow-ups surfaced by the gates Joseph Doherty 2026-08-20 14:34:16 -04:00
  • 12faa423d0 docs(plans): R3-02 T19 live gate — PASS on docker-dev at 97cb5cefb6d2: a constant Modbus register (HR5=5) re-publishes 5 Good on raw AND its UNS mirror after a 2-min fixture outage with no value change (0x80050000 → BadNoCommunication → Good), calc follows input quality with an unchanged value, comms_latched_refs 0, deadband-1000 and operator-Restart legs pass; first cycle was vacuous (fixture re-seeds registers on restart) and re-run; wire never carries a value with a Bad status (SDK NodeState.ReadAttribute); MQTT leg not run Joseph Doherty 2026-08-20 14:33:38 -04:00
  • 1234d869c0 docs(plans): R3-05 S18 re-gate — PASS on docker-dev at 97cb5cefb6d2 (master b9b3cf9a): with SQL paused a keyed activation is denied in 2.42 s, the 2000 ms Warning lands at the deadline not at unpause, the open subscription's max gap is 1.00 s (was 57 s), timeout counter 1, no-activation control clean; T11 done Joseph Doherty 2026-08-20 14:32:30 -04:00
  • b9b3cf9a58 docs(plans): R3-04 live gate — PASS on docker-dev (pre-fix control at 7c77a8c7: Cluster:Roles-only site-b-2 booted roles=[] and timed out the fleet deploy 5/6, miscased site-a-2 ServiceLevel 0; post-fix: six banners source=Configured, deploy Sealed 6/6 in 224 ms, one Primary + standby per pair, disagreement Warning fires, unknown role refuses to start) Joseph Doherty 2026-08-20 13:44:31 -04:00
  • f665e8b87e Merge branch 'fix/r3-05-s18-hard-deadline' — R3-05 S18 live-gate failure: the API-key store deadline is a hard Task.WhenAny race (SqlClient ignores cooperative cancellation on a black-holed socket: 42.9 s activation hang, 57 s stall of open subscriptions); compose wires OTOPCUA_ACL_ENABLED to the centrals Joseph Doherty 2026-08-20 13:29:59 -04:00
  • cde5cdfd9f fix(docker-dev): wire OTOPCUA_ACL_ENABLED to the centrals; record the S18 follow-up Joseph Doherty 2026-08-20 13:29:30 -04:00
  • c657b2e03d fix(acl): make the API-key store deadline a HARD race (R3-05 S18 live-gate failure) Joseph Doherty 2026-08-20 13:29:21 -04:00
  • 9242630c98 docs(plans): R3-05 live gate — S19 PASS (BadUserAccessDenied 0.09 s after ExpiresUtc, no deploy; 1 h negative control clean), S18 FAIL (paused SQL: keyed activation hung 42 s past the 2 s bound and stalled an open subscription 57 s; cooperative token not honoured by SqlClient) Joseph Doherty 2026-08-20 13:21:21 -04:00
  • cb378e7da2 docs(plans): R3-03 live gate — PASS on docker-dev (restart re-subscribe resumes values in 0.36 s; pre-fix control at 7c77a8c7 silent for 155 s; F1 widened alarm set re-subscribes 1→2; watchdog no re-trip post-reconnect) Joseph Doherty 2026-08-20 13:20:29 -04:00
  • f2eb375e81 docs(archreview): STATUS — round-3 tranche 1 executed + merged; per-plan review verdicts and merge hashes Joseph Doherty 2026-08-20 12:43:35 -04:00
  • 2b3e1f1549 docs(plans): R3-01 live gate — PASS on docker-dev with DisableLogin=false (control failed first) Joseph Doherty 2026-08-20 12:41:55 -04:00
  • e280db3753 fix(runtime): comms_latched_refs meter tag key 'driver' -> 'driver_instance' — the R3-04 bare-role-literal guard caught the R3-02 tag key at merge (cross-branch collision; neither branch saw the other) Joseph Doherty 2026-08-20 11:55:16 -04:00
  • 157d01c2c2 Merge branch 'fix/r3-02-stale-good-family' — R3-02: one quality contract at four seams — comms loss marks raw+UNS value variables BadNoCommunication (WriteStatuses sink member, recovery audit), Calculation + VT hold on Bad / worst-of sub-code / (value,status) dedup, MQTT initial push + ConnectionLost stale, Sparkplug birth replay (archreview 03/S15, 05/STAB-19, 05/STAB-18, 02/S14) Joseph Doherty 2026-08-20 11:49:06 -04:00
  • 886082fec7 fix(review): calc ReadOne reports an inputs-Bad publish; VT inputs-bad counter ticks only on a real report Joseph Doherty 2026-08-20 11:48:41 -04:00
  • 74794f4365 docs(archreview): R3-02 execution notes — T18 sweep + outstanding live gate Joseph Doherty 2026-08-20 11:34:18 -04:00
  • 93704f64ab docs(archreview): R3-02 status Joseph Doherty 2026-08-20 11:33:56 -04:00
  • 62c5bc3aad fix(runtime): a stopping driver child announces comms loss so restart/respawn latches its nodes Bad Joseph Doherty 2026-08-20 11:07:02 -04:00
  • f1b976f5e2 Merge branch 'fix/r3-04-one-role-authority' — R3-04: EffectiveRoles is the one role authority (Cluster:Roles wins over OTOPCUA_ROLES, normalised, validated, fail-start on unknown/overlay-changed roles); Program.cs + all four validators consume it; case-insensitive gossip predicates; source-scan guard (archreview 01/S-12 = 03/C5, 01/C-9) Joseph Doherty 2026-08-20 11:05:09 -04:00
  • e6a36f4ba8 docs: ServiceHosting.md overlay-filename casing note; R3-04 review outcome (both FIX-FIRST items resolved) Joseph Doherty 2026-08-20 11:03:24 -04:00
  • 1d251cc037 Merge branch 'master' into fix/r3-02-stale-good-family Joseph Doherty 2026-08-20 11:03:02 -04:00
  • af39e61638 fix(cluster): T7's post-overlay guard was structurally unreachable — compare live Cluster:Roles, not the PostConfigured options.Roles (review finding, R3-04) Joseph Doherty 2026-08-20 11:01:33 -04:00
  • 5dc8d34472 docs: the stale-Good quality contract, stated once (R3-02) Joseph Doherty 2026-08-20 10:56:16 -04:00
  • e3a72dc385 fix(runtime): virtual tags hold on Bad inputs and inherit the worst input status (archreview 02/S14) Joseph Doherty 2026-08-20 10:53:26 -04:00
  • 3648d3c129 fix(cluster): ClusterRoleInfo._roleLeaders stays Ordinal — Akka tracks role-leadership per exact gossiped role string (review finding, R3-04) Joseph Doherty 2026-08-20 10:52:51 -04:00
  • cc9b845f99 feat(engines): IVirtualTagEvaluator snapshot overload; Roslyn read cache stops fabricating Good (02/S14) Joseph Doherty 2026-08-20 10:45:11 -04:00
  • d79d51dd4f Merge branch 'fix/r3-01-mesh-grpc-allowanonymous' — R3-01: mesh gRPC + LocalDb sync endpoints opt out of the AdminUI cookie FallbackPolicy (PSK interceptors are the gate); real-auth-stack boundary tests + map-convention guard; rig DisableLogin parameterised (archreview 03/S14 Critical) Joseph Doherty 2026-08-20 10:43:49 -04:00
  • c8cf5c8032 test(host): the R3-01 falsifiability control asserts the cookie-challenge signature (a bare Exception was satisfiable by an anonymised endpoint too); docs wording Joseph Doherty 2026-08-20 10:43:49 -04:00
  • 60e5b40228 fix(calculation): read cache carries real input status + timestamps Joseph Doherty 2026-08-20 10:40:15 -04:00