-
115a43dd47
feat(mtconnect): typed AdminUI tag-config editor + browse round-trip (Task 18 Part A)
Joseph Doherty
2026-07-24 18:11:37 -04:00
-
51c8c7f30b
fix(mtconnect): bind RawTags and key the data plane by RawPath
Joseph Doherty
2026-07-24 18:01:18 -04:00
-
b0046d6959
feat(mtconnect): typed AdminUI tag-config model (Task 17)
Joseph Doherty
2026-07-24 17:56:22 -04:00
-
c232a3ce67
fix(mtconnect): cap CancelAfter overflow + stop leaking ex.Message in probe fallback (review follow-up)
Joseph Doherty
2026-07-24 17:49:23 -04:00
-
a107a1a8b9
feat(mtconnect): host registration + DriverTypeNames const + guard parity (Task 16)
Joseph Doherty
2026-07-24 17:43:27 -04:00
-
ba89d6d0ff
feat(mtconnect): driver factory delegating to the single config parser (Task 15)
Joseph Doherty
2026-07-24 17:26:15 -04:00
-
23cd47d54b
feat(mtconnect): IDriverProbe one-shot /probe reachability (Task 14)
Joseph Doherty
2026-07-24 17:25:27 -04:00
-
dfbcb0e7f0
fix(mtconnect): close the silent-refusal + teardown-wedge defects in the pump (Task 11 review)
Joseph Doherty
2026-07-24 17:16:13 -04:00
-
fa0e40796f
feat(mtconnect): host-connectivity probe + instanceId rediscover (Task 13)
Joseph Doherty
2026-07-24 16:56:31 -04:00
-
13dd9fcd70
feat(mtconnect): ITagDiscovery streams tree + SupportsOnlineDiscovery opt-in (Task 12)
Joseph Doherty
2026-07-24 16:41:21 -04:00
-
9a67ed918a
feat(mtconnect): ISubscribable /sample pump + ring-buffer re-baseline (Task 11)
Joseph Doherty
2026-07-24 16:29:17 -04:00
-
a127954cab
fix(mtconnect): review remediation for the driver lifecycle (Task 9)
Joseph Doherty
2026-07-24 15:52:29 -04:00
-
1bfc1722b3
feat(mtconnect): IReadable via /current, ordered per-ref snapshots (Task 10)
Joseph Doherty
2026-07-24 15:38:55 -04:00
-
4fe0af3693
feat(mtconnect): driver shell IDriver lifecycle over agent-client seam (Task 9)
Joseph Doherty
2026-07-24 15:26:34 -04:00
-
908bd7ba4a
fix(mtconnect): deterministic concurrency test + DATA_SET -> BadNotSupported
Joseph Doherty
2026-07-24 15:09:42 -04:00
-
5ba9f1be6f
fix(mtconnect): make a /sample stream end loud, and correct the gap contract (Task 7 review)
Joseph Doherty
2026-07-24 15:01:31 -04:00
-
ac0a284055
feat(mtconnect): observation index + UNAVAILABLE->BadNoCommunication (Task 8)
Joseph Doherty
2026-07-24 14:50:43 -04:00
-
cf43f8d0ab
feat(mtconnect): current/sample parse + sequence-gap detection (Task 7)
Joseph Doherty
2026-07-24 14:32:36 -04:00
-
d3aaa4a411
docs(mtconnect): correct the Task 0 decision — TrakHound cannot parse XML as pinned
Joseph Doherty
2026-07-24 14:11:40 -04:00
-
1990d21733
feat(mtconnect): agent client /probe parse to device model (Task 6)
Joseph Doherty
2026-07-24 14:08:54 -04:00
-
b13cf5c6e8
fix(mtconnect): options carry the authored tag definitions (Task 2 follow-up)
Joseph Doherty
2026-07-24 13:57:58 -04:00
-
79e30d1ead
fix(mtconnect): infer numeric EVENT types from the probe's UPPER_SNAKE spelling (Task 3 follow-up)
Joseph Doherty
2026-07-24 13:57:13 -04:00
-
3ca8ddf6f7
test(mtconnect): canned probe/current/sample XML fixtures incl. forced-gap (Task 4)
Joseph Doherty
2026-07-24 13:53:15 -04:00
-
c0729ae5c0
feat(mtconnect): pure data-type inference table + golden test (Task 3)
Joseph Doherty
2026-07-24 13:53:13 -04:00
-
992ffe5620
feat(mtconnect): IMTConnectAgentClient seam + neutral parse DTOs (Task 5)
Joseph Doherty
2026-07-24 13:51:20 -04:00
-
18742ea92b
feat(mtconnect): driver options + tag definition records (Task 2)
Joseph Doherty
2026-07-24 13:50:07 -04:00
-
e36b920113
build(mtconnect): scaffold Contracts+Driver+Tests projects, add to slnx (Task 1)
Joseph Doherty
2026-07-24 13:46:46 -04:00
-
3b92b7cc83
docs(mtconnect): record TrakHound-vs-hand-rolled client decision (Task 0)
Joseph Doherty
2026-07-24 13:43:23 -04:00
-
-
a0b5095b3b
docs(drivers): un-stale the MQTT README rows + track every known gap as an issue
Joseph Doherty
2026-07-27 13:52:08 -04:00
-
394558e6c2
docs: the umbrella-index edit belongs on scadaproj's main, and must be pushed
Joseph Doherty
2026-07-27 13:36:31 -04:00
-
c3a2b0f773
Merge branch 'feat/mqtt-sparkplug-driver'
Joseph Doherty
2026-07-27 13:31:39 -04:00
-
-
123ddc3f40
fix(scripteditor): complete + hover absolute RawPaths (#490)
Joseph Doherty
2026-07-26 11:08:11 -04:00
-
0f38f48679
merge: Modbus RTU-over-TCP transport (#495)
Joseph Doherty
2026-07-26 10:58:51 -04:00
-
-
0e93587b1c
merge: test-correctness, config-secret and AdminUI fixes (#503 #501 #493 #499 #488 #505)
Joseph Doherty
2026-07-26 10:51:43 -04:00
-
-
4cc0215bb4
fix(adminui): the cluster-node editor was dead — 500 on load, silent no-op on save
Joseph Doherty
2026-07-26 10:42:04 -04:00
-
4b9bcddbcc
feat(drivers): periodic reconcile of desired vs actual subscriptions (#488)
Joseph Doherty
2026-07-26 10:30:19 -04:00
-
2193d9f2e4
fix(config): refuse to store a Sql credential in a node config override (#499)
Joseph Doherty
2026-07-26 10:30:04 -04:00
-
8b7ea3213d
fix(rig,docs): backfill ClusterNode.GrpcPort and document the upgrade step (#493)
Joseph Doherty
2026-07-26 10:29:51 -04:00
-
240d7aa8aa
fix(test): give the three absence assertions a positive control (#501)
Joseph Doherty
2026-07-26 10:29:41 -04:00
-
95295210b0
fix(test): scope the EventPump counter capture to its own pump (#503)
Joseph Doherty
2026-07-26 10:29:27 -04:00
-
-
e3155fbbf5
merge: never slice a DB-sourced string with the range operator (#504)
Joseph Doherty
2026-07-26 09:43:55 -04:00
-
-
47d148daf9
fix(adminui): never slice a DB-sourced string with the range operator (#504)
Joseph Doherty
2026-07-26 09:43:48 -04:00
-
-
755ae1aa3f
merge: re-assert non-normal scripted-alarm conditions after a (re)load (#487)
Joseph Doherty
2026-07-26 09:18:23 -04:00
-
-
549c656489
fix(alarms): re-assert non-normal scripted-alarm conditions after a (re)load (#487)
Joseph Doherty
2026-07-26 09:06:39 -04:00
-
-
28c2866710
merge: Sql driver follow-ups #496/#497/#498 + the Runtime.Tests flake #500 (fix/sql-driver-followups)
Joseph Doherty
2026-07-25 22:27:26 -04:00
-
-
154171f48c
test(runtime): fix the intermittent Runtime.Tests failure — 4 ordering/logic defects + the presence-budget class (#500)
Joseph Doherty
2026-07-25 20:20:06 -04:00
-
4dc2ad8084
feat(sql): implement the design §8.1 catalog identifier-validation gate (#496)
Joseph Doherty
2026-07-25 16:07:53 -04:00
-
1919a8e538
feat(config): reject a persisted Sql connectionString at the deploy gate (#498)
Joseph Doherty
2026-07-25 15:37:48 -04:00
-
b95b99ba8e
fix(drivers): correct 16 wrong OPC UA status-code constants + guard them by reflection (#497)
Joseph Doherty
2026-07-25 15:34:31 -04:00
-
-
ee12568cab
refactor(modbus-rtu): distinct CrcMismatch/UnitMismatch desync reasons
Joseph Doherty
2026-07-25 15:13:48 -04:00
-
d5bd4226ee
docs(mqtt): Sparkplug P2 live-verified; MQTT driver complete
Joseph Doherty
2026-07-25 01:11:56 -04:00
-
8d9155682d
fix(mqtt): browse-commit writes a bindable address + a Request-rebirth affordance
Joseph Doherty
2026-07-24 23:43:07 -04:00
-
767e7031b3
test(mqtt): C# Sparkplug edge-node simulator + §3.6 live matrix
Joseph Doherty
2026-07-24 23:18:08 -04:00
-
64ec7aa43a
feat(mqtt): Sparkplug birth-driven browser tree + scoped Request-rebirth action
Joseph Doherty
2026-07-24 22:51:16 -04:00
-
6d7a458c4d
fix(mqtt): reset Sparkplug ingest state at every session/authoring seam
Joseph Doherty
2026-07-24 22:44:43 -04:00
-
cd0157a3b8
feat(mqtt): typed tag editor Sparkplug mode + validation
Joseph Doherty
2026-07-24 22:43:44 -04:00
-
6917d8805d
feat(mqtt): Sparkplug UntilStable discovery + rediscover-on-DBIRTH
Joseph Doherty
2026-07-24 22:28:08 -04:00
-
8538fb798b
feat(mqtt): Sparkplug ingest state machine (birth/alias/seq/rebirth/death→stale)
Joseph Doherty
2026-07-24 22:11:41 -04:00
-
31a98a1bf5
feat(mqtt): RebirthRequester NCMD encode
Joseph Doherty
2026-07-24 21:40:43 -04:00
-
3fdf24659f
fix(mqtt): AcceptBirth is NBIRTH-only -- a DBIRTH routed there wipes bdSeq
Joseph Doherty
2026-07-24 21:32:44 -04:00
-
e4e313cf1c
feat(mqtt): SequenceTracker seq-gap + bdSeq death-tie
Joseph Doherty
2026-07-24 21:29:08 -04:00
-
2afef00eaa
feat(mqtt): AliasTable/BirthCache — bind-by-name, rebuild-per-birth
Joseph Doherty
2026-07-24 21:28:41 -04:00
-
b245f380b1
feat(mqtt): Sparkplug topic parse/format + datatype map
Joseph Doherty
2026-07-24 21:16:02 -04:00
-
c164ec3da1
fix(mqtt): SparkplugCodec's never-throw guard must span the projection too
Joseph Doherty
2026-07-24 21:10:20 -04:00
-
2589774480
feat(mqtt): SparkplugCodec decode + golden payload vectors
Joseph Doherty
2026-07-24 21:09:14 -04:00
-
4ad540376d
merge: SQL poll driver (feat/sql-poll-driver)
Joseph Doherty
2026-07-24 21:01:26 -04:00
-
-
57a5bb3c60
chore(docker-dev): wire Sql__ConnectionStrings__DevSql for the Sql driver live gate
Joseph Doherty
2026-07-24 20:59:27 -04:00
-
163dd7ab5c
fix(mqtt): unbreak the .Contracts csproj -- '--' is illegal in an XML comment
Joseph Doherty
2026-07-24 20:56:20 -04:00
-
1ae26675ac
feat(mqtt): vendor Tahu sparkplug_b.proto + Grpc.Tools codegen
Joseph Doherty
2026-07-24 20:54:23 -04:00
-
92ba120964
feat(mqtt): MqttDriverForm + MqttDeviceForm — the driver/device config forms P1 omitted
Joseph Doherty
2026-07-24 20:41:48 -04:00
-
b295b24419
feat(adminui): author + configure the Sql driver in /raw
Joseph Doherty
2026-07-24 20:41:33 -04:00
-
07a4a5ff5e
docs(mqtt): P1 plain-MQTT milestone live-verified; endpoint recorded
Joseph Doherty
2026-07-24 18:44:43 -04:00
-
2409d05a28
fix(mqtt): a broker-refused CONNECT no longer reports a Healthy driver
Joseph Doherty
2026-07-24 18:02:00 -04:00
-
033b3700c4
test(mqtt): Mosquitto TLS+auth fixture + env-gated plain live suite
Joseph Doherty
2026-07-24 17:49:14 -04:00
-
ff62b62a55
refactor(mqtt): accept a blank jsonPath; guide with a seeded "$" instead
Joseph Doherty
2026-07-24 17:37:13 -04:00
-
a13ae926a8
fix(mqtt): gate DisposeAsync against in-flight lifecycle ops (C1) + rebuild-branch tests (I1)
Joseph Doherty
2026-07-24 17:31:04 -04:00
-
f79d13e2d8
feat(mqtt): factory + DriverTypeNames.Mqtt + host factory/probe registration
Joseph Doherty
2026-07-24 17:24:13 -04:00
-
36abd871a1
feat(mqtt): typed tag editor + validator (plain mode)
Joseph Doherty
2026-07-24 17:17:37 -04:00
-
420692b6e5
feat(mqtt): MqttDriver shell — lifecycle + authored-only discovery (Once)
Joseph Doherty
2026-07-24 17:06:39 -04:00
-
211c6ea6d6
feat(mqtt): register MqttDriverBrowser (bespoke-first for Mqtt)
Joseph Doherty
2026-07-24 16:48:55 -04:00
-
a856d61510
feat(mqtt): MqttDriverProbe CONNECT handshake
Joseph Doherty
2026-07-24 16:43:36 -04:00
-
abf3116bd4
fix(mqtt): wildcard tags went dark on reconnect — index by filter, not topic
Joseph Doherty
2026-07-24 16:40:31 -04:00
-
4ec01bdfc1
fix(mqtt): bound browse observation against a chatty or malicious broker
Joseph Doherty
2026-07-24 16:30:45 -04:00
-
d421487bcd
feat(mqtt): plain subscribe→OnDataChange with retained seed + ref resolver
Joseph Doherty
2026-07-24 16:10:07 -04:00
-
e27eb77187
docs(modbus-rtu): record Wave-1 RTU-over-TCP live /run gate result (PASSED)
Joseph Doherty
2026-07-24 15:50:10 -04:00
-
f2a9ee5d93
docs(mqtt): flag the Last-Will landmine at the browse-options seam
Joseph Doherty
2026-07-24 15:46:23 -04:00
-
7980b34692
feat(mqtt): bespoke passive #-observation browser (plain)
Joseph Doherty
2026-07-24 15:45:32 -04:00
-
585f827ef3
fix(sql): close the residual credential leak in HandlePollError
Joseph Doherty
2026-07-24 15:39:14 -04:00
-
be1df2d1e5
feat(sql): SqlTagConfigEditor razor shell
Joseph Doherty
2026-07-24 15:35:25 -04:00
-
9b5a96876e
feat(sql): register Sql factory + probe in Host, add DriverTypeNames.Sql
Joseph Doherty
2026-07-24 15:35:09 -04:00
-
fcc7ed698e
harden(modbus-rtu): factory throws on unknown transport + document RTU FC-shape assumption
Joseph Doherty
2026-07-24 15:33:49 -04:00
-
a6370a26f8
fix(mqtt): make connect idempotent, bound the reconnect callback, stop State lying
Joseph Doherty
2026-07-24 15:32:41 -04:00
-
898c7365c4
test(sql): close the blackhole gate's leaked-pause race + bound the shell command
Joseph Doherty
2026-07-24 15:29:21 -04:00
-
37f444b99c
fix(sql): stop leaking provider exception text; de-dup health classification; guard Faulted
Joseph Doherty
2026-07-24 15:28:17 -04:00
-
443b718158
feat(sql): typed AdminUI Sql tag-config model + validator (string enums)
Joseph Doherty
2026-07-24 15:27:14 -04:00
-
02f2dafe2a
test(sql): correct the cancelled-token test's overclaim
Joseph Doherty
2026-07-24 15:20:59 -04:00
-
10a6a37ca5
test(sql): blackhole/timeout live-gate on a dedicated mssql container
Joseph Doherty
2026-07-24 15:20:24 -04:00
-
a55b7e51ca
test(sql): injection regression — bind values, reject unknown identifiers
Joseph Doherty
2026-07-24 15:13:32 -04:00
-
14fe89c505
feat(sql): AdminUI browser DI + Sql address picker body
Joseph Doherty
2026-07-24 15:11:56 -04:00
-
4c716242ac
feat(sql): SqlDriverProbe SELECT-1 liveness check
Joseph Doherty
2026-07-24 15:11:32 -04:00