feat(mqtt): write-through (IWritable) — Sparkplug NCMD/DCMD + plain publish (design P3)
#508
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
MqttDriverships read/subscribe/discover only, so every MQTT node materializes read-only. This wasdeferred by design (see the plan's Deferred / out of scope section and design §3.7 / §10 P3), not missed —
this issue tracks it.
Shape, from the design:
read
.../stateand write.../set).exists:
SparkplugCodecencodes today for the rebirth NCMD path, so the write leg reuses it rather thanadding a second encoder.
Galaxy's fire-and-forget: assume Good, and let the broker's echoed value correct the node. Note this
interacts with write-outcome self-correction (#5): Galaxy can never surface a write failure for the same
reason, and MQTT will inherit that property.
WriteIdempotentdefault-off — a Sparkplug command is not necessarily idempotent, so the resiliencepipeline must not retry it by default.
Do not skip:
MqttDrivercurrently does not implementIWritableat all, which is what makes the nodesread-only. Adding the interface without the topic config would make nodes appear writable and silently
no-op — worse than the current honest read-only.
Acceptance. Write via both NodeIds (raw + UNS — v3 routes either to the same driver ref under the same
realm-qualified
WriteOperategate), verified live against the Mosquitto fixture for Plain and against theC# edge-node simulator for NCMD/DCMD.