Skip to content

Price the OVMX-EXECUTIVE claim on which code a defect edits, not on what an assertion says (vms-ecf, vms-f26) - #47

Merged
baron-3dl merged 4 commits into
mainfrom
work/vms-ecf-f26-r4
Aug 2, 2026
Merged

baron-3dl merged 4 commits into
mainfrom
work/vms-ecf-f26-r4

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

Closes vms-ecf and vms-f26 — the last two open blockers on vms-b33's Phase 2 verdict.

Four rounds. Rounds 1–3 were each refused by an adversary. Round 4 is the first whose central claim the adversary could not break.

The problem

The userspace service register grants exactly one full exemption, OVMX-EXECUTIVE, and the price kept being purchasable:

round what a full exemption cost how
1 one comment line check 4 was grep -qF "$pname" "$proof" — a comment satisfies it
2 one phrase appended to an assertion string edit the text in the suite and the manifest together
3 one declaration flip the service was already OVMX-PARTIAL, so both checks were pre-satisfied
4 two edits, disclosed and filed vms-38c

Round 2's instrument is the one that mattered: if editing an assertion's words is how a service becomes covered, coverage is a naming convention and not a measurement — and that was the same instrument used to make sys$readef "pay".

What lands

The universe is derived from the build, not from source text. The gate compiles all 127 product .c files and reads exported sys$* symbols with nm — 88 services, 88 exported, 0 symbol-only. On main the symbol set and the source set are equal, so nothing was papered over; an asm-alias rename now goes red. No hand-maintained cardinal anywhere.

The price is derived from which code a proven-reddening defect actually edits, in four code-only hops: call graph → the VMS_IOCTL_* constant the kif wrapper references → the case arm in src/kernel/vms_module.c → the file defining that handler. No check reads a service name out of prose.

The answer path is split, and the halves do opposite things. The executive half pays. The userspace remainder — the translation unit defining the service — refutes: a defect that changes an observable public-API answer by mutating code in the calling process is evidence a remainder exists, which is the negation of "all of it is the executive's." Check 6 is a disqualifier, not a sixth thing to buy, and the printed remedy is OVMX-PARTIAL + OVMX-LOCAL — never deletion.

sys$readef was resolved without renaming. Round 2's three renamed assertion texts are reverted in lockstep; git diff origin/main -- tests/qemu/ is empty. It pays like the others: eflag-clref-noop → 24/4, red set equal to require_fail exactly, one red at test_syssvc_ef_mproc.c:221 asserting on sys$readef's own return and out-param, cross-process; eflag-waitfr-eintr-normal → 27/1, both reds in that same proof.

The disqualifier's first result: three services demoted

sys$enq / sys$enqw / sys$deq drop from OVMX-EXECUTIVE to OVMX-PARTIAL + OVMX-LOCAL, taking the EXECUTIVE count 10 → 7.

That is a measurement, not a regression, and it was settled by execution rather than argument. All three kstat-* defects hit one case arm in kstat_to_ss(). Compiling the product TU verbatim, pristine vs. all-three-injected: diff -rq over src/ shows one file differs, zero executive code, while the public status the caller receives changes 3594→2488, 8484→2488, 8508→2488. SS$_DEADLOCK becoming SS$_NOTQUEUED is a different answer, not a different spelling — a caller branching on it behaves differently.

No /dev/vms was needed to prove that, which is exactly the point being claimed. The underlying defect is now filed as vms-82a: the executive uses a private numbering (100/108/116) and never produces an ssdef.h value, so the VMS-visible status is manufactured in userspace. Note the lock manager is the precedent the whole executive ruling rests on — so the one facility cited as proof OVMX does this properly is the one still finishing its answer outside.

Disclosed residual — not claimed closed

Buying a claim still costs two edits, and the round says so in the gate's own text rather than measuring it away. Four successive price statements have each been broken by execution, so no number is carried — the comment explains why and names the residuals instead. Tracked as vms-38c, corrected twice: the cheap route is addition (sys$wflor — flip its PARTIAL+LOCAL block, add one ignored (void)sys$wflor(0u, 0u) to a proof), not deletion, so flooring the manifest against deletion would not close it. The weak hop is check 4, "the proof calls the service" — a call that asserts nothing satisfies it. Only per-assertion runtime attribution closes that, which is what vms-38c exists to do.

