Given that the 29.x branch doesn’t have the changes to accomodate upstream changes in libmultiprocess, anyone who builds and installs libmultiprocess, and then tries to build Core with -DWITH_MULTIPROCESS=ON, will get a compile failure:
  0[ 34%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/protocol.cpp.o
  1/bitcoin/src/ipc/capnp/protocol.cpp: In destructor 'virtual ipc::capnp::{anonymous}::CapnpProtocol::~CapnpProtocol()':
  2/bitcoin/src/ipc/capnp/protocol.cpp:45:62: error: no matching function for call to 'std::unique_lock<std::mutex>::unique_lock(mp::Mutex&)'
  3   45 |             std::unique_lock<std::mutex> lock(m_loop->m_mutex);
  4      |                                                              ^
  5In file included from /usr/include/c++/13/mutex:46,
  6                 from /bitcoin/src/threadsafety.h:9,
  7                 from /bitcoin/src/logging.h:10,
  8                 from /bitcoin/src/interfaces/node.h:10,
  9                 from /bitcoin/src/interfaces/init.h:11,
 10                 from /bitcoin/src/ipc/capnp/protocol.cpp:5:
 11/usr/include/c++/13/bits/unique_lock.h:68:16: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 12   68 |       explicit unique_lock(mutex_type& __m)
 13      |                ^~~~~~~~~~~
 14/usr/include/c++/13/bits/unique_lock.h:68:40: note:   no known conversion for argument 1 from 'mp::Mutex' to 'std::unique_lock<std::mutex>::mutex_type&' {aka 'std::mutex&'}
 15   68 |       explicit unique_lock(mutex_type& __m)
 16      |                            ~~~~~~~~~~~~^~~
 17/usr/include/c++/13/bits/unique_lock.h:97:9: note: candidate: 'template<class _Rep, class _Period> std::unique_lock<_Mutex>::unique_lock(mutex_type&, const std::chrono::duration<_Rep, _Period>&) [with _Period = _Rep; _Mutex = std::mutex]'
 18   97 |         unique_lock(mutex_type& __m,
 19      |         ^~~~~~~~~~~
 20/usr/include/c++/13/bits/unique_lock.h:97:9: note:   template argument deduction/substitution failed:
 21/bitcoin/src/ipc/capnp/protocol.cpp:45:62: note:   candidate expects 2 arguments, 1 provided
 22   45 |             std::unique_lock<std::mutex> lock(m_loop->m_mutex);
 23      |                                                              ^
 24/usr/include/c++/13/bits/unique_lock.h:90:9: note: candidate: 'template<class _Clock, class _Duration> std::unique_lock<_Mutex>::unique_lock(mutex_type&, const std::chrono::time_point<_Clock, _Duration>&) [with _Duration = _Clock; _Mutex = std::mutex]'
 25   90 |         unique_lock(mutex_type& __m,
 26      |         ^~~~~~~~~~~
 27/usr/include/c++/13/bits/unique_lock.h:90:9: note:   template argument deduction/substitution failed:
 28/bitcoin/src/ipc/capnp/protocol.cpp:45:62: note:   candidate expects 2 arguments, 1 provided
 29   45 |             std::unique_lock<std::mutex> lock(m_loop->m_mutex);
 30      |                                                              ^
 31/usr/include/c++/13/bits/unique_lock.h:112:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(std::unique_lock<_Mutex>&&) [with _Mutex = std::mutex]'
 32  112 |       unique_lock(unique_lock&& __u) noexcept
 33      |       ^~~~~~~~~~~
 34/usr/include/c++/13/bits/unique_lock.h:112:33: note:   no known conversion for argument 1 from 'mp::Mutex' to 'std::unique_lock<std::mutex>&&'
 35  112 |       unique_lock(unique_lock&& __u) noexcept
 36      |                   ~~~~~~~~~~~~~~^~~
 37/usr/include/c++/13/bits/unique_lock.h:83:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&, std::adopt_lock_t) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 38   83 |       unique_lock(mutex_type& __m, adopt_lock_t) noexcept
 39      |       ^~~~~~~~~~~
 40/usr/include/c++/13/bits/unique_lock.h:83:7: note:   candidate expects 2 arguments, 1 provided
 41/usr/include/c++/13/bits/unique_lock.h:79:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&, std::try_to_lock_t) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 42   79 |       unique_lock(mutex_type& __m, try_to_lock_t)
 43      |       ^~~~~~~~~~~
 44/usr/include/c++/13/bits/unique_lock.h:79:7: note:   candidate expects 2 arguments, 1 provided
 45/usr/include/c++/13/bits/unique_lock.h:75:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&, std::defer_lock_t) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 46   75 |       unique_lock(mutex_type& __m, defer_lock_t) noexcept
 47      |       ^~~~~~~~~~~
 48/usr/include/c++/13/bits/unique_lock.h:75:7: note:   candidate expects 2 arguments, 1 provided
 49/usr/include/c++/13/bits/unique_lock.h:64:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock() [with _Mutex = std::mutex]'
 50   64 |       unique_lock() noexcept
 51      |       ^~~~~~~~~~~
 52/usr/include/c++/13/bits/unique_lock.h:64:7: note:   candidate expects 0 arguments, 1 provided
 53/bitcoin/src/ipc/capnp/protocol.cpp:46:21: error: 'class mp::EventLoop' has no member named 'removeClient'
 54   46 |             m_loop->removeClient(lock);
 55      |                     ^~~~~~~~~~~~
 56/bitcoin/src/ipc/capnp/protocol.cpp: In lambda function:
 57/bitcoin/src/ipc/capnp/protocol.cpp:87:66: error: no matching function for call to 'std::unique_lock<std::mutex>::unique_lock(mp::Mutex&)'
 58   87 |                 std::unique_lock<std::mutex> lock(m_loop->m_mutex);
 59      |                                                                  ^
 60/usr/include/c++/13/bits/unique_lock.h:68:16: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 61   68 |       explicit unique_lock(mutex_type& __m)
 62      |                ^~~~~~~~~~~
 63/usr/include/c++/13/bits/unique_lock.h:68:40: note:   no known conversion for argument 1 from 'mp::Mutex' to 'std::unique_lock<std::mutex>::mutex_type&' {aka 'std::mutex&'}
 64   68 |       explicit unique_lock(mutex_type& __m)
 65      |                            ~~~~~~~~~~~~^~~
 66/usr/include/c++/13/bits/unique_lock.h:97:9: note: candidate: 'template<class _Rep, class _Period> std::unique_lock<_Mutex>::unique_lock(mutex_type&, const std::chrono::duration<_Rep, _Period>&) [with _Period = _Rep; _Mutex = std::mutex]'
 67   97 |         unique_lock(mutex_type& __m,
 68      |         ^~~~~~~~~~~
 69/usr/include/c++/13/bits/unique_lock.h:97:9: note:   template argument deduction/substitution failed:
 70/bitcoin/src/ipc/capnp/protocol.cpp:87:66: note:   candidate expects 2 arguments, 1 provided
 71   87 |                 std::unique_lock<std::mutex> lock(m_loop->m_mutex);
 72      |                                                                  ^
 73/usr/include/c++/13/bits/unique_lock.h:90:9: note: candidate: 'template<class _Clock, class _Duration> std::unique_lock<_Mutex>::unique_lock(mutex_type&, const std::chrono::time_point<_Clock, _Duration>&) [with _Duration = _Clock; _Mutex = std::mutex]'
 74   90 |         unique_lock(mutex_type& __m,
 75      |         ^~~~~~~~~~~
 76/usr/include/c++/13/bits/unique_lock.h:90:9: note:   template argument deduction/substitution failed:
 77/bitcoin/src/ipc/capnp/protocol.cpp:87:66: note:   candidate expects 2 arguments, 1 provided
 78   87 |                 std::unique_lock<std::mutex> lock(m_loop->m_mutex);
 79      |                                                                  ^
 80/usr/include/c++/13/bits/unique_lock.h:112:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(std::unique_lock<_Mutex>&&) [with _Mutex = std::mutex]'
 81  112 |       unique_lock(unique_lock&& __u) noexcept
 82      |       ^~~~~~~~~~~
 83/usr/include/c++/13/bits/unique_lock.h:112:33: note:   no known conversion for argument 1 from 'mp::Mutex' to 'std::unique_lock<std::mutex>&&'
 84  112 |       unique_lock(unique_lock&& __u) noexcept
 85      |                   ~~~~~~~~~~~~~~^~~
 86/usr/include/c++/13/bits/unique_lock.h:83:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&, std::adopt_lock_t) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 87   83 |       unique_lock(mutex_type& __m, adopt_lock_t) noexcept
 88      |       ^~~~~~~~~~~
 89/usr/include/c++/13/bits/unique_lock.h:83:7: note:   candidate expects 2 arguments, 1 provided
 90/usr/include/c++/13/bits/unique_lock.h:79:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&, std::try_to_lock_t) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 91   79 |       unique_lock(mutex_type& __m, try_to_lock_t)
 92      |       ^~~~~~~~~~~
 93/usr/include/c++/13/bits/unique_lock.h:79:7: note:   candidate expects 2 arguments, 1 provided
 94/usr/include/c++/13/bits/unique_lock.h:75:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock(mutex_type&, std::defer_lock_t) [with _Mutex = std::mutex; mutex_type = std::mutex]'
 95   75 |       unique_lock(mutex_type& __m, defer_lock_t) noexcept
 96      |       ^~~~~~~~~~~
 97/usr/include/c++/13/bits/unique_lock.h:75:7: note:   candidate expects 2 arguments, 1 provided
 98/usr/include/c++/13/bits/unique_lock.h:64:7: note: candidate: 'std::unique_lock<_Mutex>::unique_lock() [with _Mutex = std::mutex]'
 99   64 |       unique_lock() noexcept
100      |       ^~~~~~~~~~~
101/usr/include/c++/13/bits/unique_lock.h:64:7: note:   candidate expects 0 arguments, 1 provided
102/bitcoin/src/ipc/capnp/protocol.cpp:88:25: error: 'class mp::EventLoop' has no member named 'addClient'
103   88 |                 m_loop->addClient(lock);
104      |                         ^~~~~~~~~
105gmake[2]: *** [src/ipc/CMakeFiles/bitcoin_ipc.dir/build.make:178: src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/protocol.cpp.o] Error 1
106gmake[1]: *** [CMakeFiles/Makefile2:1208: src/ipc/CMakeFiles/bitcoin_ipc.dir/all] Error 2
107gmake: *** [Makefile:146: all] Error 2
Unless we backport a number of ipc related changes to this branch (unlikely), this will be broken for the rest of this branches life. This seems like something we might want to document.