vms-f16: define missing conformance constants (TRUE/FALSE + 28 others) - #424
Merged
Merged
Conversation
Closes the missing_constant gap from docs/conformance-gap-report.md §3.3:
constants the Eight-Cubed VMS C corpus assumes but OVMX defined nowhere.
30 constants defined across 8 headers:
- ssdef.h: TRUE/FALSE (DEC C convention) + 13 SS$_ SYSTEM-facility codes
- rmsdef.h: RMS$_ACC_RUJ, RMS$_JNLNOTAUTH (journaling)
- rms/xab.h: XAB$C_ITM, XAB$K_ITMLEN, XAB$K_SETMODE (+ XAB$K_SENSEMODE)
- chpdef.h: CHP$M_OBSERVE, CHP$M_ALTER (alias READ/WRITE)
- issdef.h: ISS$C_ID_NATURAL
- prcdef.h: SYI$_MAX_CPUS, SYI$_ACTIVE_CPU_BITMAP, SYI$_AVAIL_CPU_BITMAP
- rms/fab.h: FAB$M_ASY, FAB$M_RU, FAB$M_UFO (FAB$L_FOP)
- ossdef.h: OSS$M_RELCTX
GROUNDING (clean-room Rule 8): every VMS-authentic value was pinned by
assembling the public $SSDEF/$RMSDEF/$XABDEF/$CHPDEF/$ISSDEF macros as GLOBAL
symbols and reading the exact defined longword from the object GSD via
ANALYZE/OBJECT/GSD -- documented tool output, no disassembly. SS$_ (11 codes),
RMS$_, XAB$, CHP$M, ISS$C from OpenVMS VAX V7.3 (lab-2); SS$_EXITFORCED and
SS$_LOWPREC (absent on VAX) from OpenVMS Alpha V8.4 (lab-Alpha). Anchors
SS$_NORMAL=1, SS$_ACCVIO=12, RMS$_EOF=98938, XAB$C_KEY=21 verified in the same
dumps; SS$_ACCVIO=12 matched on both architectures.
The oracle showed SYI$_/FAB$L_FOP/OSS$M_ already use OVMX-PRIVATE numbering in
the existing headers, so the authentic values would collide with existing OVMX
bits; those three families are defined as OVMX-private continuations and
labeled as design choices, NOT VMS-authentic values.
Test: tests/libvms/test_conformance_constants.c pins every value with
compile-time _Static_asserts (drift fails the build), mirroring vms-982's
test_lock_flag_bits.c. Full ctest: 161/161 pass, exit 0.
DEFERRED (not invented, per empirical-not-gate):
- LIB$M_CLI_CTRLT: defined only in the DEC C <libclidef.h> header (VSI
source); not in the MACRO-32 libraries the oracle can dump, and copying it
from the .H is not permitted under Rule 8. Documented in libclidef.h.
- SIGUSR1: a POSIX signal from <signal.h>, not a VMS macro; corpus program
sys_sigprc.c merely omits #include <signal.h>. Not an OVMX header gap.
FINDING (not fixed here, out of scope): the RMS$_ oracle dump shows several
EXISTING rmsdef.h values are wrong vs real VMS V7.3 (RMS$_ACC=114690 not 98826,
RMS$_CRE=114698, RMS$_RNF=98994, RMS$_RTB=98728). Noted in rmsdef.h; needs a
separate correction bead (blast radius across RMS callers).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
baron-3dl
added a commit
that referenced
this pull request
Aug 13, 2026
…#433) The RMS$_ error/success/info condition values in rmsdef.h had been synthesised as arithmetic +8 sequences and never grounded to a VMS oracle -- a vms-purity (Rule 10/11) violation. 74 of the 83 defines disagreed with real OpenVMS VAX V7.3. Independently verified and corrected against the authoritative oracle: lab-2 replica vaxlab-2 (node vax1, OpenVMS VAX V7.3). Method (clean-room Rule 8, exactly as vms-f16 #424): assemble the PUBLIC $RMSDEF macro as a module of GLOBAL symbols (MACRO/OBJECT) and read each defined longword out of the object GSD with ANALYZE/OBJECT/GSD (ANALYZ V07-04, documented tool output -- no disassembly). 267 RMS$_ symbols were dumped. The four values named in the item, confirmed in the dump: RMS$_ACC 98826->114690 (%X'0001C002') RMS$_CRE 98834->114698 (%X'0001C00A') RMS$_RNF 98986->98994 (%X'000182B2') RMS$_RTB 99108->98728 (%X'000181A8') plus 70 more (BKZ, BLN, BUG, CCR, CHG, COD, CRE_STM, CREATED, CUR, DAC, DAN, DEL, DIR, DME, DNF, DUP, ESS, EXT, FAB, FAC, FEX, FILEPURGED, FLK, FNM, IAN, IFI, IMX, IOP, ISI, KEY, KRF, KSZ, MKD, MRN, NAM, NEF, NMF, OK_ALK/DEL/DUP/LIM/NOP/RLK/RRL/WAT, ORG, PLG, PRV, RAB, RAC, RAT, RER, REX, RFM, RLK, RNL, RPL, RSS, RSZ, SEQ, SHR, SIZ, SUPERSEDE, SYN, TNS, TRE, TYP, WCC, WER, WPL). Wrong aliases were split to their distinct oracle values (KEY!=EOF, DNF!=RNL, SHR!=WER, RAB!=NAM, PLG!=WPL). Anchors NORMAL=65537, EOF=98938, FNF=98962 matched the existing header in the same dump. Success/failure parity (bit 0) is preserved for all 74 -- no RMS$SUCCESS/RMS$FAILURE control flow changes. Two symbols absent from the V7.3 $RMSDEF dump -- RMS$_BSZ (98858) and RMS$_OK_RRV (98865) -- are left unchanged and labelled UNGROUNDED. Blast radius: every RMS consumer in the tree uses the SYMBOL, not a literal; no code hardcodes any of the old numeric values (swept whole tree). All corrected values are now pinned at compile time by 81 _Static_asserts in test_conformance_constants.c (plus 2 drift-guards for the ungrounded pair). Tests: full ctest 165/165 pass, 0 fail. Native-link graph (OVMX_LINK_NATIVE, x86_64 musl) reproduced: 9 LINK.EXE artifacts, all EM_X86_64, zero DT_NEEDED. Co-authored-by: alice <alice@workspace.local> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
baron-3dl
added a commit
that referenced
this pull request
Aug 13, 2026
#445) Bump OVMX_PRODUCT_VERSION V0.4 → V0.4-1. 24 PRs / 32 commits since V0.4, packed across dimensions (point release toward the 0.5 milestone): self-host (R7) #409 lib$tparse · #411 CLI$ compiled-CLD · #413 sys$setddir #414 lib$get_foreign · #415 sys$filescan (RTL foundation) #418 parse_tables.mar→C (spine #2) · #429 LIBRARIAN.EXE+.OLB (spine #3) #435 shareable-vector freeze (GSMATCH stability) authenticity #421 veracity rubric (Q1 oracle-source/Q2 real-inject) · #424 30 oracle-pinned constants #433 rmsdef.h 74 fabricated RMS codes → oracle UX/DCL/RMS #422 SHOW CLUSTER real membership · #441 DCL per-@-level local scope #442 RMS XAB dates → VMS 1858-epoch quadword networking #419 virtio NIC (user-mode default + opt-in tap/bridge) docs #423 clustering release train + swept: other threads' merged work on main since V0.4 Clustering config-authoring UX (vms-098) + its public-manual grounding gate remain 0.5 (minor) deliverables — not triggered by this point cut. 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.
Closes the
missing_constantgap fromdocs/conformance-gap-report.md§3.3 (vms-801.4 baseline): $-namespaced constants the Eight-Cubed VMS C corpus assumes ambient but OVMX defined nowhere. TRUE/FALSE alone touch 24 corpus programs; the full set unblocks the constant dimension for the 28 programs the report tracks (most also carry other blockers — missing functions/headers — so this closes the constant errors, not necessarily run-pass).30 constants defined across 8 headers
ssdef.hTRUE/FALSE(guarded) + 13 SS$_ SYSTEM-facility codesrmsdef.hRMS$_ACC_RUJ,RMS$_JNLNOTAUTHrms/xab.hXAB$C_ITM,XAB$K_ITMLEN,XAB$K_SETMODE(+XAB$K_SENSEMODE)chpdef.hCHP$M_OBSERVE,CHP$M_ALTERissdef.hISS$C_ID_NATURALprcdef.hSYI$_MAX_CPUS,SYI$_ACTIVE_CPU_BITMAP,SYI$_AVAIL_CPU_BITMAPrms/fab.hFAB$M_ASY,FAB$M_RU,FAB$M_UFOossdef.hOSS$M_RELCTXGrounding (clean-room Rule 8)
Every VMS-authentic value was pinned by assembling the public
$SSDEF/$RMSDEF/$XABDEF/$XABITMDEF/$CHPDEF/$ISSDEFmacros as a module of GLOBAL symbols and reading the exact defined longword out of the object's GSD withANALYZE/OBJECT/GSD— documented tool output, no disassembly. SS$_ (11 codes), RMS$_, XAB$, CHP$M, ISS$C from OpenVMS VAX V7.3 (lab-2 node VAX1);SS$_EXITFORCEDandSS$_LOWPREC(absent in VAX V7.3$SSDEF) from OpenVMS Alpha V8.4 (lab-Alpha node ALPHA1). AnchorsSS$_NORMAL=1,SS$_ACCVIO=12,RMS$_EOF=98938,XAB$C_KEY=21verified in the same dumps;SS$_ACCVIO=12matched on both architectures (SYSTEM facility is architecture-invariant). Each value is cited in-comment.The oracle showed
SYI$_item codes,FAB$L_FOPmask bits, andOSS$M_flags already use OVMX-private numbering in the existing headers, so authentic values would collide with existing OVMX bits. Those three families are defined as OVMX-private continuations and labeled as design choices, not VMS-authentic values.Test
tests/libvms/test_conformance_constants.cpins every value with compile-time_Static_asserts (drift fails the build), mirroring vms-982'stest_lock_flag_bits.c. Registered as ctesttest_libvms_conformance_constants.Full ctest: 161/161 pass, exit 0 (the flaky
env_identity_census/userspace_service_registerself-recovered on retry; knownvms-3f9).Deferred (not invented — empirical-not-gate)
LIB$M_CLI_CTRLT: defined only in the DEC C<libclidef.h>header (VSI source); not present in the MACRO-32 definition libraries the oracle can dump (STARLET.MLBhas no match; neither$LIBCLIDEFnor$LIBDEFemits it), and copying it from the.His not permitted under Rule 8. Documented inlibclidef.h.SIGUSR1: a POSIX signal from<signal.h>(confirmed available), not a VMS macro; corpussys_sigprc.cmerely omits#include <signal.h>. Not an OVMX header gap.Finding (out of scope, needs a separate bead)
The RMS$_ oracle dump shows several existing
rmsdef.hvalues disagree with real VMS V7.3:RMS$_ACCis 114690 (not 98826),RMS$_CRE114698,RMS$_RNF98994,RMS$_RTB98728. Flagged inrmsdef.h; correcting them has blast radius across RMS callers.🤖 Generated with Claude Code