Adversarial verification

  • No hop can be made to certify silently — indirect ioctl constant, in-file dispatch thunk, and function-pointer call each go red naming the service and printing executive answer path is: (empty).
  • "A price that cannot be computed must refuse, not certify" is a control: an earlier draft assumed unknown -Wno-* flags are ignored, measured otherwise (gcc rejects one at cc1, all 127 files failed), and the gate refused rather than certifying on an empty symbol set.
  • Reproduced from a clean archive: register rc=0 · 88 services / 68 USERSPACE / 13 PARTIAL / 7 EXECUTIVE · negctl 44/0 · coverage 26/26 · facility_defects.sh selftest rc=0 · kif census rc=0 · census negctl 23/0 · test_runtime_target.sh rc=0.
  • src/ change is comment-only — cpp output byte-identical. tests/qemu/ byte-identical to origin/main, so no test_syssvc_* suite changed and the negative-control job's inputs are unchanged.

🤖 Generated with Claude Code

baron-3dl and others added 3 commits August 1, 2026 18:42
…-spelling universe (vms-ecf, vms-f26)

Two escapes from tests/integration/test_userspace_service_register.sh, both
reproduced end-to-end on 5e69609 before the fix, both now caught, and both added
to the gate's own control set (34 -> 39 controls, 0 failed).

vms-ecf -- THE OVMX-EXECUTIVE PRICE WAS PAYABLE IN A COMMENT. All four checks on
the only full exemption the register grants were source greps, and the fourth was
`grep -qF "$service" "$proof"`. MEASURED: one ignored `(void)vms_kif_readef(0u,&s)`
inside sys$gettim (whose answer is still 100% clock_gettime) plus the single line
`/* also covers sys$gettim */` appended to an otherwise untouched proof took the
register AND the kif caller census to rc=0, printing 11 EXECUTIVE claims.

A fifth check is added: the named proof must contain an assertion that NAMES the
service and that tests/qemu/facility_defects.sh names in a require_fail or
knock_on_fail set -- an assertion an injected defect is known to redden. It is
deliberately NOT priced in runtime PASS lines: those are buyable for one more
line, a vacuous CHECK(1, "sys$gettim ..."). A manifest entry is not, because
run_facility_negctl.sh requires the complete red set under each defect to EQUAL
require_fail + knock_on_fail exactly, and a vacuous assertion cannot go red.

The gate's own header sentence "gaming it costs a test in the suite that boots
the executive, instead of one ignored function call" is DELETED, not corrected.
It was measured false: it cost a comment.

sys$readef was the one OVMX-EXECUTIVE claim of ten with no mutation-backed
assertion (setef 10, ascefc 6, dacefc 3, clref 2, dlcefc 2, enq 2, waitfr 2,
enqw 1, deq 1, readef 0). It is NOT downgraded to OVMX-PARTIAL: the service is
fully executive-resident and naming a process-local half it does not have would
be the invented third answer Rule 10 forbids. Instead the three cross-process
readback assertions in test_syssvc_ef_mproc.c -- each of which is asserted on the
status AND state word sys$readef returned -- now name the reader as well as the
writer, in lockstep with the four texts facility_defects.sh carries for them.
`facility_defects.sh selftest` confirms every manifest text still exists in a
suite source. sys$readef now scores 3.

vms-f26 -- THE UNIVERSE WAS DERIVED FROM SOURCE SPELLING. MEASURED: renaming the
definition sys$gettim -> ovmx_gettim, renaming its prototype in lockstep and
restoring the public name with `__asm__("sys$gettim")` plus a #define took the
universe silently from 88 services / 88 declared / 87 protos to 87 / 87 / 86 with
rc=0 and PASS -- every existing check saw a consistent smaller tree, and the
object stayed symbol-identical to pristine (nm shows `T sys$gettim` in both).

The universe now has a third member that is not source text: the gate compiles
every product .c file it scans (src/kernel excluded and declared) and reads the
defined global sys$* symbols out of the objects with nm. A service exported under
a name its source does not spell joins the universe under its EXPORTED name and
must still declare. Under the same rename the gate is now RED naming sys$gettim,
with the universe still 88.

