A lost reply after MKD, RNTO, DELE, RMD, or upload completion still leaves Unavailable intact. Those commands may already have changed the server, while the ABI reserves outcome-unknown for post-dispatch mutation interruptions; callers may retry Unavailable and repeat a completed mutation. Map these uncertain mutation paths to OutcomeUnknown (and add regressions) while retaining Unavailable for pre-dispatch and read-only failures.
Propagate Cancelled (and other non-recoverable preflight errors) instead of reconnecting: a cancelled NOOP currently falls through to session.connect() and then executes the requested operation, which can perform a mutation after the host cancelled the invocation. Retry only the disconnect error(s) that are safe to recover from.
AI bot failed.
Profile: none · all profiles failed
✅ Approved
This thread-pool handoff violates the repository's event-driven-only/no-thread-model rule. Exercise the synchronous guest with a compliant transport, or add an explicit approved exception to the repository rules.
This second spawn_blocking repeats the prohibited thread-based test transport. Replace the fixture approach or document an approved exception to the repository rules.
LAN and loopback access still requires the connection's private-network grant. Restore that requirement here; otherwise this copied contract tells plugin authors that private hosts are reachable without consent.
The private-network grant applies to TCP too. Keep that constraint in the socket documentation so it matches HTTP and the host's enforcement.
UDP uses the same private-network grant as TCP and HTTP. Restore the grant rule here instead of reducing it to a port-only constraint.
LAN, link-local, and localhost addresses require the private-network grant. Update this guidance so users are prompted for the permission instead of being told none is needed.
🛑 Changes requested
This runs the guest on Tokio's blocking thread pool, contrary to the repository's event-driven/async-only rule; the same pattern is repeated in the other recovery test. Replace the native blocking socket test transport with an async one.
LAN and loopback access still requires Memona's Private network permission, so this contract comment incorrectly promises direct access. Restore that qualification here and in the README so users are not led to a setup that fails at runtime.