Found while auditing clients against the conformance suite for #164.
1. Statement ID/text drift in conformance.toml
About 78 statements in crates/mqtt5-conformance/conformance.toml have an ID that does not match the OASIS text recorded for it (listed in known-text-drift.txt). This produced wrong IDs during the client audit. For example, the manifest files "Client without session state receiving Session Present=1 MUST close" under MQTT-3.2.2-5, but it is MQTT-3.2.2-4. The client tests in #164 took their IDs from mqtt-v5.0-statement-texts.txt to avoid this.
Fix: correct each drifted entry against the normative body (not Appendix B), and delist it from known-text-drift.txt as it is repaired. The manifest guards already fail on new drift and on stale list entries.
2. No client-side SUT mode
The suite only ever tests a broker. Client conformance is currently covered by standalone fake-broker tests:
crates/mqtt5/tests/conf_client_{a,b,c,d,quic,offline_queue}.rs (native)
crates/mqtt5-wasm/tests/conformance_client.rs (wasm)
Their coverage is invisible to the manifest (applies_to = "Client"/"Both" statements stay Untested) and they cannot be pointed at a third-party client.
Fix: add a client SUT mode. The suite plays a scripted raw-byte broker, and a small adapter per client drives connect, publish, subscribe and ack. Register the existing tests against it so the manifest tracks client coverage.
Found while auditing clients against the conformance suite for #164.
1. Statement ID/text drift in
conformance.tomlAbout 78 statements in
crates/mqtt5-conformance/conformance.tomlhave an ID that does not match the OASIS text recorded for it (listed inknown-text-drift.txt). This produced wrong IDs during the client audit. For example, the manifest files "Client without session state receiving Session Present=1 MUST close" under MQTT-3.2.2-5, but it is MQTT-3.2.2-4. The client tests in #164 took their IDs frommqtt-v5.0-statement-texts.txtto avoid this.Fix: correct each drifted entry against the normative body (not Appendix B), and delist it from
known-text-drift.txtas it is repaired. The manifest guards already fail on new drift and on stale list entries.2. No client-side SUT mode
The suite only ever tests a broker. Client conformance is currently covered by standalone fake-broker tests:
crates/mqtt5/tests/conf_client_{a,b,c,d,quic,offline_queue}.rs(native)crates/mqtt5-wasm/tests/conformance_client.rs(wasm)Their coverage is invisible to the manifest (
applies_to = "Client"/"Both"statements stay Untested) and they cannot be pointed at a third-party client.Fix: add a client SUT mode. The suite plays a scripted raw-byte broker, and a small adapter per client drives connect, publish, subscribe and ack. Register the existing tests against it so the manifest tracks client coverage.