Residuals stated in the header rather than claimed away: the scan does not read
assembly (measured: no sys$ token in any .S/.s in the tree today), and the call
graph still cannot follow an alias, so an aliased service shows "-" in the
exec/state columns.

New controls (the gate's own machinery is now controlled too): the comment-paid
price; an EXECUTIVE claim with the manifest entry withheld; a fully paid claim
(green) which has to add a manifest entry; the manifest emptied out (the price
must be computable, not skipped); the asm-label rename; and a product file that
does not compile (a symbol scan that broke must say so, not certify).

Verified by execution on this branch:
  register gate                     rc=0  (88 services, 88 exported, 127 objects)
  register negative controls        rc=0  (39 controls passed, 0 failed;
                                           coverage 24/24 failure messages)
  vms_kif caller census             rc=0
  vms_kif census negative controls  rc=0  (23 passed)
  facility_defects.sh selftest      rc=0
  test_runtime_target.sh            rc=0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…hat an assertion says (vms-ecf)

ROUND 2 REPLACED A COMMENT-PAYABLE PRICE WITH A PROSE-PAYABLE ONE. Its rule --
"an OVMX-EXECUTIVE claim must name an assertion facility_defects.sh has proven
reddenable, that mentions this service" -- bound the mutation to the service
through an assertion's WORDING, and that string lives in exactly two files, both
editable in one commit. Measured settling command: append ", clock via
sys$gettim" to a proven assertion in tests/qemu/test_syssvc_ef_mproc.c AND
tests/qemu/facility_defects.sh, flip sys$gettim to OVMX-EXECUTIVE, add one
ignored vms_kif_readef() -- gate rc=0, "sys$gettim x1" printed as a paid claim.
If editing an assertion's words is how a service becomes covered, coverage is a
naming convention. Worse, that was the instrument round 2 used to take
sys$readef from 0 mutation-backed assertions to 3.

THE PRICE IS NOW CHARGED AGAINST THE SERVICE'S ANSWER PATH -- the set of source
files its answer can come from, derived in four hops that are all code:

  sys$readef  (src/libvms/syssvc/sys_event.c)
    -> vms_kif_readef                        the call graph the gate already has
    -> VMS_IOCTL_READEF                      the constant that wrapper references
    -> vms_ioctl_readef                      the `case` arm src/kernel/vms_module.c
                                             dispatches it to
    -> src/kernel/vms_eflag.c                where that handler is defined

The ioctl is the one hop no call graph can walk, so it is read out of the
executive's own dispatch switch. A claim is paid when some defect's `targets`
land inside that set AND one of its require_fail/knock_on_fail texts appears in
the named proof, comment-stripped. The assertion never has to mention the
service. Check 4 is also upgraded: the proof must CALL the service (same
comment-stripping scanner), not mention it.

WHAT IT COSTS NOW, MEASURED BY EXECUTION RATHER THAN CLAIMED (method 5 applied
to this fix). Buying sys$gettim an OVMX-EXECUTIVE claim takes THREE edits, none
of them prose: the declaration flip; `(void)vms_kif_readef(0u,&s)` in its body;
`(void)sys$gettim(&t)` in the proof. Two are ignored calls. Step A (first two
only) is RED "PROOF NEVER CALLS THE SERVICE"; step B is PASS. THE PRICE IS
STILL PURCHASABLE and the header says so -- what changed is the currency. The
residual is vms-d89's, unchanged: "contains a call" is a syntactic proxy and
every syntactic proxy is purchasable. Closing it needs per-assertion service
attribution measured at RUNTIME by run_facility_negctl.sh; filed as vms-38c.

sys$readef IS RESOLVED WITHOUT RENAMING ANYTHING, and round 2's three renamed
assertion texts are REVERTED in lockstep across the proof and the manifest --
tests/qemu/ is now byte-identical to its pre-round-2 state. Under the new rule
sys$readef pays exactly like the other nine: eflag-clref-noop and
eflag-waitfr-eintr-normal both edit src/kernel/vms_eflag.c, which is in its
answer path, and both redden assertions in the proof it names. The measured
"sys$readef has 0 mutation-backed assertions" was an artefact of the metric:
eflag-clref-noop's require_fail already names two assertions that read
sys$readef's own return ("readef(5) after clear returns WASCLR",
"sys$readef(1) reported WASCLR after the clear") -- they live in
test_kmod_eflag.c and test_syssvc_ef_local.c, single-process suites an
OVMX-EXECUTIVE proof may not point at.

