vms-c40: REJOIN — coordinator SDA CORRECTS §4(O.25): member-initiated reconnect DOES reach OPEN; op 0x02 breaks it (spec §4(O.26)) - #320
Merged
Conversation
…ated reconnect DOES reach OPEN; op 0x02 breaks it (spec §4(O.26)) Re-ran the fresh→crash→return single-factor bracket with denser coordinator-side SDA on the CURRENT build (re-proven to drive op 0x02 on the return — build-9a7 lived in a since-deleted worktree and could not be trusted line-for-line; reproduced XITDONE=0 on virgin vaxlab-1). The reading corrects §4(O.25): - The coordinator's member-initiated VMS$VAXcluster connection to the returning identity DOES reach a stable OPEN on the return (SHOW CONNECTIONS State 0002 open, Remote Con.ID = our handle 653B0001, R+4s) together with its SCS$DIRECTORY + MSCP$DISK connections. OVMX's op=1 CONNECT_RSP echo (send_seq 17) + op=2 ACCEPT_REQ (send_seq 18), wire-proven correctly addressed to the coordinator handle, open it. §4(O.25)'s "never settles OPEN" sampled only the post-break con_sent/reconnect phase. - The connection is LOST ~10 ms after OVMX drives its op 0x02 readmission config on it (coordinator %CNXMAN lost connection at 08:50:23.75; OVMX CMCONFIG2 op 0x02 at 08:50:23.74). Per-send_seq pcap decode: OVMX's own dir/MSCP discovery bloats the shared VC so op 0x01/op 0x02 ride send_seq 21/22 — PAST the coordinator's recv_ack ceiling of 18 — and the vms-9af lean-VC suppression fires ~1.3 s too late. CNXMAN never proposes; the VC reverts to 03 reconnect and times out. Relocated frontier: from "the reconnect never settles OPEN" (SCS connection layer) BACK to op 0x02 readmission DELIVERY on an already-OPEN member connection — the send_seq-ceiling / lean-VC-timing family (§4(O.15)/§4(O.17)/§4(O.10)), now PROVEN open-then-break with coordinator SDA. Next increment (deferred to vms-694): make lean-VC/credit-first engage BEFORE op 0x02 on the member connection so it rides under the ceiling — a wire-visible sequencing change not made here (guard 8, crash-prone op02/START region). Ships (no wire change): spec §4(O.26), design-map §10, and a READMITMAP verdict-text correction (JOIN-ABANDONED no longer says "never settles OPEN"; states the grounded open-then-break finding, cites §4(O.26)). Classifier logic UNCHANGED (joiner_cfg2_sent && cm_responses==0), kill-switch OVMX_NO_READMITMAP unchanged, byte-unchanged on the wire, fail-pre/pass-post case in tests/vmsscs/test_scsd_wire.c. Non-admission (never ADMITTED; INV-6). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
baron-3dl
added a commit
that referenced
this pull request
Aug 11, 2026
…in diagnostics) (#321) * vms-832: bump OVMX_PRODUCT_VERSION to V0.3-3 Third point release off tag 0.3-2, cut through the RE machinery (vms-a84). Payload: conversational boot (#301), DCL Phase 2 facade-kills (ASSIGN->real logical names #316, STOP->real sys$delprc #318, SET PASSWORD->real SYSUAF hash change #319), and rejoin isolation diagnostics (#314/#317/#320). No test hardcodes the version literal -- tests/libvms/test_identity.c and friends all compare against the OVMX_PRODUCT_VERSION macro, so no de-hardcoding was needed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * vms-832: generate V0.3-3 release notes (boot + DCL Phase 2 + rejoin diagnostics) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: alice <alice@workspace.local> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continues the rejoin long-pole at the SCS connection layer (
vms-c40, parentvms-694). Reproduced the frontier with the CURRENTorigin/mainbuild (the shipped §4(O.25) evidence came frombuild-9a7in a since-deleted worktree that could not be trusted line-for-line) and, with denser coordinator-side SDA, arrived at a decisive correction of the shipped frontier.Isolating result (single-factor bracket, virgin
vaxlab-1, GAP=22, coordinator SDA)VMS$VAXclusterreconnect DOES reach a stable OPEN on the return. CoordinatorSHOW CONNECTIONS/NODEat R+4s:State 0002 open,Remote Con. ID 653B0001(our return handle), withSCS$DIRECTORY+MSCP$DISKalsoopen. OVMX's op=1CONNECT_RSPecho (send_seq 17) + op=2ACCEPT_REQ(send_seq 18), wire-proven correctly addressed to the coordinator handle7288000f, open it. §4(O.25)'s "never settles OPEN" sampled only the post-breakcon_sent/03 reconnectphase and mistook it for never-opened.%CNXMAN, lost connectionat08:50:23.75; OVMXCMCONFIG2op 0x02 at08:50:23.74. Per-send_seqdecode ofd94-c40repB.pcapon the membership VC: OVMX's ownSCS$DIRECTORY+MSCP$DISKdiscovery bloats the shared per-VCsend_seq, so op 0x01/op 0x02 ridesend_seq21/22 — past the coordinator'srecv_ackceiling of 18 — and thevms-9aflean-VC suppression fires ~1.3 s too late (08:50:25, after the op 0x02 and the break). CNXMAN never proposes (no secondreceived VAXcluster membership request); the VC reverts to03 reconnectand times out. Post-break op 0x05/0x06 go toRemote Con. ID 0.Book cites: VAXcluster Principles pp. 2-43/2-44/2-45/7-37/7-40/7-46 (clean-room Rule 8 — page cites only).
Relocated frontier
From "the reconnect never settles OPEN" (SCS connection layer, §4(O.25)) back up to op 0x02 readmission DELIVERY on an already-OPEN member connection — the
send_seq-ceiling / lean-VC-timing family (§4(O.15)vms-9af, §4(O.17)vms-46f, §4(O.10)vms-e15), now PROVEN open-then-break with coordinator SDA rather than inferred from the joiner side. Next increment (deferred tovms-694): make lean-VC / credit-first engage before op 0x02 is driven on the member-initiated connection so it rides under the ceiling — a wire-visible sequencing change in the crash-prone op02/START region, not made here (guard 8; "no speculative wire change until isolated").XITDONE outcome
Not 0→1. The connection-layer "missing CONNECT_RSP" hypothesis is refuted (OVMX sends it and the connection opens); the real gate is upstream sequencing that is larger than this increment. Shipping the isolation + corrected frontier + fix design.
Ships (no wire change)
READMITMAPverdict-text correction (JOIN-ABANDONEDno longer says "never settles OPEN"; states the grounded open-then-break finding, cites §4(O.26)). Classifier logic UNCHANGED (joiner_cfg2_sent && cm_responses==0), kill-switchOVMX_NO_READMITMAPunchanged, byte-unchanged on the wire, fail-pre/pass-post case intests/vmsscs/test_scsd_wire.c. Non-admission (neverADMITTED; INV-6).Test
cmake --build build && ctest -R "vmsscs|scs_"-> 52/52 pass; full build green. The verdict-text fail-pre/pass-post gate is genuine (pre: text carried "never settles OPEN"/"4(O.25)" -> assertions fail; post: "reach a stable OPEN"/"4(O.26)" -> pass).🤖 Generated with Claude Code