Skip to content

rustsdcmcp v0.1.0 lab prerelease 3

Pre-release
Pre-release

Choose a tag to compare

@fastrevmd-lab fastrevmd-lab released this 05 Aug 18:19
· 169 commits to main since this release
37db74a

Lab-only prerelease. Not a public release — v0.1.0 remains blocked until
one coherent upstream mecmcp release replaces all 59 compatibility ledger
entries.

Built from 37db74a5a0b959444d335793297d3f7b07224009 with all five shared
mecmcp crates pinned to changeset-v0.3.7.

What changed since lab.2

Nine PRs from a review pass over the initial implementation. Three were
security-relevant:

  • Listener authentication hole (#5) — --tokens-file together with
    --allow-no-auth fell through to a _ => None arm that dropped the token
    store, producing an unauthenticated MCP listener on any bind address with no
    warning. mecmcp_runtime::cli_validate does not catch the pair.
  • Cancellation was inert (#5) — every tool built a fresh
    CancellationToken::new(), so the plumbing threaded through twenty client
    methods was connected to nothing. Now takes rmcp's RequestContext::ct.
  • No shutdown handling (#5, #12) — SIGTERM had no handler. Both listeners
    now drain behind one deadline, sessions end on the process token, and the SDC
    client abandons in-flight work rather than holding a drain open for the
    job-poll deadline.

Also:

  • KNOWN_TOOLS could drift from the registered router without any test failing,
    silently breaking token minting (#5)
  • Unknown SDC job statuses no longer fail the whole read; the vendor's string is
    preserved verbatim into the audit artifact (#7)
  • The prepared-change envelope is digested once per apply instead of four times
    (#7)
  • Two test assertions that could never fail were replaced (#6), and a third that
    replaced them badly was fixed (#11)
  • systemd egress policy, with an installer probe that reports whether it is
    actually enforced rather than assuming (#8, #12)

Known limitation in this build

The systemd IPAddress* egress directives are defence in depth only and are
likely inert on an unprivileged LXC: systemd implements them with cgroup eBPF
and fails open when it cannot attach. The installer now probes and reports
ENFORCED / NO POLICY / NOT ENFORCED / UNKNOWN, and
docs/operations.md covers where to enforce instead. Check with:

systemctl show rustsdcmcp.service -p IPEgressBytes --value   # [no data] = inert

Verify the archive

gh release download v0.1.0-lab.3 \
  --repo fastrevmd-lab/rustsdcmcp \
  --pattern 'rustsdcmcp_0.1.0-lab.20260805.37db74a5a0b9_amd64.tar.gz*'
sha256sum -c rustsdcmcp_0.1.0-lab.20260805.37db74a5a0b9_amd64.tar.gz.sha256

BUILD-INFO in the archive records release_status=lab-only, the source commit,
and mecmcp_ref=changeset-v0.3.7; SBOM.cdx.json carries the CycloneDX
dependency set.