Controls 39 -> 42, 0 failed, coverage 24 -> 25 messages. New: the round-2
settling command itself; a claim whose proof is reddened by defects but none
editing its answer path; the same with the most favourable defect an adversary
could fabricate (real assertion from that proof, real executive target file,
wrong facility); and the ioctl bridge made unreadable -- a gate that cannot
compute its check must refuse, and that refusal is conditional on there being
an EXECUTIVE claim to price, because making it unconditional turned the gate's
own floor fixture into a bridge failure (measured).

Verified by execution (container with libssh-dev; the host lacks it, so the
symbol scan honestly refuses there):
  register gate                     rc=0  (88 services, 10 EXECUTIVE, all paid)
  register negative controls        rc=0  (42 passed, 0 failed, coverage 25/25)
  facility_defects.sh selftest      rc=0
  vms_kif caller census             rc=0
  vms_kif census negative controls  rc=0  (23 passed)
  test_runtime_target.sh            rc=0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…futes a full exemption (vms-ecf)

Round 3 priced an OVMX-EXECUTIVE claim on which code a proven defect edits, but
every check it added was evidence that the executive is REACHED -- and an
OVMX-PARTIAL service reaches it by definition. So a service that was already
PARTIAL satisfied all of them before any edit, and the upgrade to a full
exemption cost exactly one thing: deleting its own OVMX-LOCAL half. Measured by
an adversary on sys$creprc: one edit, no calls added, no test file touched,
PASS with 11 exemptions -- paid for by creprc-handshake-eintr, which edits
src/libvms/syssvc/sys_process.c, pure userspace.

The answer path is now SPLIT and the two halves do opposite things:

  - the EXECUTIVE half (files holding the handlers for the ioctls the service's
    reachable functions issue) PAYS, as before;
  - the USERSPACE REMAINDER (the translation unit that DEFINES the service --
    the same unit this register already requires the OVMX-LOCAL half to live
    in) REFUTES. A defect that changes an observable public-API answer by
    mutating code running in the calling process is evidence that a remainder
    exists, which is the negation of "all of it is the executive's".

The remainder is deliberately NOT the transitive userspace closure: the call
graph is name-keyed product-wide and the first draft pulled src/imgact/imgact.c
into sys$enq's remainder and src/libvmssys/vms_kif.c -- the transport -- into
every event-flag claim, which would have manufactured refutations.

The disqualifier is not scoped to the named proof, because that would be
proof-shoppable.

CONSEQUENCE, and it is a finding rather than a cost: sys$enq/sys$enqw/sys$deq
are DOWNGRADED to OVMX-PARTIAL + OVMX-LOCAL. kstat-deadlock-mismapped,
kstat-ivlockid-mismapped and kstat-cvtungrant-mismapped each mutate
src/libvms/syssvc/sys_lock.c ONLY -- no executive code -- and each changes what
a public-API caller sees. The hand-written defence that sat in that file
("a translation of the executive's answer, not a substitute for it") is exactly
the prose the register is not allowed to read, and the manifest contradicts it.
The change to src/ is comment-only: preprocessed output is byte-identical.

DELETED, not restated: the header's "THREE edits, two of them ignored calls"
measurement. Four consecutive revisions stated a per-site price and all four
were broken by execution. The residuals are named instead of costed.

MEASURED AFTER THE FIX (Method 5 on my own price), stated because it is still
purchasable: all five named PARTIAL->EXECUTIVE upgrades (sys$creprc, sys$getjpi,
sys$assign, sys$qio, sys$qiow) are now RED. The remaining buy is FOUR edits --
delete the three manifest entries targeting src/libvms/syssvc/sys_process.c,
then flip the declaration -> register rc=0, PASS, 8 exemptions, and
facility_defects.sh selftest rc=0 does not notice the deletion. Recorded on
vms-38c.

