Mesh: nodes built before #285 get no mesh from an upgraded server (Peer.previous_active always serialized vs deny_unknown_fields), silently #380
Open
opened 2026-11-06 02:15:33 +00:00 by kayg
·
73 comments
No Branch/Tag specified
main
j470b-server-mesh-rejoin
mesh-compat-382
j444b-d381-key-wins-flood
j461b-macos-utun-reader-thread
j475b-remove-host-motion
fix-reconnect-new-link
j481-d380
dev
j479-mesh-soak
fix/j476-host-facts
j475-motion-pill-split
j470-mac-node-join
root-upgrade-d376
j474-review-merge
latency-targets-120hz
nightly-suite-shards
gotatun-pin-j469
macos-utun-reader-thread
fix-flood-echo-stall
wip/j416
motion-fast-ease-out
mesh-addhost-j259
takeover-close-terminals-d368
kbd-instant-followups
fix-trust-key-double-click
nightly-suite-partial-report
appwin-icons-j207
rusqlite-slice1
swipe-content-first-d374
mesh-mtu-381
addhost-instant-open
glass-contrast-d365-mock
glass-contrast-d365
signout-followups-442
fix-startup-toast-red
research-gotatun-matrix-j317
themes-sync-j304
fix-load-flakes
fix-nix-zig-patch
fix-compute01-browser-baseline
ratchet-size-baseline-419
predict-auto-d130
revoke-coverage-d367
nightly-suite-queue-timeout
nightly-browser-suite
fix-rustsec-2026-0459
fonts-ioskeley-obel
log-retention-d375
fix-kbd-no-anim-427
fix-dev-red-specs-2
takeover-proof-305-j205
wip/j410-server-pump
ui-consistency-d372
fix-osc52-clipboard
libghostty-vt-1.0
forget-retired-host-d369
j404-merge-426
fix-setup-lock-race
fix-touch-select-426
revoke-access-report-ui
fix-predictive-echo-specs
fix-selinux-agent-exec
wip/j395-checkpoint2
wip/j395
j391-review-scratch
ui-consistency-j195-deferred-rebased
fix-rustc-paths-421
decisions-wording-341
fix-install-suite-red
fix-dev-rtt-specs
fix-pending-removal-align
fix-privileged-skip
fix-install-suite-404
review-j368
mesh-dns-j254
revoke-access-report-d356b
revoke-privilege-round5
fix-removal-confirm
review-j360
gotatun-rotation-367
deps-refresh-340
review-j354
review-J351
review-j350
addhost-takeover-d359
revoke-report-items-347
revoke-end-sessions-d362
review-j348
size-mesh-ssh-346
size-trim-337
revoke-access-diff-d356
j259-pre-rebase-b06c5a6
j305-ended-at-start-spec
addhost-sudo-consent
fix-layout-real-specs-411
fix-shell-open-411
fix-console-hosts-373
fix-shell-exit
fuzz-host-name-353
fix-host-details-410
macos-filter-j197
research-gotatun-tricks
revoke-p3-j216l
stale-state-pill
revoke-followups-j216k
revoke-progress-j216e
backup/macos01-20261106/lume/j197
backup/macos01-20261106/lume/appwin-icons-j207-stash0
backup/macos01-20261106/claude/stash-0
backup/macos01-20261106/claude/stash-1
backup/macos01-20261106/claude/J80-macos-s1
backup/macos01-20261106/claude/J80
backup/macos01-20261106/claude/J80-slice1-20261102
backup/macos01-20261106/claude/J16b-appwin-on-dev
backup/macos01-20261106/claude/appwin-launch-idle-146
backup/macos01-20261106/claude/J80-s1-run
wip/j259
trust-285-p3c
runtime-lock-j216f
mesh-ssh-p3-j175
tun-proof-p3b
trust-285-p3
terminal-polish-j271
tun-proof-p3
ssh-install-flakes-j216i
fuzz-fixes-j264
trust-285-a
trust-285-b
restart-oversized-fixture-j198
backup/macos01-20261106/lume/appwin-icons-j207
restart-bound-j216h
up-preflight-p3-j198
backup/macos01-20261106/lume/j251
up-preflight-j198
wip/up-preflight-j198-j245-p2
wip/up-preflight-j198-j245-p1
agent-fsync-offloop-j196
wip/up-preflight-j198-j245
settings-offscreen-j231
wip/up-preflight-j198-j226-inspection
wip/j103f
themes-j206
wip/up-preflight-j198-j226
flakes-j216c
backup/macos01-20261106/claude/j197
flakes-j216b
backup/macos01-20261106/claude/j197-red
wip/up-preflight-j198-review
flakes-j216
backup/macos01-20261106/claude/appwin-icons-j207
engineering-j208b
appwin-mock-j209
toast-stack-j165
engineering-j208
decisions-d351
decisions-d350
decisions-d349
appearance-presets-mock-j129
decisions-d348
docs-audit-spec
doc-coverage-baseline-raise
decisions-d347
decisions-d346b
decisions-d346
j88h-profile
ui-consistency-j195-deferred
ui-consistency-j195
engineering-practices-j194
preferred-login-ui-j166
signin-pools-263-j174
macos-node-265-s1
decisions-d345
decisions-d344
proxy-cgroup-j164
verify-quick-fuzz-329
proxy-start-io-j168
timing-flakes-j163
up-263-s1
mcp-events-j147
verify-quick-fuzz-j158
proxy-p3-j159
agent-resource-j157-detect
wip/j103d-final
remote-cancel-hang-j155
proxy-traefik-281-j62d
j149-verify-quick
proxy-traefik-281-j62b
j150-drop-unnamed
wip/j79d-red-r4
wip/j103d-d332
rootless-toast-j142
wip/j103d-head
wip/j103d
j125c-mcp
macos-build-j136
backup/macos01-20261106/claude/j136
wip/j79d-red-cli
wip/j79d-red-server
j121-link-liveness
j118c-tracer-failures
wip/j79c-head
release-desktop-j131
j124c-signed-macos
wip/j79c-red-p3
wip/j79c-red-p23
wip/j79c-red-p22
merge-j128-check
perf-deferred-j128
sidebar-toggle-260
j127-shortcut-changed-dot
j125-mcp
j118-tracer-failures
j126-account-summary
settings-sections-mock-j92
j120-pinch-lock
sidebar-292
backup/macos01-20261106/claude/j120
taste-2026-11-03
row-actions-242-215
backup/macos01-20261106/claude/stash-0-untracked
backup/macos01-20261106/claude/J80-265-s1-run
backup/macos01-20261106/claude/J80-macos-s1-20261102
j112-canvas-commands
ui-no-overshoot-scroll
fix-recovery-restart
backup/macos01-20261106/claude/stash-1-untracked
taste-2026-11-02
size-baseline-ratchet
machine-cards-structure-j108
j109-boot-copy-mockups
fix-dev-red
wip/up-263-s1
j95b-settings-rows
proxy-traefik-281
j95-option-rows
docs-human-j91
docs-keys-palette
fix-flood-1013-270-j38d
mesh-ssh-s1
mesh-ssh-s0
addhost-d291-tunnel
test-stability-load
mesh-relay-220
repro-296
shim-thp-off-24
mesh-pins-258-v2
mesh-dns
signin-d311-merged
docs-pages
ui-size-283
fix-ui-batch-specs
wip/j12b-edge-update
gate-on-arm
fix-rename-sync-293
trust-285-j60b
fix-focus-ring-clip
integ-ui-1101
edge-update-v2
signin-d311
taste-2026-11-01
layout-per-tab-250
ui-approved-splitopt-224
ui-approved-splitopt-224-on-dev
icon-text-centre-282
ui-approved-189-212-216
research-reverse-proxy
transfer-budget-320
review-mesh-pins-258-r2
sidebar-pill-259
review-mesh-relay-220
wip/j12-edge-update-v2
nix-package
status-crash-loop-237
fix-dev-test-failures
fix-fixture-socket-path
wip/mesh-relay-220-pre-dev-advance-rebase
fix-canvas-side-clip
research-head-to-head
frosted-real-256
review-mesh-pins-258
wip/mesh-relay-220-pre-final-rebase
review-layout-per-tab-250-r2
broad-suite-triage
nix-devshell
review-status-crash-loop-237-r3
wip/nix-devshell-pre-p3
taste-frosted-real
wip/code-serve-demo-2026-10-30
wip/code-serve-glass-2026-10-30
wip/code-serve-clusters-2026-10-30
wip/code-merge-release94-dev-2026-10-30
wip/rproxy-delta-scratch-2026-10-30
wip/stale-note-257-staged-2026-10-30
wip/d241-size-staged-2026-10-30
review-broad-suite-207
wip/mesh-pins-258-pre-split
wip/mesh-relay-220-pre-rebase
mesh-measure-220
plan-211-update
review-edge-autoupdate-r3
perf24-reconnect
review-stale-note-r2
release-prod-live
d241-shell-marker
review-mesh-pins-server-258
review-revocation-r3
review-setup-token-r2
review-sync-journal-r3
wip/review-mesh-pins-258-prune-review-1995fee46
frosted-scroll-256
sync-journal-r3
revocation-per-account-wip
review-tokio-asyncfd-0386
review-sync-p3s
wip/stash-8by64-stash0-2026-10-30
mesh-drag-r2
setup-token-data-wip
release-9-4
auth-busy-1013
mesh-view-overlap
sync-p3s
review-auth-busy-wake
review-readd-r8-wip
mesh-drag-bounds
audit-auth-93
app-windows-stream-start
review-authority-cap-r3
app-windows-r7-measure
readd-minimal-r6
readd-minimal-r5
app-windows-r7-soak
readd-minimal-r4
app-windows-r7
app-windows-r6
readd-minimal-r3
readd-minimal-r2
readd-minimal
merge-release8-dev
review-busy-page-liveness-r2
review-busy-page-liveness
mesh-view-trim
review-authority-read-retry-r2
review-remove-uninstall-r2
release-retry-reattach
release-retry
review-remove-uninstall
review-authority-read-retry
app-windows-ship
mesh-autoswitch-p2
mesh-ssh
mesh-relay
mesh-macos-node
screen-and-control
session-labels
review-real-logins-r5
review-real-logins-r4
review-real-logins-r3
shim-memory-r2
review-real-logins-r2
shim-memory
shadow-addhost-instant
shadow-real-logins
shadow-same-session-flood
shadow-prod-perf-fix
hosts-from-server
app-windows-real
app-windows-transport
release-prod-6w
mesh-policy-verify
quiet-close-toast
dev-merge-r4
review-mesh-agent-transport
review-app-windows-transport
settings-roundtrip
review-release-pipeline-r4
mesh-agent-transport
ended-strip-fix
review-audit-ca-update-d244
settings-rows
phone-width
signout-clear
fix-restart-tests
dev-merge-rp
signer-hardening
review-audit-ca-update
terminal-fidelity
review-audit-ca-update-wip
mesh-integrate
review-mesh-agent-transport-515d3712
review-mesh-dataplane-feec1988
mesh-dataplane
signout
research-canvas-node
wip/review-renderer-cost
wip/review-terminal-fidelity
padlock-glyph
review-release-pipeline-2e95b689
phone-polish
sidebar-polish
inbox-generic
review-mesh-dataplane-378d4055
prod-batch
ui-inbox
ui-ca-unlock
ui-machine-sections
review-mesh-dataplane-a5f744fb
tls-session-prod
session-bounds-prod
fix-dead-session
session-bounds
tls-session
palette-polish
shortcuts-d222
research-appmeta
phone-gutter
ui-centre-button
wip/ui-centre-button
wip/tls-session
review-addhost-breakit
ui-platform
renderer-cost
remote-agents
mesh-api
ssh-bootstrap
prod-hotfix2
prod-fixes
review-remote-agents
review-mesh-dataplane
session-life
research-browser
review-mesh-api
research-capture
review-mesh-api-round3
review-mesh-api-round1
gate-stability
review-gate-stability
review-relay-direct
review-mesh-api-findings
proto-sessions
font-picker
proto-addhost
proto-windows
mesh-core
latency-gate
research-bsd
research-discovery
keytray-mods
mock-core
ui-tweaks
fix-motion-sel
fix-motion
integrate2
fix-robust
t-web
t-server
vt-ghostty
fix-snap-echo
t-web-auth
review-vt2
t-agent
lane-protocol
lane-shim
lane-auth
s1-base
s1-contracts
s1-workspace
No results found.
No labels
launch-qa
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/infraternal#380
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by J267 (#375, Mac mesh break-it). Severity P2: availability. No data or key exposure, but every node on a pre-#285 build loses the mesh once its server upgrades. With #379 (dev doesn't build on macOS), no Mac can currently mesh with a dev server at all.
What: #285 added two fields to the wire type
dataplane::Peer(crates/plugins/mesh/src/dataplane.rs):Peeris#[serde(deny_unknown_fields)]in every build (dataplane.rs:44now,:41at9b0c731e8).previous_activeis serialized in every peer of every config, rotating or not. A node built before #285 (for example9b0c731e8) therefore refuses every config chunk from a server at363d95468or later, and gets no peers.Live A/B (same Mac binary, sha256
2f9863b2…, built at9b0c731e8):9b0c731e8: the Mac joined,utun410.254.0.2 came up, mesh traffic flowed (#375: about 120 Mbit/s up, every break case).0b72f638a: the Mac enrolled (agent joinok,mesh.listshows node 2) and its daemon connects and authenticates (remote agent HTTPS client phase=ready-receive complete). But after more than 5 minutes the node is never live:mesh.listhaslive:false, last_seen:null, there's no 10.254 address on any utun, and/var/lib/infraternal/state/mesh-public.jsonholds{"enabled":true,"config":null,"routes":[],…}, so no config was ever accepted. Evidence:lume@mac:~/j267-evidence/fg-agent.log, the server logroot@compute01:/root/j267/server2.log.RUST_LOG=debug) prints nothing afterready-receive. The server logs nothing for node 2. The launchd plist sends stderr to/dev/nullanyway.Reproducer:
363d95468.9b0c731e8or earlier (Mac or Linux; the type is shared) and runmesh up.config:nullandlive:false, silently.Why it matters beyond the lab: a server upgrade normally lands before its hosts update (D251 edge auto-update). Every older node drops off the mesh in that window, with nothing in the UI or logs saying why. A Mac can't update at all until #379 is fixed.
Notes for the fix (report only, not chosen here):
skip_serializing_if = "std::ops::Not::not"onprevious_activewould restore compatibility while no rotation is running, matching the neighbouring fields. Whether old nodes should tolerate unknown fields, or the server should send per-node capability-shaped configs, is a protocol decision. Either way, a refused chunk should be logged on both sides.Links: #285, #379, #375, #260, D166, D352.
J287 start. Branch
mesh-compat-382, base3dc58dc67b771c7e38a298c3c5ac437055b8ff44(origin/dev).Plan (estimate 4 hours): (1) read D166/D339/D352 and J267's issue evidence; determine and document restore support and stale state behavior on #382, (2) write and observe a failing regression test for #382, then fix and commit, (3) write and observe a failing regression test for #380, then fix and commit, (4) prove both fixes on compute01 and dev-02 under the mesh claim, (5) run
verify quickandverify fast, and post evidence and final heads/gate output. Safe restore behavior is fail closed if compatibility remains unresolved.J287 implementation proposal before code (contracts remain additive):
#382 restore behavior: Two options are (1) require every restored server backup to preserve a monotonic mesh revision and removal tombstones, or (2) treat an authenticated, key-bound full snapshot at an equal/lower revision as a fresh authority epoch: retire the old peer config first, then apply the full snapshot; never accept a lower delta. I recommend (2) as the node-side safe default because it also handles a fresh server identity and does not trust stale local peer state. It can briefly interrupt mesh traffic during a server reset, but no peer from the previous authority remains installed. I will log any rejected chunk with its revision and error kind.
#380 compatibility: Keep the existing
MeshConfigChunkshape compatible by omitting the rotation-onlyprevious_activefield when false; D166 already records old nodes as rotation-unsupported and blocks rotation while one is enrolled. Add an additivekey_rotation_supportedboolean to each serverMeshNoderesponse so the server inventory identifies those nodes, and makeinfraternal statusexplain that an enabled mesh withconfig:nullhas not accepted a server configuration and may have a server/infraternal-agent version mismatch. The old client wire parser stays strict; active rotation fields are never sent while an unsupported node remains enrolled.J287 progress / VM freeze update:
The owner has frozen dev-02 and macOS work. I will not start anything else on either VM. The #380 server inventory reproducer did finish on dev-02 before the freeze and failed as expected:
key_rotation_supportedwas absent (null, expectedfalse). Full output is at/home/claude/worktrees/j287-test/red-380-server.logoninfraternal-dev-02-std.The peer-wire and local-status test commands in that batch selected zero tests because their filters were too strict. I am not counting those as red evidence; both are being rerun on compute01. The earlier #382 regression also completed before the freeze; its output is at
/home/claude/worktrees/j287-test/red-382.logon dev-02.Pending Mac-only proof: repeat J267's old-Mac-client/server A/B from #375 when the Mac VM is available. Its historical evidence remains in #375. I will use compute01 network namespaces for the second node in the meantime. Cleanup of this job's dev-02 scratch worktree and target waits until the freeze is lifted.
J287 #380 RED evidence:
previous_active:false:unknown fieldprevious_active, expected one ofkey,addresses,endpoint``. Run on compute01 in an isolated network namespace; log:/home/claude/worktrees/j287-test/red-380-peer.log.nullforkey_rotation_supportedwhere the old node should be explicitly markedfalse. Run on dev-02 before the owner froze it; log:/home/claude/worktrees/j287-test/red-380-server.log.infraternal statuscurrently reports("Stopped", "interface is down")for enabled mesh withconfig:null, instead of a compatibility diagnostic. Run on compute01; log:/home/claude/worktrees/j287-test/red-380-status.log.All three filters now selected one test each; peer and status exited 101 on their expected assertions/parse failure, and server exited 101 on the missing field.
J287 progress: branch
mesh-compat-382is rebased onorigin/devatad23e8536. The firstverify quickstopped on rustfmt, and the next stopped on D345 comments adjacent to the changed hunks; both findings are fixed. The current quick retry is queued on compute01 (position 3 at last status); output is being saved to/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final.log. I have not started new work on dev-02 or macOS under the owner's freeze.Correction to the prior progress comment:
0ca782f1fwas an intermediate #382 head. Clippy foundexpect-related lints in both slices; I removed those panic paths, then rebuilt the history as the requested two issue commits. Current pushed heads are #3806696e6a67and #38293de0471c, based onorigin/dev0aad23e1c. The clippy failure is preserved at/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-amended.log; the current quick retry uses the corrected head.J287 progress: the current
scripts/verify quickrun passed on compute01. The log is/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-current.log; it reports fmt, D345/doc coverage, workspace clippy, changed-package unit tests, UI literals, and tracer typecheck all PASS. This is the pre-check, not the final gate.Next: run the #382 root/network-namespace proof, the #380 real-node compatibility proof, then
scripts/verify faston compute01. The mesh claim is still held by J175 and compute01 currently has all four build slots occupied, so I am waiting for those resources. Per the owner freeze, there will be no new work or cleanup on dev-02 or macOS. The old-Mac-client A/B for #380 remains pending until the Mac VM is available; I will attach the Linux network-namespace proof now and record the Mac proof separately later.Progress: verify quick passed on current head
26073ac59; log: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-rebased.log. The final verify fast is queued on compute01 as PID 1179868; its log will be /home/claude/.cache/codex-scratch/j287/evidence/verify-fast-rebased.log. The old-Mac-client/server A/B from #375 remains pending because the Mac VM is frozen; I will complete the Linux namespace proof and record the Mac-only work as pending.Progress: verify quick passed on final source head
d3716a5072; log: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final-head.log. Verify fast is queued on compute01 as PID 1716781, using the same target directory; log: /home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-head.log. The old-Mac-client/server A/B remains pending because the Mac VM is frozen. I will complete the Linux root/network-namespace proof and record Mac work as pending.J287 update after rebasing onto origin/dev
914b0da066(branch head7665cdcc71):The Linux compatibility changes are in the rebased branch. verify quick passed, including the strict pre-rotation peer decoder, server node inventory, and status diagnostic tests; evidence: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-rebased-final.log. Existing server checks retain D166's rotation gate: an attached node that reports no rotation support keeps rotation deferred until all nodes support it.
The compute01 root proof and final verify fast remain pending. J294 owns the compute01 mesh claim, so I have not queued the proof. The old-Mac-client/server A/B from J267 #375 remains pending because the owner froze new Mac work. I have not started anything on dev-02 or macOS during the freeze.
J287 resource wait: compute01's mesh claim remains
J294 2026-11-06T10:14:04Z, and all four build slots are occupied (with other jobs queued at the latest check). I have not queued a J287 root proof or gate run. The rebased source is at7665cdcc71; verify quick passed at /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-rebased-final.log. The updated root regression, verify fast, and perf-VM measurement remain pending. No new work has started on dev-02 or macOS; the Mac-only old-client A/B remains pending.J287 progress: both atomic fixes are now rebased onto current origin/dev
88e00ab422and pushed on mesh-compat-382. Current head:4f9008bb2d(#380 commit1486e2819).The previous verify quick passed on the earlier
914b0dabase at /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-rebased-final.log. I will rerun it, then verify fast, after the upstream rebase. The existing D166 capability gate keeps rotation deferred while a node reports no rotation support.Compute01's mesh claim remains held by J294 and its build slots are occupied, so I have not queued the root proof or final gates. The old-Mac-client/server A/B from #375 remains pending because the owner froze new Mac work. I have not started anything on dev-02 or macOS.
J287 current-head pre-check: verify quick passed on
4f9008bb2dafter rebasing onto origin/dev88e00ab42. It passed fmt, D345/doc checks, workspace clippy, changed-package unit tests, UI literals, and tracer typecheck. Log: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-latest.log. This is only the pre-check; verify fast and the root proof remain pending. The mesh claim is still J294's, so I have not started the root proof.J287 update: J294 released the mesh claim; ~/mesh-vm.claim is currently free. All four compute01 build slots are occupied and another job is queued, so I have not claimed the mesh or queued the root proof. The latest-head verify quick passed (log: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-latest.log). I will acquire the claim and run the real proof when a compute01 slot is available.
J287 update: verify fast is now queued on compute01 at current head
4f9008bb2d, using the same target directory as verify quick. The run is PID 4153454, queue position 4 at start; log: /home/claude/.cache/codex-scratch/j287/evidence/verify-fast-latest.log. It is the isolated gate run and does not need the mesh claim. The real root proof remains unstarted; ~/mesh-vm.claim is currently free, and I will acquire it only once a slot is available. No work has started on dev-02 or macOS.J287 progress: branch
mesh-compat-382is rebased onto currentorigin/devat74b9c4d8021df6a91afd44e0a750c98652cd116eand pushed at04645e6e82e9d69000105ca7cbcd9fc24a9fbe92. The two fixes remain atomic: #38015c4fca54, #38204645e6e8.A pre-rebase
verify fastis still running on the detached compute01 worktree at old head4f9008bb2; I will keep its result as historical evidence, then runverify quickandverify faston the rebased head. The root/network-namespace proof will also run on compute01 under~/mesh-vm.claim. The second real node will be a network namespace on compute01. Per the owner freeze, I have started nothing on dev-02 or macOS. The Mac-only old-client/server A/B from #375 remains pending until the freeze is lifted.J287 blocker update: compute01's
~/mesh-vm.claimis held byJ254 2026-11-06T11:54:42Z; I have not started the root/network-namespace proof or touched shared mesh state. The pre-rebaseverify fastremains active on compute01 (PID 4153454, log/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-latest.log). I will wait for the claim and an available build slot before the real proof and rebased gates. No new work has started on dev-02 or macOS.J287 progress: rebased the two atomic fixes onto current origin/dev
7b14fbb664and pushed mesh-compat-382. #380 commit527c3437f; #382 commit2b17e0d68. The inherited verify fast is still running on the earlier detached head4f9008bb2; I will wait for it, then run quick and fast on the current head via compute01. The Mac old-client/server A/B from #375 remains pending during the owner freeze. No new work or cleanup has started on dev-02 or macOS.J287 update: the inherited verify fast finished with VERIFY_EXIT=0 on the superseded head
4f9008bb2; log: /home/claude/.cache/codex-scratch/j287/evidence/verify-fast-latest.log. This is historical evidence only. Compute01's clean test worktree is now synced to current branch head2b17e0d68(base7b14fbb66). Current-head verify quick has not started: all four compute01 build slots are occupied with eight queued jobs. I have not queued another run. Mac old-client/server A/B from #375 remains pending during the owner freeze; no work or cleanup on dev-02 or macOS.J287 final gate on
mesh-compat-382.Head:
2b17e0d686ee9e80be544b2268e0e39bdde11f57The pushed branch and local HEAD match; the control-host worktree is clean. The gate ran on compute01 from the branch based on
origin/dev 7b14fbb664cbfb9b2b9b8a56f724d924424accdb.Command:
scripts/verify fastviabuild-slot, foreground.Full output:
/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-head.logQuick precheck output:
/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final-head.logVerbatim final gate output:
The only failed row is
fmt. The quick log shows rustfmt diffs in five files outside this branch's diff; those files matchedorigin/devat the gate base. Fast's other rows passed, including privileged integration. Static-build evidence in the full log: x86_64 27,785,360 bytes (+5,367,104); aarch64 25,000,704 bytes (+4,547,424).#382 severity remains P1: supported server restore plus D166's indefinite last-known rules can preserve access for a peer removed after the backup. The Mac old-client/server A/B remains pending under the std-VM freeze. The real-root proof and perf-VM measurement are not included in this final-gate run.
J287 Mac compatibility proof update on pushed head
b02078ef89e74d6ceedc8cc99defec5f057e7a4d: the native--features agentlibrary suite passed 110/110, includingdataplane::compatibility_tests::nonrotating_peer_uses_pre_rotation_wire_shape. Full output:claude@infraternal-macos-01-std:~/j287-evidence/mac-382-380-agent-green-b02078.log; the target was deleted before releasing/tmp/mac-bench.lock. This checks the old-node-safe pre-rotation wire shape on Mac. The final status and server node-view evidence will be included with the compute01 proof and gates.J287 progress: branch head is
9b098e7d11bf7427888daf5e6b798b0ba7f23309, merged with currentorigin/dev9630c2bd9. The native Mac suite passed 110/110, includingnonrotating_peer_uses_pre_rotation_wire_shape; log:claude@infraternal-macos-01-std:~/j287-evidence/mac-382-380-agent-green-b02078.log. Its target was removed under the Mac lock. The current-head format check passed at/home/claude/.cache/codex-scratch/j287/evidence/fmt-final-head.log.The compute01 root proof is queued through
root-slot-holdand has not acquired~/mesh-vm.claimyet. It will check the fail-closed rollback path, the server node capability view, andinfraternal status. Quick and final fast gates remain pending.J287 progress on
mesh-compat-382at4407929f4ee6864afadf61a3c92e6c37d3fb2ce0(merge parent: currentorigin/dev9630c2bd9).cargo fmt --checkpassed on this final head (FMT_EXIT=0); receipt:/home/claude/.cache/codex-scratch/j287/evidence/fmt-4407929.log.The compute01 real-root proof is first in the build-slot queue via
scripts/root-slot-hold. It has not acquired~/mesh-vm.claimor changed shared mesh state yet. The Mac--features agentsuite passed 110/110 on the same tree under the Mac lock, with its target deleted before unlock; receipt:claude@infraternal-macos-01-std:~/j287-evidence/mac-382-380-agent-green-b02078.log. The change does not touch packet forwarding, so perf-VM measurement is skipped. Quick and fast gates will run after the root proof.J287 root-proof correction on
4407929f4ee6864afadf61a3c92e6c37d3fb2ce0: the rollback/rejection cases, the live GotaTun removed-peer reachability test, pre-rotation wire test, and server node-view test passed under root on compute01. The status test selector matched zero tests, so I am not counting it as evidence; I will run the fully qualified status regression in the compute01 quick run and verify its output before fast. Root proof log:/home/claude/.cache/codex-scratch/j287/evidence/root-real-proof.log. The proof removed its target and released~/mesh-vm.claim.J287 update:
origin/devadvanced to37c93637e49a415578416be037f972b9a716701cduring the previous fast run. I merged it intomesh-compat-382and pushed6cf76d71feb717eb1753922e22f4c29e2a030ff0(the new merge commit; second parent isorigin/dev). The4407929fast run exited 0 but is superseded.cargo fmt --checkis clean on6cf76d7(FMT_EXIT=0):/home/claude/.cache/codex-scratch/j287/evidence/fmt-final-6cf76d7.log.The compute01 root clone and gate worktree are synced to
6cf76d7. The corrected root-proof status selector is ready, but~/mesh-vm.claimis currently held by J279, so I have not started another root proof. I will wait for that claim and rerun the root proof plus quick and foreground fast on the final head. The 110/110 Mac suite was on the same mesh source; the new dev merge did not change the mesh plugin or Mac node files. The Mac target had been removed before its lock was released. Perf measurement remains skipped because packet forwarding is unchanged.J287 resumed on
mesh-compat-382at pushed head6cf76d71feb717eb1753922e22f4c29e2a030ff0, with currentorigin/dev37c93637e49a415578416be037f972b9a716701calready merged. Freshcargo fmt --checkpassed (FMT_EXIT=0); receipt on compute01:/home/claude/.cache/codex-scratch/j287/evidence/fmt-final-6cf76d7.log.The corrected root proof and final quick/fast are queued together as one foreground build-slot job on compute01 (position 9 at the latest check).
~/mesh-vm.claimremains free; the root proof script will acquire it only when the run starts. It checks the branch andorigin/devrefs before testing. Root proof and gate logs are set to/home/claude/.cache/codex-scratch/j287/evidence/root-real-proof-final-6cf76d7.log,verify-quick-final-6cf76d7.log, andverify-fast-final-6cf76d7.log.The Mac
--features agentsuite passed 110/110 under the Mac lock, includingmacos_node::tests::restored_snapshot_replaces_stale_peers; its target was deleted before unlocking. The final merge leaves the Mac mesh files unchanged. Packet forwarding is unchanged, so the perf-VM measurement is skipped.J287 final-head real-root proof on compute01 passed at
6cf76d71feb717eb1753922e22f4c29e2a030ff0, under~/mesh-vm.claimin/root/worktrees/j287-root. The proof passed lower-revision rollback replacement, new-server rejection, a live removed-peer reachability check, pre-rotation wire compatibility, the server node view, and the fully qualifiedinfraternal statusmismatch test. Full output:/home/claude/.cache/codex-scratch/j287/evidence/root-real-proof-final-6cf76d7.log. The test script cleaned its target and released J287's mesh claim.On the same pushed head,
verify quickpassed, including fmt, clippy, changed-package tests, UI literals, and tracer typecheck. Log:/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final-6cf76d7.log.verify fastis running in the foreground via compute01's build slot, on the same target; its full log will be posted at/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-6cf76d7.log.Mac native
--features agentsuite: 110/110 passed under the Mac lock, includingmacos_node::tests::restored_snapshot_replaces_stale_peers; the target was deleted before unlock. Receipt:claude@infraternal-macos-01-std:~/j287-evidence/mac-382-380-agent-green-b02078.log. The final merge leaves the mesh plugin files unchanged. Packet forwarding is unchanged, so the perf-VM measurement is skipped.J287 correction to the in-progress gate: the first fast attempt was launched through
runuser -u claudewithout resettingHOME, so the suite inheritedHOME=/root. Ten unrelated SSH recovery fixture tests failed withPermissionDeniedwhile creating their scratch directories. I stopped that run before completion; it is not the final gate. Its diagnostics are preserved at/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-root-home-misconfigured-aborted-6cf76d7.log. The first quick log is also preserved separately because it used the same incorrect environment.The root proof on final head passed and is complete. I corrected the runner to execute directly as
claudewithHOME=/home/claude; it will first rerun the SSH recovery-support test, then quick and fast on the same target. That foreground compute01 job is queued at position 13. Its final logs will use the originalverify-quick-final-6cf76d7.logandverify-fast-final-6cf76d7.logpaths.J287 update: merged the latest
origin/devfba745051416c60a8523f0fe529c2aee6bbe0dd0intomesh-compat-382and pushed3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed. This merge adds changes to tracer and embedded agent/server login code; it does not change the mesh plugin or status sources. Freshcargo fmt --checkpassed (FMT_EXIT=0):/home/claude/.cache/codex-scratch/j287/evidence/fmt-final-3d2208f.log.The compute01 root proof on
6cf76d71feb717eb1753922e22f4c29e2a030ff0passed all six restore, reachability, wire-compatibility, server-view, and status checks under~/mesh-vm.claimin/root/worktrees/j287-root; output:/home/claude/.cache/codex-scratch/j287/evidence/root-real-proof-final-6cf76d7.log. The upstream merge leaves those proof's mesh and status sources unchanged. The Mac--features agentsuite passed 110/110, including the restored-snapshot test, and the final merge leaves Mac mesh files unchanged; receipt:claude@infraternal-macos-01-std:~/j287-evidence/mac-382-380-agent-green-b02078.log. Mac target cleanup was completed under the lock before unlock.A corrected compute01 foreground job is now queued at position 15. It runs quick, the SSH recovery scratch test with
HOME=/home/claude, then fast on the same target, with checks for the pushed head and currentorigin/dev. The earlier root-launched attempt usedHOME=/rootand was stopped; its diagnostic log is separate and is not the final gate. Packet forwarding is unchanged, so the perf-VM measurement is skipped.J287 progress: branch
mesh-compat-382is pushed at3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed, merged with currentorigin/devfba745051416c60a8523f0fe529c2aee6bbe0dd0. Freshcargo fmt --checkpassed at this head:/home/claude/.cache/codex-scratch/j287/evidence/fmt-final-3d2208f.log.The corrected final-head quick/recovery-support/fast job has waited in the compute01 build-slot queue for over 30 minutes (six queued jobs ahead at the latest check). No final-head gate has started, and this gate job has not touched the mesh claim. The earlier wrong-
HOMEdiagnostic attempt is stopped and preserved separately; it is not the final result. I will post the verbatim fast output when the foreground run completes.Final compatibility validation for review
Branch:
mesh-compat-382Head:
3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eedMerged current
origin/devfba745051416c60a8523f0fe529c2aee6bbe0dd0. The foreground runner verified that the local head, pushed branch, and local/remoteorigin/devmatched before testing (FINAL_HEAD_CHECK=PASS).At this head,
verify quickpassed (VERIFY_QUICK_EXIT=0), including the mesh/status unit tests; the SSH recovery-support suite passed 12 tests with one Docker-only test ignored. Logs:/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final-3d2208f.logand/home/claude/.cache/codex-scratch/j287/evidence/recovery-support-final-3d2208f.log.verify fastran in the foreground on compute01 at this head. Its verbatim gate summary and final status were:Full fast output:
/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-3d2208f.log. The runner returned exit 0 and removed its target. Compute01 then went offline for the announced maintenance restart.The old-node mismatch is visible in both the server's node view and
infraternal status; rotation remains disabled when the peer is a pre-#285 node, preserving D166's no-rotation fallback. The compute01 real-root proof passed the server-view and status checks, plus restore rollback, new-server refusal, removed-peer reachability, and pre-rotation wire compatibility:/home/claude/.cache/codex-scratch/j287/evidence/root-real-proof-final-6cf76d7.log. This proof ran at6cf76d7; the subsequentfba7450dev merge touched tracer and embedded login code, not the mesh or status paths.The Mac native
--features agentsuite passed 110/110 under the Mac lock, includingrestored_snapshot_replaces_stale_peersandnonrotating_peer_uses_pre_rotation_wire_shape; its target was deleted before unlock. Log:claude@infraternal-macos-01-std:~/j287-evidence/mac-382-380-agent-green-b02078.log. The merge to3d2208fdid not change the Mac mesh sources. Packet forwarding is unchanged, so the perf-VM measurement is skipped.D243 static artifact measurements from the final
verify fastrun at3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed:x86_64-unknown-linux-musl: 27,799,664 bytes; baseline 22,418,256; delta +5,381,408 bytes.aarch64-unknown-linux-musl: 25,007,016 bytes; baseline 20,453,280; delta +4,553,736 bytes.Both static builds passed; the deltas are report-only under D243. Full gate output:
/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-3d2208f.log.Mac compatibility validation at pushed source head
87239a3ceefe328f7460e7c1aa4c0414eca48aaf, under/tmp/mac-bench.lock:a_pre_rotation_node_refuses_rotation_and_epoch_extensionsandepoch_support_requires_the_explicit_full_probe.cargo fmt --all -- --checkpassed, and the job target was removed before unlocking.Raw receipt:
/home/kayg/.cache/codex-scratch/j287/evidence/mac-epoch-final-87239a3.log(attached). The Linuxinfraternal statusmismatch and server node-view evidence will be refreshed with the compute01 proof/gates after the owner’s return notice.J287 #380 progress on
mesh-compat-382, current pushed head66211b3fc7a216a728728b1fc7c6e6ae7b135f31.The J330 #382 rework is now one atomic commit, with current
origin/dev3644950b8merged. The Mac suite at the identical source tree passedcargo fmt --checkand 116/116 mesh agent tests, including the pre-rotation capability fallback and epoch negotiation; the target was removed before unlocking. The attached receipt is in #83995.The earlier compute01 quick waiter was cut by the maintenance restart, as announced on #402 comment 83012. I resubmitted quick once at
66211b3; it is queued at position 11. Log:/home/kayg/.cache/codex-scratch/j287/evidence/verify-quick-final-66211b3.log. Server node-view andinfraternal statusLinux proof remain pending the compute01 real-root proof and gates.Progress at
66211b3fc7: the quick attempt cut by the compute01 restart is recorded as CUT_BY_COMPUTE01_RESTART. The replacement quick is running in the foreground, queued at position 11 on compute01; log: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-compute-final-66211b3.log. The root proof is pending the live-mesh claim, currently held by J207 since 2026-11-07T06:55:47Z. The final evidence will include the old-node mismatch in infraternal status and the server node view, plus the verbatim fast gate output.Compute01 update at head
66211b3fc7: the foreground quick remains queued and has not started. Free disk is 19 GiB, below build-slot’s 25 GiB admission floor, so it is waiting safely without creating a target. Log: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-compute-final-66211b3.log. The live-mesh claim is still held by J207; old-node status and server-view evidence remains pending.Blocking resource update at head
66211b3fc7: compute01 now has 3.6 GiB free, below its 25 GiB build-slot floor. The foreground quick has not started and remains queued; no target was created. The J207 mesh claim is still held, so the real-root proof and fast gate remain pending.Progress: final branch head is
441c50884d, merging current origin/devbfe0b02f3. Two pushed quick-gate follow-ups aree73358524(D345 docs) and6bc376e1(legacy snapshot fixtures). I am rerunning quick on this merged head; the old-node status and server node-view evidence remains part of final validation. The root proof is pending the J207 mesh claim.Final verification update: head
fec9c1bd89d66c4ccd07520cc458f47fcec1f48cmerges current origin/devaf033d0b4fc5e9a6164c6b528914a0a99bb93b55. Quick at441c508stopped at D345 for two route test functions; commitb0a7306bfdocuments them. The new quick is running in the foreground on compute01, queued at position 2. Log:/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-compute-final-fec9c1b.log. The old-node status and server-view evidence is included in this verification pass; the root proof remains pending the J207 mesh claim.J287 Mac validation on final pushed head
eac540e845f5f25bf139decc1a56443455d448d9ofmesh-compat-382:cargo fmt --all -- --check: PASS.cargo test --locked -p infraternal-plugin-mesh --features agent --lib: 116 passed, 0 failed. This covers the Mac equal-revision restore and failed-retirement rollback cases./tmp/mac-bench.lock;MAC_TARGET_REMOVED=PASS.The change is configuration/control-plane work and does not change packet forwarding, so no perf-VM measurement applies. The raw foreground log is attached.
Progress update (2026-11-07): branch
mesh-compat-382is pushed atc87cb3c8d06cff913e89af4084f315dc5f92efe6. The currentorigin/dev(af033d0b4) is already an ancestor and includes the requested48358a5fa; localnix develop . -c cargo fmt --checkexited 0 with no output. The added D345 doc comment addresses the prior quick-gate failure. The previous quick oneac540e84exited 1 at D345 before this comment; no gate is currently queued or running. Mac tests had passed ateac540e84and the only later change is this comment; evidence is attached on #382 comment 84261 and #380 comment 84262. The change does not touch packet forwarding, so no perf measurement is needed. I am paused on the #380 real-node proof and final verify gates until the owner posts that compute01 is back; I will then follow the required foreground run.Restart recovery at
c87cb3c8d06cff913e89af4084f315dc5f92efe6: the prior final-headverify quickwaiter ateac540e84was cut by the compute01 restart and is no longer present in the queue. I have resynced the clean compute01 worktree toc87cb3c8dand checked the prescribed launcher (nix develop ... -c cargo --version, cargo 1.99.0). I am resubmittingverify quickonce in the foreground now. At admission check, compute01 had one free slot but only 18 GiB free against the 25 GiB floor, so it may wait for disk recovery. The completed format check is clean; the #380 root real-node proof and final fast gate remain after quick.The foreground
verify quickretry onc87cb3c8d06cff913e89af4084f315dc5f92efe6exited 1 in workspace clippy: the Linux integration test usedcrate::dataplane::Chunk, but its integration-test crate root has nodataplanemodule. The full stdout is attached asverify-quick-final-c87cb3c8d.log; remoteteehit ENOSPC, so the output was preserved from the foreground session locally.The correction is pushed on current head
babefc4233ccfe0281161d28273b5b75f5cac6bc: the test importsChunkfrom the public mesh crate and checks for the peer-free deny snapshot that retirement intentionally retains. I am rerunning quick on that head before the root proof and final fast gate.The foreground
verify quickretry onbabefc4233ccfe0281161d28273b5b75f5cac6bcexited 1 in workspace clippy becausecrates/infraternal-server/src/remote_mesh_revocation_tests.rsomitted the newauthority_epochfield from a legacy identity fixture. The full stdout is attached asverify-quick-final-babefc423.log.The fixture now explicitly reports
authority_epoch: falsefor the old node, in commit887739799onmesh-compat-382. I am resubmitting quick once on that head; the root proof and final fast gate remain pending.Foreground
scripts/verify quickpassed onmesh-compat-382head887739799e1564c80ce3e7ba4a2f84c2d3207048. All 12 quick rows passed. The changed-package unit tests reported 290 agent, 60 mesh, 556 server, and 25 status tests passed; the full output is attached asverify-quick-final-887739799.log(exit 0).The quick log itself says this is a pre-check, not the gate. The real-root mesh proof and final foreground
scripts/verify fastremain next.Foreground quick passed on
887739799e1564c80ce3e7ba4a2f84c2d3207048and its full log is attached in the preceding comment. The root clone is synced to that head; its exact launcher check returnedcargo 1.99.0, and the root proof script syntax is clean.The real-root proof has not started because
~/mesh-vm.claimstill containsJ207 2026-11-07T06:55:47Z. I will not override another job's claim. Compute01 also reported all five build slots busy and four queued. Owner/J207: please release the mesh claim if its live run is complete. The root proof and finalverify fastremain pending; the packet data path is unchanged, so no perf measurement is applicable.Resource update on head
887739799e1564c80ce3e7ba4a2f84c2d3207048: the foregroundverify fastwaiter is still queued at position 5 (last status: all five compute01 slots busy, five jobs queued). The live-mesh claim has changed from J207 toJ288 2026-11-07T11:16:23Z. I have not begun the root proof or touched the claim; it remains pending release.Resource update on head
887739799e1564c80ce3e7ba4a2f84c2d3207048: all five compute01 slots remain busy. The single foregroundverify fastwaiter is still queued (PID 3376983 in the latest status). The live-mesh claim now containsJ315 2026-11-07T11:21:33Z; I have not begun the root proof or touched the claim.The latest compute01 check shows
~/mesh-vm.claimis absent, so the claim has been released. The finalverify fastis still the only J287 build-slot waiter (now third in queue), so I am leaving the mesh claim free rather than holding it during a build wait. I will acquire it immediately before the root proof and release it as soon as that proof finishes.Progress update: merged current origin/dev at
21b3c84ceintomesh-compat-382and pushed head944db94e3. The in-progressverify faston887739799was stopped after I found that origin/dev had advanced; it did not complete and is not being counted as a gate result. I’m resyncing the final head and will rerun quick then fast on compute01. The root proof and current-head Mac suite are still pending.Verification update on
mesh-compat-382at944db94e3:/tmp/mac-bench.lock:cargo fmt --checkpassed, the mesh agent suite passed 116/116, the server authority-epoch reset test passed 1/1, andMAC_TARGET_REMOVED=PASS. Raw log:/home/kayg/.cache/codex-scratch/j287/evidence/mac-final-944db94e3.log.verify quickon compute01 exited 101 after fmt, docs, and workspace clippy passed. Its changed-package unit-test row had 289 passed, 1 failed, 23 ignored. The failure waslogins::durable_tests::login_durable_writes_leave_the_reactor_responsive(durable write held the reactor until the watchdog released it), in unchanged agent code. Raw log:/home/kayg/.cache/codex-scratch/j287/evidence/verify-quick-final-944db94e3.log.I’m treating this as an unresolved gate failure, not a pass. I’ll check it against the unmodified base and rerun quick before submitting final fast. The root proof remains pending.
Resource update on final head
944db94e3: the second foregroundverify quickis queued at compute01 position 5, withRUST_TEST_THREADS=1to reduce harness contention after the unchanged durable-write test timed out in the first run. The first run's full log is attached above. The retry log is/home/kayg/.cache/codex-scratch/j287/evidence/verify-quick-final-944db94e3-serial.log.The /root clone is clean at the prior head and its launcher reports Cargo 1.99.0; I will sync it to
944db94e3before the proof. I have not acquired~/mesh-vm.claimwhile waiting. Mac tests at944db94e3passed and their log is attached above. Root proof and final fast remain pending.Verification update on
mesh-compat-382head944db94e3:verify quickpassed all 12 rows withRUST_TEST_THREADS=1. Unit tests: 290 agent, 60 mesh, 556 server, and 25 status passed; the initial unchanged durable-write timeout did not reproduce. This is the precheck, not the final gate. Raw log:/home/kayg/.cache/codex-scratch/j287/evidence/verify-quick-final-944db94e3-serial.log.944db94e3; its Nix launcher reports Cargo 1.99.0. The root proof is waiting: compute01 has all five slots busy, and~/mesh-vm.claimbelongs to J254 (2026-11-07T12:40:58Z). I have not modified that claim. The current status receipt is/home/kayg/.cache/codex-scratch/j287/evidence/root-wait-preflight-944db94e3.log.Next: acquire the claim only when available, run the root proof, then run foreground
verify faston this head. No packet-forwarding/data-path code changed; the perf measurement is skipped.Root-proof wait update at head
944db94e3: compute01 still has all five build slots occupied and three jobs queued; the current status receipt is/home/kayg/.cache/codex-scratch/j287/evidence/root-wait-status-944db94e3.log.~/mesh-vm.claimstill belongs to J254 (2026-11-07T12:40:58Z), so I have not changed it. The J287 compute target is removed; the current-head/rootclone and Nix launcher preflight are ready. I will acquire the claim only when the live-mesh owner has released it and the root proof can start promptly.J287 progress at head
944db94e30on branch mesh-compat-382. The branch is pushed and clean; current origin/dev21b3c84cedis an ancestor. Final-head quick and Mac results are already recorded above. The final root proof includes the old-node mismatch checks in infraternal status and the server’s node view; that real-root run is still pending.The owner’s “compute01 back, 5 slots” notice is present on #402. Preflight found all five compute01 slots busy with five queued jobs, dev-02’s one slot busy with three queued jobs, and ~/mesh-vm.claim still owned by J254 (2026-11-07T12:40:58Z). I have not queued J287 work or taken another job’s claim. The root proof and final foreground verify fast remain pending; the preflight receipt is attached.
J287 resource update at 2026-11-07T13:19Z, head
944db94e30. Compute01 still has all five slots busy and seven queued jobs; 55 GiB is free. The live-mesh claim remains J254’s (2026-11-07T12:40:58Z). Dev-02 is now free, but the real-root proof for the status and server-view mismatch is required on compute01. No J287 build is queued and no claim is held. Current resource receipt is attached.J287 root-proof preflight at 2026-11-07T13:40:43Z. Local and pushed branch heads match at
944db94e30; current origin/dev21b3c84cedis an ancestor. The compute01 user worktree and /root clone are both clean at that head. Both exact Nix launcher checks report Cargo 1.99.0, and the local and remote root-proof script hashes match. The full preflight receipt is attached.Compute01 currently has one slot free and eight queued jobs; dev-02’s slot is busy. J288 acquired ~/mesh-vm.claim at 2026-11-07T13:37:23Z. I have not claimed the mesh or queued a J287 build. The root proof includes the status compatibility notice and the server node-view capability field.
The first root-proof attempt at
944db94e3did not reach any tests. The log shows the exact head and claim, then root-slot-hold waiting for a build slot; I stopped it with exit 130 before tests started. The queued helper was process group 1583820; I terminated that exact group, confirmed no J287 root process remained, and released J287’s mesh claim. The root clone cleanup trap removed the clone as designed. This was a resource wait, not a test failure.At the attached 13:54Z receipt, the mesh claim had already passed to J254 at 13:52:04Z. I am changing the proof runner so any build-slot wait or prebuild runs without the mesh claim, then the claim is acquired only after a slot is admitted and immediately before the root tests. The tests include the node status compatibility text and the server’s node-view capability field.
J287 update at 2026-11-07T14:11Z, head
944db94e3. The clean /root clone is pinned to the final head. The root test-binary prebuild is running in the foreground through root-slot-hold and is queued at compute01 PID 2207370; it holds no mesh claim and has not started compiling or running tests yet. Current status shows five active slots, nine queued jobs, and 74 GiB free. J288 owns the live-mesh claim (14:08:10Z). The attached receipts show the queue wait. The final proof will check the mesh status message and server node-view compatibility field.Resource update at 2026-11-07T14:19Z on head
944db94e3. The root test-binary prebuild remains queued at compute01 PID 2207370; no tests have started and no mesh claim is held. All five slots are busy with nine queued jobs, and free disk has fallen to 38 GiB. I am not starting the cold root build this close to the 25 GiB admission floor while other builds continue. The attached receipt records the current queue, disk, and claim state.J287 resource update at 2026-11-07T14:23Z, head
944db94e3. I canceled the queued root prebuild before admission when free disk reached 30 GiB, below the expected 25–40 GiB root target footprint. I stopped exact queued helper PID 2207370, confirmed no J287 root process remained, and removed the empty target. No tests ran; the attempt log ends at root-slot-hold waiting with ROOT_PREBUILD_EXIT=130. This is a resource wait, not a test failure.The latest receipt shows compute01 at 23 GiB free (below the 25 GiB build-slot floor), all five slots busy, and J288 holding the live claim since 14:22:28Z. J287 holds no claim and has no queued build. The old-node status and server-view checks remain pending the root proof.
J287 interim compatibility evidence for #380.
Current branch head is
6436af1fad, including current origin/dev6ffe37e06.verify quickpassed on this head; its log is attached.The real-root proof on
020db2426included the pre-#285 status-compatibility test, server node-view check, and server epoch restore/retirement cases; it reported ROOT_MESH_PROOF=PASS. Its full log is attached. The Mac library suite on8e451d06c9passed 117/117 under the Mac lock and removed its target before unlocking; its log is attached.Those root and Mac receipts predate the final test-fixture and no-config-save commits.
verify faston the final head is still pending the new compute01 release notice on #402; I will post its verbatim result here when complete.J287 progress on
mesh-compat-382at final source head22620e22a5951d3475dcd2d6f074e8486bf7083b(tree20d38bf963202fd0c13b3f8f453560a8612a8ba2).The final-source-tree
verify quickpre-check passed. The changed status package reported 25 passed and 1 ignored, includingmesh_without_a_server_configuration_reports_possible_version_mismatch; raw output isverify-quick-0dbfed478.login the attached evidence bundle. The Mac mesh suite ran under/tmp/mac-bench.lockand passed 117/117, includingnonrotating_peer_uses_pre_rotation_wire_shape,macos_node::tests::equal_revision_restore_retires_stale_peers, andmacos_node::tests::restored_snapshot_replaces_stale_peers. Its target was removed before unlocking; raw output ismac-final-0dbfed478.login the same bundle.The final real-root proof must still confirm the server's old-node compatibility field in its node view alongside
infraternal status. Compute01 is currently unreachable (No route to host), so I have not started or queued that proof or the finalverify fast. Earlier root evidence is on an older branch head and is not counted as final-head proof.J287 compute01 hold, branch mesh-compat-382 at
22620e22a5, clean and pushed. Current origin/dev6ffe37e067is an ancestor.The epoch retirement change and J330 red-first regressions are on this head. The final-source verify quick passed, and the Mac mesh suite passed 117/117 under /tmp/mac-bench.lock; its target was removed before releasing the lock. Those receipts are attached in the preceding evidence comments. The saved real-root proof script passes bash -n and now releases the mesh claim on test failure.
Compute01 currently returns No route to host. I have not queued work or held ~/mesh-vm.claim; I will wait for the explicit post-maintenance “compute01 back, 5 slots” notice on #402. Remaining work is the real-root proof on this head and the foreground verify fast, then I will post their logs and verbatim gate output.
J287 resuming after #402 comment 86192 (compute01 back, 4 slots). Branch mesh-compat-382 is clean and pushed at
22620e22a5. The compute01 VM worktree was absent; I created a clean detached worktree at that exact head. The requested launcher check succeeded: Cargo 1.99.0. Compute01 has two free slots and 265 GiB free; dev-02's slot is busy. The live mesh claim is free.I am running the root prebuild without a mesh claim, then the real-root proof under the claim only for its isolated network tests. Afterward I will run foreground verify fast on
22620e22aand post both logs. Current origin/dev has advanced to7dc56b8e8; this run stays pinned to the explicitly requested review head22620e22a.Root prebuild attempt on head
22620e22astopped before compilation, test execution, or mesh claim acquisition: root Git rejected the claude-owned VM worktree under safe.directory. I confirmed the exact worktree head and scoped a safe.directory override to the root script's clone/fetch commands; I did not change root's global Git configuration. Both updated scripts pass bash -n and their local/remote SHA-256 hashes match. Compute01 now has three slots free, 264 GiB free, and the mesh claim is free. Retrying the root prebuild.Root proof run on
22620e22aexercised both kernel snapshot cases, all three J330 regressions, the live removed-peer reachability case, pre-rotation wire compatibility, and the server node-view test successfully. The status test selector matched zero tests (26 filtered), so I am not counting the status check or the aggregate proof as complete. The mesh claim was released and the root target/clone were cleaned. I am correcting the selector to tests::mesh_without_a_server_configuration_reports_possible_version_mismatch and will rerun the complete root proof before the final gate.The corrected real-root proof passed on head
22620e22a5. It includes the server-restore/replacement kernel cases, J330 failed-retirement, equal-revision restore and persisted-rollback regressions, the removed-peer TCP reachability check, the pre-rotation wire check, server node-view compatibility field, and the infraternal status compatibility diagnostic. Each selected test ran and passed; the mesh claim was released and the root target and clone were removed. Raw output is being attached as root-proof-22620e22a.log.I am now starting the required foreground verify fast on the same head via compute01 build-slot. Compute01 currently has all four slots busy; dev-02 is not the final-gate host for privileged mesh rows.
J287 completion on
mesh-compat-382at requested head22620e22a5951d3475dcd2d6f074e8486bf7083b(compute01 worktree clean).The real-root proof passed on compute01 under
~/mesh-vm.claim. It includes the pre-#285 nonrotating wire-shape compatibility check, the server node-view integration case, andinfraternal status's old-node compatibility mismatch test. The proof ended withROOT_MESH_PROOF=PASS; the claim was released and the root clone and target were removed. Full proof log attached. Legacy compatibility remains nonrotating under D166.verify fastran in the foreground on compute01 at this same head and exited 0. Verbatim final stdout lines:The full raw gate log is attached.
Evidence attachments:
J287 continuation on the #382 review. I am carrying #380's mixed-version visibility through the same compatibility fix: an epoch-bound server must not send an epoch-less snapshot after an ambiguous identity probe, and
infraternal statusplus the server's node view must identify an old node that cannot report epoch support. Current branch head is7ae32516f3bb11faf23608441b146f129712e317; no new #380 behavior is committed yet. I will post the final head and the verbatim gate output with the real-root and Mac evidence.J287 is resuming the #380 compatibility follow-up on branch
mesh-compat-382at7b3f56c2c4fcbd8739e28e0faf0a6f94a66d5f2c; currentorigin/devis4e6fc472e4b4f06a08c5f55540fb872a87018ee9. I am merging that dev tip first, then validating the node/server compatibility visibility and reporting the final head and gate evidence here after the required VM runs.J287 continuation on
mesh-compat-382at18d831430, now merged with currentorigin/devb31c2da2d.The branch carries the pre-#285 compatibility behavior, fail-closed identity timeout handling, and node/server capability visibility. I am rerunning the real-root proof, Mac mesh suite, and final gates on this merged head; the final #380 evidence and head will follow on completion.
J287 update:
origin/devadvanced fromb31c2da2dto098f2c445during VM setup. I merged that current tip and pushedmesh-compat-382atbed733849. The new dev commits merged cleanly; they add D368 and a pending-host-removal spec update. No mesh source conflict was introduced.I am rerunning the final verification on
bed733849:verify quickon dev-02, then the current-head root proofs andverify faston compute01, plus the Mac agent library suite under its lock. The perf A/B is announced on #260 and will run after the next available perf window.