fix: isolate Matrix clients and crypto stores by device #149
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!149
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/device-scoped-crypto"
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?
Whole repair, exact source
Isolate same-MXID device-bound OAuth clients, encrypted stores, and routing while preserving legacy Olm/Megolm keys. Upgrade matrix-sdk to 0.19.1 and rustls to 0.23.45 without advisory waivers. Bind each existing crypto store to its operator-verified MAS subject; do not infer legacy ownership from a token or
.device-id. Serialize migration/mint across processes, fail closed, and makeinspect-storerefusals exit nonzero.Reviewed source head:
c411a409c5bdfc71c99f6e49c50387b78a2d5d78(independent read-only security and concurrency reviews, no blocking code findings). Local exact-head fmt, Rust 1.96 check, Clippy 1.98, tests twice (352 unit + 6 integration each), cargo audit and cargo deny pass. Audit reports one existing wasm-only derivative warning, not a security advisory waiver. Full logs and 0.17 encrypted-store fixture evidence on Kanban t_c215b8d8. Remote PR CI: https://forge.oddie.app/jlxq0/matrix-mcp/actions/runs/284 (verify its final state before merge). PR CI does not build the image.Release and activation are separate
After exact-source review and green CI, publish a release tag, require tag image CI green and verify its immutable registry digest and matching
inspect-storebinary/image. Do not treat this PR or a green Argo app as a release.docs/multi-device.mdspecifies the rollback from pre-rollout snapshot: SDK 0.17 can silently open a 0.19-migrated schema; redeploying the old image on the same volume is not rollback. The migration empties event cache and deduplicates request bookkeeping, not Olm/Megolm keys.Clark alone owns operational activation. No old and new pod may overlap on the store volume. Before rollout Clark must inspect only a writable snapshot clone with the reviewed inspector; prove the embedded legacy owner, MAS subject binding and homeserver device-key state without disclosing pepper/key values; obtain Julian’s specific rollout approval. Until then: no volume writes, deployment, or authenticated room read. No waiver approved.