Verified (container, libssh-dev present): register rc=0 -- 88 services, 88
exported, 0 symonly, 127 objects, 7 EXECUTIVE all paid, 13 PARTIAL; register
negctl 44/0 with coverage 26/26; facility_defects selftest rc=0; kif census
rc=0; census negctl 23/0; runtime_target rc=0. tests/qemu/ is byte-identical to
origin/main (diff is empty), so eflag-clref-noop and eflag-waitfr-eintr-normal
are untouched and were not re-run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
baron-3dl pushed a commit that referenced this pull request Aug 2, 2026
Four statements in the 2026-08-01 revision were measurably wrong and are
corrected in a new section 0: podman (the host has docker), vms-a30 being
outside the closure (it blocks vms-150), the lab path (/data/training/vax),
and main's SHA (moved to ce11330). Several origin branches are duplicate
refs at the same SHA, so the doc now says to establish a round by SHA.

Frontier state: vms-fbe is draft PR #46 at 35/35 green; vms-ecf + vms-f26 are
draft PR #47, adversary-cleared but CI-red on a source-scan refusal that is
the gate working correctly; vms-cb5 round 4 is pushed and in verification.
The executive-resident count is now 7, not 10 -- sys$enq/sys$enqw/sys$deq
were demoted to PARTIAL on measured evidence (vms-82a).

Section 5 gains the lessons earned this round: open the draft PR early
because CI is a different and cheaper oracle; a passing test can conceal the
failure mode it was written to detect; distinguish a container's exit status
from a suite's; a gate printing a confident wrong cause is worse than one
printing none; test a disqualifier for over-firing, since under-claiming is
also a wrong measurement; and go to the lab before declaring a VMS value
unpinnable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ry product source (vms-ecf)

CI went red on PR #47 and the gate was RIGHT to refuse:

  FAIL: BROKEN SYMBOL SCAN: 126 of 127 product source file(s) compiled.
    src/vmsssh/vmssshd.c:37:10: fatal error: libssh/libssh.h: No such file

The build-derived universe (vms-f26) compiles every product .c file and reads
the exported sys$ symbols with nm, because both source-text readings of the
universe were escaped together by one asm-label rename. So this gate's
dependencies are the whole product's dependencies -- including sources CMake
would skip. src/vmsssh/vmssshd.c is a real product source; without libssh-dev
one file contributes no symbols and a service could hide behind a build error.
That refusal is the same property as the -Wno-* flag probe beside it: a price
that cannot be computed must refuse, not certify.

TAKEN: the first legal answer -- make the condition unreachable. libssh-dev is
added to the Build & Test job, the only job that runs ctest and therefore the
only one that runs these two entries. NOT taken: skipping the file,
allowlisting it, tolerating a short count, or downgrading the refusal. The
gate's header now says so where the exclusion mechanism is documented, so the
next person meets the reason before the workaround.

MEASURED, AND IT CORRECTED THE EXPECTATION I WENT IN WITH: libssh-dev adds NO
test entries. ctest -N reports 53 with it and 53 without -- identical. What
CMake skips without libssh is src/vmsssh (the daemon), which registers no
tests; tests/vmsssh (term_mapping) has no libssh dependency and is configured
either way, deliberately (CMakeLists.txt:171). The "39 -> 41" figure this
commit was first written around is wrong and is not in the tree. The one thing
the package changes that ctest can see is 126/127 -> 127/127.

