Add Connect libp2p endpoint transport#31
Conversation
db9b158 to
218dbc6
Compare
218dbc6 to
4905296
Compare
|
Update: pushed d09e07b to reconnect native libp2p registration after Moxy restarts.\n\nVerification:\n- |
|
Update after relay hardening (
Fresh local verification: git diff --check
./gradlew :core:test --no-daemonBoth passed locally on 2026-06-16. GitHub Actions build was still in progress when checked after push. |
|
Staging validation after af618ca:
Local verification run:
|
|
Update after peer-auth review:
Verification:
Staging used the freshly built Spigot plugin jar and re-registered against Moxy. Public Java login and Bedrock status probes passed through |
|
Updated native registration signing in
Fresh local verification: ./gradlew :core:test --no-daemon
# BUILD SUCCESSFUL
./gradlew :spigot:shadowJar --no-daemon
# BUILD SUCCESSFULThis is the matching endpoint-side change for Moxy PR GeyserMC#265 commit |
|
Latest staging evidence for
GitHub Actions for this PR is green at |
|
Review/staging follow-up after the senior-pass review:
GitHub PR build is green on the latest commit. |
…2p-native-endpoint # Conflicts: # core/src/test/java/com/minekube/connect/module/CommonModuleTest.java
Summary
libp2p-identity.keyand exposeCONNECT_LIBP2P_*configurationorigin/connectand preserve the WatchService WebSocket liveness fix from PR fix(connect): avoid watch websocket read timeouts #33Current branch state
291803869939mainas9b1e0f58862901e6caf7d908db93f59401c0819forigin/connecton 2026-06-22; conflict inCommonModuleTestresolved by keeping both libp2p token coverage and WatchService WebSocket liveness coverage.Local verification on 2026-06-22
./gradlew :core:test --tests com.minekube.connect.module.CommonModuleTest./gradlew :core:test :spigot:build --quietCI status
291803869939.Staging evidence
v0.66.36.connect-libp2p-paper-stagingwith endpointcodexstage22a.Connect libp2p endpoint registered: d8si51qcinjc21qhkqvg, endpoint namecodexstage22a, and public addresscodexstage22a.play.minekube.net.libp2p endpoint registration committedandrenewedforcodexstage22a, endpoint peer12D3KooWHWp6xF9M6wCjx7Mm3hMN5pvNCnCHi5S5ew67YyZ13AxW.d8so4dbi940s206cfb70,selectedTransport=direct, selected address/ip4/172.16.61.34/tcp/64300,warmPath=warm,connectionStatus=success, no keepalive out-of-order/timeout/internal-server-error through2026-06-22T18:45:52Z.enforce-secure-profile=false: sessiond8t366bi940s21vr1hu0,selectedTransport=direct, selected address/ip4/172.16.61.34/tcp/64414,warmPath=warm; Paper accepted[Not Secure] <RoboFlax2> hiand[Not Secure] <RoboFlax2> testwith no new missing-profile-public-key warning.RoboFlax2login from127.0.0.1:0withfloodgate:*anderosion:msgplugin channels, then ongoing gameplay at09:25:56and09:26:21Europe/Berlin, with no monitored timeout/disconnect/keepalive kick.Notes
server.propertiesmust keepenforce-secure-profile=false; otherwise Paper rejects chat state withChat disabled due to missing profile public key.Update: backend-close diagnostics on 2026-06-23
LocalChannelInboundHandlerandTunnelHandlerin the staging worktree to distinguish local backend close from tunnel-stream close; preserved the byte-copy fixes already under validation../gradlew :spigot:shadowJar -x testand installedconnect-spigot.jaron the local Paper staging server; SHA-2568affd0471ee9b7318fc31c41737174483dad1725158a31178cc2cd6a89ed32e6.connectdebug, sessionconnect-libp2p-paper-staging2, with Java 25 and explicitCONNECT_LIBP2P_EDGE_ADDR/CONNECT_LIBP2P_RELAY_ADDRSpointing at edge peer12D3KooWCqs14yyxXW5rosC5CJ9tmNsRvQ97KKUx5HzGKK1pyVsN.d8t86sji940s21r2entgclosed because the tunnel stream closed first, then the local backend channel closed.d8t8713i940s21r2enu0,selectedTransport=direct, selected address/ip4/172.16.61.34/tcp/64766,warmPath=warm,connectionStatus=success, duration594.886026ms; Paper logged the main local backend channel active forRoboFlax2and no matching close through2026-06-23T13:06:22Z.2026-06-23 staging update
291803869939plus diagnostic logging jar SHA-2568affd0471ee9b7318fc31c41737174483dad1725158a31178cc2cd6a89.codexstage22are-registered after the Moxy staging redeploy as endpoint IDd8si51qcinjc21qhkqvg, endpoint peer12D3KooWHWp6xF9M6wCjx7Mm3hMN5pvNCnCHi5S5ew67YyZ13AxW, endpoint instance99b7ab62-b29e-4fca-94a1-aced408c54a6.d8t9baji940s201ckf9gwas accepted at2026-06-23T14:18:19ZwithselectedTransport=direct,warmPath=warm, and Moxy reportedconnectionStatus=successat2026-06-23T14:18:21Z.docs/superpowers/plans/2026-06-18-connect-libp2p-pr265-readiness.md.Correction to 2026-06-23 staging update: the later disconnect at
16:24:26Europe/Berlin was caused by locally killing/restarting the deterministicfly proxyprocesses, which closed Bedrock sessiond8t9baji940s201ckf9g; it was not the prior fastdisconnect.timeoutpath. Paper re-registered after proxies were restored.Update: multi-relay endpoint records on 2026-06-23
./gradlew :core:test --tests com.minekube.connect.tunnel.p2p.PeerRegistrationHandshakeTest,./gradlew :core:test --tests 'com.minekube.connect.tunnel.p2p.*' --tests 'com.minekube.connect.network.netty.TunnelHandlerTest', and./gradlew :spigot:shadowJar.cd048c795ff640e7c433e96aa9b250da1a75db949b2d42c83ef9616d30c31031.53010fda-d378-44d1-bb96-839a1d163776renewed withrelayAddrs=3; Bedrock sessiond8t9vn2fskps2294e7ugwas accepted withselectedTransport=direct,warmPath=warm, and delivered successfully.2026-06-23 Bedrock multi-relay staging retry
14225updated to12D3KooWB1riwr5QRN4Uw6sm63jwid2R7tUfFDuJNckWaz5A7bFw.2026-06-23T15:18:42Z; Moxy committedcodexstage22aendpoint instanceb7b2da24-e2dd-424a-8f80-1bb4cbaabe82withrelayAddrs=3, exercising the connect-java change that signs all reserved relay circuit addrs.2026-06-23T15:19:24Z: sessiond8ta7v2fskps23njfh1g,selectedTransport=direct,warmPath=warm,connectionStatus=success,bedrock join attempt result=success, and Paper loggedRoboFlax2 joined the gameat17:19:26Europe/Berlin.bedrockFly machine changes peer ID on redeploy, so staging needs persistent identity or dynamic relay discovery before production-like multi-machine Bedrock soak.Update: persistent Bedrock relay identity on 2026-06-23
1853d9df076d08with Fly volumevol_rnzk2lxojyn193er; its relay peer ID12D3KooWH8xrjYnNbBVumsTSUVKYd1e4mREcF1A6ZGKMCogHzKZawas unchanged after machine restart.codexstage22awith three deterministic relay peers, and Moxy committed endpoint instance8f494346-5971-438f-b55f-4688505fd5b6withrelayAddrs=3.2026-06-23T15:46:14Z: sessiond8takhnsc8js21pncpbg,selectedTransport=direct,warmPath=warm,connectionStatus=success, and Paper loggedRoboFlax2 joined the gameat17:46:15Europe/Berlin.listat17:57:55Europe/Berlin showedRoboFlax2still online, so the final observed Bedrock session stayed up at least 11m40s.channelInactiveraw-datagram dump.listchecks at18:00:12,18:03:02,18:03:25,18:04:25,18:05:25,18:06:25, and18:07:25Europe/Berlin all showedRoboFlax2online; Paper scrollback showed no laterRoboFlax2 leftafter the17:46:15join, proving the observed Bedrock session stayed up at least 21m10s. Bedrock machine1853d9df076d08stayed on instance01KVTJ38S40XPDGZD88G75H5ZKwith no Fly event after the manual17:39:03restart.listat18:10:39Europe/Berlin still showedRoboFlax2online, and Paper scrollback showed no laterRoboFlax2 leftafter the17:46:15join; latest observed Bedrock hold is at least 24m24s.connect-proxy-staging.minekube.net:25565returned packet id0, version{protocol: 772, name: "26.1.2"}, players1/512, descriptionPaper, RTT216.45ms.