Skip to content

Verify vms-7c0's stricter CDL receive path doesn't regress vms-449's rejoin - #117

Merged
baron-3dl merged 1 commit into
mainfrom
work/vms-8e4
Aug 6, 2026
Merged

baron-3dl merged 1 commit into
mainfrom
work/vms-8e4

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

Summary

  • Verification note in docs/cluster-protocol-spec.md: confirms vms-7c0's stricter CDL receive
    path does not regress vms-449's rejoin.

Item: vms-8e4 (retry after a structured-output failure in the prior wave)

🤖 Generated with swarm-dispatch merge agent

…ms-449's rejoin

Re-ran the vms-449 join/rejoin pair on current main (vms-7c0 and vms-449 both
ancestors) on lab-2 vaxlab-6. The rejoin-refused finding still holds, and
neither of vms-7c0's countable tightened receive-path behaviors
(rx_deliver_no_cdt, rx_deliver_src_mismatch) fired during a normal join or
rejoin -- both read 0 in the RX-CDL exit summary on both runs. No regression.

Caveat recorded in the spec: vaxlab-6 showed VAX2 in BRK_NON (pod wear from
earlier same-day brackets) partway through, so this does not byte-for-byte
replicate vms-449's clean bracket shape -- only the two counters this item
asked about, which are unaffected by VAX2's state. A companion run on a
freshly-scaled virgin pod (vaxlab-8) never completed a first join at all in
two attempts; treated as a pod-level fault and not chased further, out of
scope for this item.

targeted suite: ctest -R scs 36/36 green.
@baron-3dl
baron-3dl merged commit bccf587 into main Aug 6, 2026
36 checks passed
@baron-3dl
baron-3dl deleted the work/vms-8e4 branch August 6, 2026 01:33
baron-3dl added a commit that referenced this pull request Aug 21, 2026
…ch() (Rule 9 gate)

Integration regression on work/vms-0.5-final: the "Build & Test" job built
clean but ctest went red on runtime_target_gate (#5) and, as a consequence,
runtime_target_negctl (#8) -- the standing Rule 9 / INV-6 gates
(tests/integration/test_runtime_target.sh + its negative control). Each merged
branch was green alone; the combination reddened the gate.

ROOT CAUSE (merge interaction). vms-46c-sysboot-acp refactored ovmx_init.c's
executive_attach(). Pre-merge it was ONE function that loaded vms.ko, opened
/dev/vms via the boot seam, CAPTURED the descriptor into executive_fd, HALTED if
the open failed, pinned the fd, and emitted the %OVMX-I-EXEC line inline. The
refactor split that into executive_attach_silent() (capture + halt) +
executive_announce() (the printf) + a thin executive_attach() wrapper that just
calls the two. It did this for a real reason -- the conversational SYSBOOT> path
must attach the executive BEFORE the prompt (the Files-11 ACP $MOUNT needs it)
yet print nothing until after it. But check 3 of the gate inspects the body of
the function LITERALLY named executive_attach() for the descriptor capture, the
terminal-halt failure branch, and the pin; after the refactor that body only
delegates, so the gate reported "no ovmx_boot_open_executive() result is captured
into a variable" and failed. The negctl was untouched by the merge, so its
positive control (which re-runs the gate on the unmutated tree) failed with #5,
and its 3b(h) mutation still anchored the executive_attach(void) signature.

FIX (code only -- no test touched). Move the guarantee back INTO executive_attach()
itself: the load, the executive_fd = ovmx_boot_open_executive() capture, the
`if (executive_fd < 0)` terminal ovmx_exec_halt(), the pinned file-static fd, and
the %OVMX-I-EXEC printf all live in the one function the gate reads again. The
conversational path's need to defer the console line is met by a file-static
executive_announce_deferred flag (set before the silent attach, announced via
executive_announce() after SYSBOOT>) -- a deferral of the ANNOUNCE only; the
capture+halt+pin guarantee is unconditional. Signature stays executive_attach(void),
and the guarantee lines stay verbatim, so both the gate and every negctl mutation
(including 3b(h), which anchors the signature) match and trip exactly as before.

tests/integration/test_runtime_target.sh and test_runtime_target_negctl.sh are
UNCHANGED -- no gate weakened, no allowlist added (CLAUDE.md Rule 9). Verified
locally: gate PASS, negctl 31/31; full ctest re-run on the k3s rail (real git
clone, non-dind) below.

NOT part of this fix: dcl-integration (#117) fails on the bare builder/rail image
(SET ACCOUNTING cannot write SYS$MANAGER:ACCOUNTNG.ENB with no populated VMS
root) -- it fails identically on the pre-merge base commit 06e62f5, so it is a
pre-existing environment artifact, not an integration regression.

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