VERIFIED by execution in a container mirroring the job (ubuntu:24.04 + the
job's apt list): configure rc=0, build rc=0, ctest 53/53 passed 0 failed, with
entry 8 userspace_service_register and entry 9
userspace_service_register_negctl both Passed. The same tree in the same image
WITHOUT libssh-dev reproduces the CI failure exactly, so the fix is
load-bearing rather than incidental.

Register rc=0 -- 88 services, 88 exported, 0 symonly, 127 objects, 7 EXECUTIVE
all paid, 13 PARTIAL, 68 USERSPACE; register negctl 44/0 with coverage 26/26;
kif census rc=0; census negctl 23/0; runtime_target rc=0; facility_defects
selftest rc=0. origin/main has moved to ce11330; it merges clean and the
register is rc=0 with 127 objects on the merge result too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@baron-3dl

Copy link
Copy Markdown
Contributor Author

Round 5 — adca060, the CI refusal

The Build & Test failure was this branch's own gate working correctly:

FAIL: BROKEN SYMBOL SCAN: 126 of 127 product source file(s) compiled.
  src/vmsssh/vmssshd.c:37:10: fatal error: libssh/libssh.h: No such file or directory
  ... so a service could hide behind a build error. Do NOT let a compile failure pass silently.

The build-derived universe is new on this branch, so the gate hard-fails wherever libssh-dev is absent — the GitHub Build & Test job, and the workshop dev host. Legal answer taken: make the condition unreachable. libssh-dev is added to the Build & Test job's apt list (the only job running ctest, hence entries 8 and 9). The refusal itself is untouched — no skip, no allowlist, no tolerated short count, no downgrade to a warning. The gate header now documents why its dependencies are the whole product's dependencies, next to the SYMSCAN_EXCLUDE_DIR mechanism, so the next reader meets the reason before the workaround.

Source scan: 127 of 127 (was 126). Universe still 88 = 88, 0 symbol-only.

Verified in a container mirroring the job: configure rc=0, build rc=0, ctest 53/53 passed, 0 failed; entry 8 Passed (6.86 s), entry 9 Passed (197.8 s). The same tree in the same image without libssh-dev reproduces the CI failure exactly — the fix is load-bearing, not cosmetic.

One correction worth recording: the orchestrator predicted this would take ctest from 39 to 41 entries. Measured, that is wrong on this treectest -N reports 53 with libssh-dev and 53 without, identical. CMake skips src/vmsssh (the daemon registers no tests) and tests/vmsssh (term_mapping) has no libssh dependency and is configured either way (CMakeLists.txt:171). The wrong number had already been written into the ci.yml comment and was corrected there rather than shipped.

Gates on the merge result against main @ ce11330 (merges clean): register rc=0 — 7 EXECUTIVE all paid, 13 PARTIAL, 68 USERSPACE, 127 objects · register negctl 44/0 · coverage 26/26 · kif census rc=0 · census negctl 23/0 · test_runtime_target.sh rc=0 · facility_defects.sh selftest rc=0.

@baron-3dl
baron-3dl marked this pull request as ready for review August 2, 2026 02:06
@baron-3dl
baron-3dl merged commit 57fc164 into main Aug 2, 2026
35 checks passed
baron-3dl pushed a commit that referenced this pull request Aug 2, 2026
The eight defects found in passing while settling the three branches were
filed unwired; this records where triage put them. A new parent vms-95f
groups the four harness-integrity items (vms-b1f, vms-c9c, vms-215,
vms-008) and blocks vms-150. vms-38c also blocks vms-150. vms-82a, vms-e60
and vms-2f8 block vms-042; vms-2d37 blocks vms-898.

The harness parent blocks vms-150 and deliberately NOT vms-b33: Phase 2
rests on per-suite evidence these defects do not corrupt, and it is the
near-term unblock. Phase 3 veracity is exactly the claim that our
measurements mean what they say, so it waits.

Closure goes 17 -> 26 open, no cycles. That is a sequencing decision, not a
scope decision, and section 3 records the undo: un-wiring the five items
returns it to 17 and ships the epic sooner on softer evidence. That trade
is the operator's.

All three branches are now PRs #46, #47 and #48, marked ready for review.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
baron-3dl pushed a commit that referenced this pull request Aug 2, 2026
PR #46 (vms-fbe, c243992) and PR #47 (vms-ecf + vms-f26, 57fc164) are
merged; main is eff4fe3 and all three items are closed. PR #48 (vms-cb5)
remains open at 1598ef5 with main merged in and the knock_on_fail fix for
the two scenario-G/OPCOM+ reds under bind-client-no-register.

vms-b33 is unblocked and active: its last two blockers closed with #47, so
the fifth Phase 2 verdict is the next thing to run. vms-150 does NOT unblock
when #48 merges -- vms-a30, vms-95f and vms-38c also block it.

Closure is 23 open, not 26: eight defects triaged in against three items
closed on merge, from a starting 17.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
baron-3dl added a commit that referenced this pull request Aug 4, 2026
* docs: handoff for the vms-14f executive-residency dispatch

Records the execution pointer, the three open branches and their named
blockers, the method rulings that were paid for during the dispatch, and
the harness arithmetic reconciled in vms-215.

Wave 47 outcomes are appended in a follow-up commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs vms-14f: rewrite the handoff after the 2026-08-02 frontier round

Four statements in the 2026-08-01 revision were measurably wrong and are
corrected in a new section 0: podman (the host has docker), vms-a30 being
outside the closure (it blocks vms-150), the lab path (/data/training/vax),
and main's SHA (moved to ce11330). Several origin branches are duplicate
refs at the same SHA, so the doc now says to establish a round by SHA.

Frontier state: vms-fbe is draft PR #46 at 35/35 green; vms-ecf + vms-f26 are
draft PR #47, adversary-cleared but CI-red on a source-scan refusal that is
the gate working correctly; vms-cb5 round 4 is pushed and in verification.
The executive-resident count is now 7, not 10 -- sys$enq/sys$enqw/sys$deq
were demoted to PARTIAL on measured evidence (vms-82a).

Section 5 gains the lessons earned this round: open the draft PR early
because CI is a different and cheaper oracle; a passing test can conceal the
failure mode it was written to detect; distinguish a container's exit status
from a suite's; a gate printing a confident wrong cause is worse than one
printing none; test a disqualifier for over-firing, since under-claiming is
also a wrong measurement; and go to the lab before declaring a VMS value
unpinnable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs vms-14f: record the PM triage of the eight items found this round

The eight defects found in passing while settling the three branches were
filed unwired; this records where triage put them. A new parent vms-95f
groups the four harness-integrity items (vms-b1f, vms-c9c, vms-215,
vms-008) and blocks vms-150. vms-38c also blocks vms-150. vms-82a, vms-e60
and vms-2f8 block vms-042; vms-2d37 blocks vms-898.

The harness parent blocks vms-150 and deliberately NOT vms-b33: Phase 2
rests on per-suite evidence these defects do not corrupt, and it is the
near-term unblock. Phase 3 veracity is exactly the claim that our
measurements mean what they say, so it waits.

Closure goes 17 -> 26 open, no cycles. That is a sequencing decision, not a
scope decision, and section 3 records the undo: un-wiring the five items
returns it to 17 and ships the epic sooner on softer evidence. That trade
is the operator's.

All three branches are now PRs #46, #47 and #48, marked ready for review.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs vms-14f: two of the three frontier branches are merged

PR #46 (vms-fbe, c243992) and PR #47 (vms-ecf + vms-f26, 57fc164) are
merged; main is eff4fe3 and all three items are closed. PR #48 (vms-cb5)
remains open at 1598ef5 with main merged in and the knock_on_fail fix for
the two scenario-G/OPCOM+ reds under bind-client-no-register.

vms-b33 is unblocked and active: its last two blockers closed with #47, so
the fifth Phase 2 verdict is the next thing to run. vms-150 does NOT unblock
when #48 merges -- vms-a30, vms-95f and vms-38c also block it.

Closure is 23 open, not 26: eight defects triaged in against three items
closed on merge, from a starting 17.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs vms-14f: rewrite the handoff for the seventh Phase 2 verdict

The 2026-08-02 revision named PR #48 as its only loose end; #48 merged
twelve minutes after that revision was committed, so the document was
stale within the hour. Main has since moved eff4fe3 -> 8e8be98 through
eight merges closing vms-b33 blockers, plus four SCS merges from another
dispatch.

vms-b33 is blocked again, by exactly five items -- vms-c79, vms-004e,
vms-659, vms-d894, vms-35f -- every one a two-edit escape from a static
gate, all filed by the seventh verdict's adversary. Closure re-derived by
DAG walk from vms-14f: 35 open, counting the epic, up from 23.

Numbers re-derived rather than carried: the eight merge SHAs against
gh api (all green on Build & Test and the per-facility negative control
job); the ctest counts at 44870ac / 8552c29 / d9b69cc / 8e8be98 (56 / 56 /
58 / 59) by configure-only enumeration, which is what makes "a green on a
stale base is not evidence" a measurement rather than an assertion; the
CI timeout raise 20 -> 35; the ledger's 22 rows checked against rd's live
open set by hand. What was NOT re-measured is labelled as such -- the
ctest 2-failure pair and the rd_citations_fresh flake are carried from
run 7, and the round ran under a no-builds constraint at 95% disk.

Keeps visible: 13 of 44 entry points remain unwired, so Phase 2 closing
means what is wired is proven, not that the executive is complete; and
the vms-1e1 (B) ruling with its one-command undo, whose binding side
condition is now itself under attack by vms-004e and vms-35f.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: alice <alice@workspace.local>
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