Skip to content

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
baron-3dl merged 1 commit into
mainfrom
vms-c40-rejoin-scs-reconnect
Aug 11, 2026
Merged

baron-3dl merged 1 commit into
mainfrom
vms-c40-rejoin-scs-reconnect

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

Summary

Continues the rejoin long-pole at the SCS connection layer (vms-c40, parent vms-694). Reproduced the frontier with the CURRENT origin/main build (the shipped §4(O.25) evidence came from build-9a7 in 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)

  • The member-initiated VMS$VAXcluster reconnect DOES reach a stable OPEN on the return. Coordinator SHOW CONNECTIONS/NODE at R+4s: State 0002 open, Remote Con. ID 653B0001 (our return handle), with SCS$DIRECTORY + MSCP$DISK also open. 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 7288000f, open it. §4(O.25)'s "never settles OPEN" sampled only the post-break con_sent/03 reconnect phase and mistook it for never-opened.
  • The connection is LOST ~10 ms after OVMX drives op 0x02 on it. Coordinator console %CNXMAN, lost connection at 08:50:23.75; OVMX CMCONFIG2 op 0x02 at 08:50:23.74. Per-send_seq decode of d94-c40repB.pcap on the membership VC: OVMX's own SCS$DIRECTORY+MSCP$DISK discovery bloats the shared per-VC send_seq, 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 (08:50:25, after the op 0x02 and the break). CNXMAN never proposes (no second received VAXcluster membership request); the VC reverts to 03 reconnect and times out. Post-break op 0x05/0x06 go to Remote 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 to vms-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)

  • Spec §4(O.26) and design-map §10.
  • 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).

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

…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
baron-3dl merged commit a319c00 into main Aug 11, 2026
53 checks passed
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant