fix: clear 13 advisories, report the running build, settle #148, per-release changelog #154
No reviewers
Labels
No labels
blocked
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
waiting-on-julian
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jlxq0/matrix-mcp!154
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/t_3496b128-matrix-audit"
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?
Four fixes from the matrix-mcp audit, approved by Julian (fleet t_3496b128). Base
d79c7c2.1. Dependency advisories
cargo auditatd79c7c2: 13 vulnerabilities. Targetedcargo update -p, no ignores:rustls 0.23.46, rustls-webpki 0.103.16, webpki-roots / webpki-root-certs 1.0.11, quinn-proto 0.11.19, ctutils 0.4.5. Now 0 vulnerabilities (the 3 allowed warnings remain: two unmaintained, tokio RUSTSEC-2026-0386 unsound). All bumped crates declare rust-version ≤ 1.87.
2. Release identity a client and an operator can read
serverInforeported{"name":"rmcp","version":"1.7.0"}on both mounts. rmcp'sServerInfo::new→Implementation::from_build_env(), whoseenv!expands inside rmcp. It now reportsmatrix-mcp,<tag>+<sha>.src/build_info.rsreadsMATRIX_MCP_VERSION/MATRIX_MCP_REVISIONviaoption_env!; absent, empty or misshapen →unstamped, never0.0.1.GET /version(public, exactlyname/version/revision; trade-off stated in the code) andmatrix-mcp --version.--versionagainst the build args and fails the image on any difference. Measured locally: a good stamp builds (binary identity: matrix-mcp v0.0.0-audit e354597…);MATRIX_MCP_VERSION=mainfails withbinary identity mismatch: built 'matrix-mcp unstamped …'. OCIversion/revisionlabels match.v*tags, logsimage digest:with ref and sha, and fails a release push that reports no digest.3. #94 / #148: strict discovery, no shim
scripts/strict-oauth-discovery.py(stdlib, read-only) walks the 401 pointer → RFC 9728 → RFC 8414 with byte-exactresourceandissuerchecks. Againsthttps://matrix-mcp.kampong.social/mcp: 0 failures (issuerhttps://matrixauthservice.kampong.social/matches byte for byte; S256,code, registration endpoint present). So the compliant path already works, and a copy served from this origin cannot be made RFC 8414 §3.3-compliant (#148).this_origin_never_serves_authorization_server_metadatafails if any of those paths serves a document naming an issuer. Closes #148; #94 will be closed as superseded.4. Docs
read_reactionsand says 62 tools;the_readme_names_every_tool_the_server_advertisesfails on a missing one.docs/api-reference.mddocumentsread_reactionsand states it is a subset.serverInfodefault, the stamped identity and its build-time check, the #148 decision, audit freshness, and the changelog.Review
Independent review by a separate model session before this PR: round 1 had no blockers and 4 should-fix (unassertable digest line,
/versionrationale, an overstated three-source claim, a test pinning the fallback rather than the decision), all fixed in58d41f9; round 2 had no blockers and no should-fix.Gates at
58d41f9(local, CI's flags)fmt rc=0 · clippy 1.98.0
-D warningsrc=0 · test 374 + 6 passed ·cargo audit0 vulnerabilities ·cargo deny check bans licenses sourcesok ·cargo +1.96.0 check --all-features --lockedrc=0Mutation checks: removing
with_server_infofrom/channelreddensboth_mounts_…with{"name":"rmcp","version":"1.7.0"}; removingread_reactionsfrom README reddens the README test.Rollout (ops: Clark)
After merge and the
v0.10.15tag build: podimageID== theimage digest:logged by the tag'sdockerjob;curl https://matrix-mcp.kampong.social/version→version: v0.10.15,revision==git rev-parse v0.10.15^{commit}; authenticatedserverInfocarries the same identity.🤖 Generated with Claude Code
https://claude.ai/code/session_01CjpM4mQ7ofAU6xVEdzdfmo