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
Owner

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):

#[serde(default, skip_serializing_if = "Option::is_none")]
pub previous_key: Option<PublicKey>,
#[serde(default)]                 // no skip_serializing_if
pub previous_active: bool,

Peer is #[serde(deny_unknown_fields)] in every build (dataplane.rs:44 now, :41 at 9b0c731e8). previous_active is serialized in every peer of every config, rotating or not. A node built before #285 (for example 9b0c731e8) therefore refuses every config chunk from a server at 363d95468 or later, and gets no peers.

Live A/B (same Mac binary, sha256 2f9863b2…, built at 9b0c731e8):

  • Server built at 9b0c731e8: the Mac joined, utun4 10.254.0.2 came up, mesh traffic flowed (#375: about 120 Mbit/s up, every break case).
  • Server built at 0b72f638a: the Mac enrolled (agent join ok, mesh.list shows 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.list has live:false, last_seen:null, there's no 10.254 address on any utun, and /var/lib/infraternal/state/mesh-public.json holds {"enabled":true,"config":null,"routes":[],…}, so no config was ever accepted. Evidence: lume@mac:~/j267-evidence/fg-agent.log, the server log root@compute01:/root/j267/server2.log.
  • Neither side logs the refusal. The Mac daemon (in the foreground with RUST_LOG=debug) prints nothing after ready-receive. The server logs nothing for node 2. The launchd plist sends stderr to /dev/null anyway.

Reproducer:

  1. Start a server built at or after 363d95468.
  2. Join a node built at 9b0c731e8 or earlier (Mac or Linux; the type is shared) and run mesh up.
  3. Expected: the node gets its peers, as against a server of its own version. Actual: config:null and live: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" on previous_active would 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.

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`): ```rust #[serde(default, skip_serializing_if = "Option::is_none")] pub previous_key: Option<PublicKey>, #[serde(default)] // no skip_serializing_if pub previous_active: bool, ``` `Peer` is `#[serde(deny_unknown_fields)]` in every build (`dataplane.rs:44` now, `:41` at `9b0c731e8`). `previous_active` is serialized in **every** peer of every config, rotating or not. A node built before #285 (for example `9b0c731e8`) therefore refuses every config chunk from a server at `363d95468` or later, and gets no peers. **Live A/B (same Mac binary, sha256 `2f9863b2…`, built at `9b0c731e8`):** - Server built at `9b0c731e8`: the Mac joined, `utun4` 10.254.0.2 came up, mesh traffic flowed (#375: about 120 Mbit/s up, every break case). - Server built at `0b72f638a`: the Mac enrolled (`agent join` ok, `mesh.list` shows 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.list` has `live:false, last_seen:null`, there's no 10.254 address on any utun, and `/var/lib/infraternal/state/mesh-public.json` holds `{"enabled":true,"config":null,"routes":[],…}`, so no config was ever accepted. Evidence: `lume@mac:~/j267-evidence/fg-agent.log`, the server log `root@compute01:/root/j267/server2.log`. - **Neither side logs the refusal.** The Mac daemon (in the foreground with `RUST_LOG=debug`) prints nothing after `ready-receive`. The server logs nothing for node 2. The launchd plist sends stderr to `/dev/null` anyway. **Reproducer:** 1. Start a server built at or after `363d95468`. 2. Join a node built at `9b0c731e8` or earlier (Mac or Linux; the type is shared) and run `mesh up`. 3. Expected: the node gets its peers, as against a server of its own version. Actual: `config:null` and `live: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"` on `previous_active` would 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.
Author
Owner

J287 start. Branch mesh-compat-382, base 3dc58dc67b771c7e38a298c3c5ac437055b8ff44 (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 quick and verify fast, and post evidence and final heads/gate output. Safe restore behavior is fail closed if compatibility remains unresolved.

J287 start. Branch `mesh-compat-382`, base `3dc58dc67b771c7e38a298c3c5ac437055b8ff44` (`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 quick` and `verify fast`, and post evidence and final heads/gate output. Safe restore behavior is fail closed if compatibility remains unresolved.
Author
Owner

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 MeshConfigChunk shape compatible by omitting the rotation-only previous_active field when false; D166 already records old nodes as rotation-unsupported and blocks rotation while one is enrolled. Add an additive key_rotation_supported boolean to each server MeshNode response so the server inventory identifies those nodes, and make infraternal status explain that an enabled mesh with config:null has 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 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 `MeshConfigChunk` shape compatible by omitting the rotation-only `previous_active` field when false; D166 already records old nodes as rotation-unsupported and blocks rotation while one is enrolled. Add an additive `key_rotation_supported` boolean to each server `MeshNode` response so the server inventory identifies those nodes, and make `infraternal status` explain that an enabled mesh with `config:null` has 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.
Author
Owner

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_supported was absent (null, expected false). Full output is at /home/claude/worktrees/j287-test/red-380-server.log on infraternal-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.log on 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 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_supported` was absent (`null`, expected `false`). Full output is at `/home/claude/worktrees/j287-test/red-380-server.log` on `infraternal-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.log` on 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.
Author
Owner

J287 #380 RED evidence:

  • The pre-rotation strict decoder fails on an inactive peer because the upgraded server emits previous_active:false: unknown field previous_active, expected one of key, addresses, endpoint``. Run on compute01 in an isolated network namespace; log: /home/claude/worktrees/j287-test/red-380-peer.log.
  • The server inventory test returns JSON null for key_rotation_supported where the old node should be explicitly marked false. Run on dev-02 before the owner froze it; log: /home/claude/worktrees/j287-test/red-380-server.log.
  • infraternal status currently reports ("Stopped", "interface is down") for enabled mesh with config: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 #380 RED evidence: - The pre-rotation strict decoder fails on an inactive peer because the upgraded server emits `previous_active:false`: `unknown field `previous_active`, expected one of `key`, `addresses`, `endpoint``. Run on compute01 in an isolated network namespace; log: `/home/claude/worktrees/j287-test/red-380-peer.log`. - The server inventory test returns JSON `null` for `key_rotation_supported` where the old node should be explicitly marked `false`. Run on dev-02 before the owner froze it; log: `/home/claude/worktrees/j287-test/red-380-server.log`. - `infraternal status` currently reports `("Stopped", "interface is down")` for enabled mesh with `config: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.
Author
Owner

J287 progress: branch mesh-compat-382 is rebased on origin/dev at ad23e8536. The first verify quick stopped 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.

J287 progress: branch `mesh-compat-382` is rebased on `origin/dev` at `ad23e8536`. The first `verify quick` stopped 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.
Author
Owner

Correction to the prior progress comment: 0ca782f1f was an intermediate #382 head. Clippy found expect-related lints in both slices; I removed those panic paths, then rebuilt the history as the requested two issue commits. Current pushed heads are #380 6696e6a67 and #382 93de0471c, based on origin/dev 0aad23e1c. 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.

Correction to the prior progress comment: `0ca782f1f` was an intermediate #382 head. Clippy found `expect`-related lints in both slices; I removed those panic paths, then rebuilt the history as the requested two issue commits. Current pushed heads are #380 `6696e6a67` and #382 `93de0471c`, based on `origin/dev` `0aad23e1c`. 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.
Author
Owner

J287 progress: the current scripts/verify quick run 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 fast on 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.

J287 progress: the current `scripts/verify quick` run 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 fast` on 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.
Author
Owner

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 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.
Author
Owner

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.

Progress: verify quick passed on final source head d3716a50727153ab1a4d9e56f35cd907877609f4; 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.
Author
Owner

J287 update after rebasing onto origin/dev 914b0da066 (branch head 7665cdcc71):

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 update after rebasing onto origin/dev 914b0da06684f3ae4f493ed40327ea8ee4be8c2a (branch head 7665cdcc71ce1dea8e813dfe513edc89258c0215): 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.
Author
Owner

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 at 7665cdcc71; 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 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 at 7665cdcc71ce1dea8e813dfe513edc89258c0215; 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.
Author
Owner

J287 progress: both atomic fixes are now rebased onto current origin/dev 88e00ab422 and pushed on mesh-compat-382. Current head: 4f9008bb2d (#380 commit 1486e2819).

The previous verify quick passed on the earlier 914b0da base 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 progress: both atomic fixes are now rebased onto current origin/dev 88e00ab422644977f23570c30f972e83d91aa06f and pushed on mesh-compat-382. Current head: 4f9008bb2d8302e39ea9c3c248abe64d23bf0a5e (#380 commit 1486e2819). The previous verify quick passed on the earlier 914b0da base 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.
Author
Owner

J287 current-head pre-check: verify quick passed on 4f9008bb2d after rebasing onto origin/dev 88e00ab42. 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 current-head pre-check: verify quick passed on 4f9008bb2d8302e39ea9c3c248abe64d23bf0a5e after rebasing onto origin/dev 88e00ab42. 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.
Author
Owner

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: 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.
Author
Owner

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 update: verify fast is now queued on compute01 at current head 4f9008bb2d8302e39ea9c3c248abe64d23bf0a5e, 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.
Author
Owner

J287 progress: branch mesh-compat-382 is rebased onto current origin/dev at 74b9c4d8021df6a91afd44e0a750c98652cd116e and pushed at 04645e6e82e9d69000105ca7cbcd9fc24a9fbe92. The two fixes remain atomic: #380 15c4fca54, #382 04645e6e8.

A pre-rebase verify fast is still running on the detached compute01 worktree at old head 4f9008bb2; I will keep its result as historical evidence, then run verify quick and verify fast on 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 progress: branch `mesh-compat-382` is rebased onto current `origin/dev` at `74b9c4d8021df6a91afd44e0a750c98652cd116e` and pushed at `04645e6e82e9d69000105ca7cbcd9fc24a9fbe92`. The two fixes remain atomic: #380 `15c4fca54`, #382 `04645e6e8`. A pre-rebase `verify fast` is still running on the detached compute01 worktree at old head `4f9008bb2`; I will keep its result as historical evidence, then run `verify quick` and `verify fast` on 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.
Author
Owner

J287 blocker update: compute01's ~/mesh-vm.claim is held by J254 2026-11-06T11:54:42Z; I have not started the root/network-namespace proof or touched shared mesh state. The pre-rebase verify fast remains 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 blocker update: compute01's `~/mesh-vm.claim` is held by `J254 2026-11-06T11:54:42Z`; I have not started the root/network-namespace proof or touched shared mesh state. The pre-rebase `verify fast` remains 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.
Author
Owner

J287 progress: rebased the two atomic fixes onto current origin/dev 7b14fbb664 and pushed mesh-compat-382. #380 commit 527c3437f; #382 commit 2b17e0d68. The inherited verify fast is still running on the earlier detached head 4f9008bb2; 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 progress: rebased the two atomic fixes onto current origin/dev 7b14fbb664cbfb9b2b9b8a56f724d924424accdb and pushed mesh-compat-382. #380 commit 527c3437f; #382 commit 2b17e0d68. The inherited verify fast is still running on the earlier detached head 4f9008bb2; 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.
Author
Owner

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 head 2b17e0d68 (base 7b14fbb66). 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 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 head 2b17e0d68 (base 7b14fbb66). 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.
Author
Owner

J287 final gate on mesh-compat-382.

Head: 2b17e0d686ee9e80be544b2268e0e39bdde11f57
The 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 fast via build-slot, foreground.
Full output: /home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-head.log
Quick precheck output: /home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final-head.log

Verbatim final gate output:

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| Nix Cargo vendoring       | PASS         |
| fmt                       | FAIL (1)     |
| migration names           | PASS         |
| migration tooling tests   | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| real-binary fixture paths | PASS         |
| Traefik component manifest | PASS         |
| release component publication | PASS         |
| test                      | PASS         |
| SSH inode reuse fixture   | PASS         |
| shim process-per-user     | PASS         |
| cargo-deny                | PASS         |
| gate architecture         | PASS         |
| doc coverage ratchet      | PASS         |
| shape lints off (D351)    | PASS         |
| doc comments on diff      | PASS         |
| fixed test waits          | PASS         |
| privileged integration    | PASS         |
| probe release exclusion   | PASS         |
| nightly fuzz reporter     | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+

VERIFY_EXIT=1

The only failed row is fmt. The quick log shows rustfmt diffs in five files outside this branch's diff; those files matched origin/dev at 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 final gate on `mesh-compat-382`. Head: `2b17e0d686ee9e80be544b2268e0e39bdde11f57` The 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 fast` via `build-slot`, foreground. Full output: `/home/claude/.cache/codex-scratch/j287/evidence/verify-fast-final-head.log` Quick precheck output: `/home/claude/.cache/codex-scratch/j287/evidence/verify-quick-final-head.log` Verbatim final gate output: ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | Nix Cargo vendoring | PASS | | fmt | FAIL (1) | | migration names | PASS | | migration tooling tests | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | real-binary fixture paths | PASS | | Traefik component manifest | PASS | | release component publication | PASS | | test | PASS | | SSH inode reuse fixture | PASS | | shim process-per-user | PASS | | cargo-deny | PASS | | gate architecture | PASS | | doc coverage ratchet | PASS | | shape lints off (D351) | PASS | | doc comments on diff | PASS | | fixed test waits | PASS | | privileged integration | PASS | | probe release exclusion | PASS | | nightly fuzz reporter | PASS | | static builds | PASS | +---------------------------+--------------+ VERIFY_EXIT=1 ``` The only failed row is `fmt`. The quick log shows rustfmt diffs in five files outside this branch's diff; those files matched `origin/dev` at 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.
Author
Owner

J287 Mac compatibility proof update on pushed head b02078ef89e74d6ceedc8cc99defec5f057e7a4d: the native --features agent library suite passed 110/110, including dataplane::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 Mac compatibility proof update on pushed head `b02078ef89e74d6ceedc8cc99defec5f057e7a4d`: the native `--features agent` library suite passed 110/110, including `dataplane::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.
Author
Owner

J287 progress: branch head is 9b098e7d11bf7427888daf5e6b798b0ba7f23309, merged with current origin/dev 9630c2bd9. The native Mac suite passed 110/110, including nonrotating_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-hold and has not acquired ~/mesh-vm.claim yet. It will check the fail-closed rollback path, the server node capability view, and infraternal status. Quick and final fast gates remain pending.

J287 progress: branch head is `9b098e7d11bf7427888daf5e6b798b0ba7f23309`, merged with current `origin/dev` `9630c2bd9`. The native Mac suite passed 110/110, including `nonrotating_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-hold` and has not acquired `~/mesh-vm.claim` yet. It will check the fail-closed rollback path, the server node capability view, and `infraternal status`. Quick and final fast gates remain pending.
Author
Owner

J287 progress on mesh-compat-382 at 4407929f4ee6864afadf61a3c92e6c37d3fb2ce0 (merge parent: current origin/dev 9630c2bd9). cargo fmt --check passed 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.claim or changed shared mesh state yet. The Mac --features agent suite 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 progress on `mesh-compat-382` at `4407929f4ee6864afadf61a3c92e6c37d3fb2ce0` (merge parent: current `origin/dev` `9630c2bd9`). `cargo fmt --check` passed 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.claim` or changed shared mesh state yet. The Mac `--features agent` suite 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.
Author
Owner

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 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`.
Author
Owner

J287 update: origin/dev advanced to 37c93637e49a415578416be037f972b9a716701c during the previous fast run. I merged it into mesh-compat-382 and pushed 6cf76d71feb717eb1753922e22f4c29e2a030ff0 (the new merge commit; second parent is origin/dev). The 4407929 fast run exited 0 but is superseded. cargo fmt --check is clean on 6cf76d7 (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.claim is 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 update: `origin/dev` advanced to `37c93637e49a415578416be037f972b9a716701c` during the previous fast run. I merged it into `mesh-compat-382` and pushed `6cf76d71feb717eb1753922e22f4c29e2a030ff0` (the new merge commit; second parent is `origin/dev`). The 4407929 fast run exited 0 but is superseded. `cargo fmt --check` is clean on 6cf76d7 (`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.claim` is 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.
Author
Owner

J287 resumed on mesh-compat-382 at pushed head 6cf76d71feb717eb1753922e22f4c29e2a030ff0, with current origin/dev 37c93637e49a415578416be037f972b9a716701c already merged. Fresh cargo fmt --check passed (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.claim remains free; the root proof script will acquire it only when the run starts. It checks the branch and origin/dev refs 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, and verify-fast-final-6cf76d7.log.

The Mac --features agent suite passed 110/110 under the Mac lock, including macos_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 resumed on `mesh-compat-382` at pushed head `6cf76d71feb717eb1753922e22f4c29e2a030ff0`, with current `origin/dev` `37c93637e49a415578416be037f972b9a716701c` already merged. Fresh `cargo fmt --check` passed (`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.claim` remains free; the root proof script will acquire it only when the run starts. It checks the branch and `origin/dev` refs 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`, and `verify-fast-final-6cf76d7.log`. The Mac `--features agent` suite passed 110/110 under the Mac lock, including `macos_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.
Author
Owner

J287 final-head real-root proof on compute01 passed at 6cf76d71feb717eb1753922e22f4c29e2a030ff0, under ~/mesh-vm.claim in /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 qualified infraternal status mismatch 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 quick passed, 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 fast is 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 agent suite: 110/110 passed under the Mac lock, including macos_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 final-head real-root proof on compute01 passed at `6cf76d71feb717eb1753922e22f4c29e2a030ff0`, under `~/mesh-vm.claim` in `/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 qualified `infraternal status` mismatch 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 quick` passed, 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 fast` is 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 agent` suite: 110/110 passed under the Mac lock, including `macos_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.
Author
Owner

J287 correction to the in-progress gate: the first fast attempt was launched through runuser -u claude without resetting HOME, so the suite inherited HOME=/root. Ten unrelated SSH recovery fixture tests failed with PermissionDenied while 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 claude with HOME=/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 original verify-quick-final-6cf76d7.log and verify-fast-final-6cf76d7.log paths.

J287 correction to the in-progress gate: the first fast attempt was launched through `runuser -u claude` without resetting `HOME`, so the suite inherited `HOME=/root`. Ten unrelated SSH recovery fixture tests failed with `PermissionDenied` while 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 `claude` with `HOME=/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 original `verify-quick-final-6cf76d7.log` and `verify-fast-final-6cf76d7.log` paths.
Author
Owner

J287 update: merged the latest origin/dev fba745051416c60a8523f0fe529c2aee6bbe0dd0 into mesh-compat-382 and pushed 3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed. This merge adds changes to tracer and embedded agent/server login code; it does not change the mesh plugin or status sources. Fresh cargo fmt --check passed (FMT_EXIT=0): /home/claude/.cache/codex-scratch/j287/evidence/fmt-final-3d2208f.log.

The compute01 root proof on 6cf76d71feb717eb1753922e22f4c29e2a030ff0 passed all six restore, reachability, wire-compatibility, server-view, and status checks under ~/mesh-vm.claim in /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 agent suite 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 current origin/dev. The earlier root-launched attempt used HOME=/root and 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 update: merged the latest `origin/dev` `fba745051416c60a8523f0fe529c2aee6bbe0dd0` into `mesh-compat-382` and pushed `3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed`. This merge adds changes to tracer and embedded agent/server login code; it does not change the mesh plugin or status sources. Fresh `cargo fmt --check` passed (`FMT_EXIT=0`): `/home/claude/.cache/codex-scratch/j287/evidence/fmt-final-3d2208f.log`. The compute01 root proof on `6cf76d71feb717eb1753922e22f4c29e2a030ff0` passed all six restore, reachability, wire-compatibility, server-view, and status checks under `~/mesh-vm.claim` in `/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 agent` suite 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 current `origin/dev`. The earlier root-launched attempt used `HOME=/root` and was stopped; its diagnostic log is separate and is not the final gate. Packet forwarding is unchanged, so the perf-VM measurement is skipped.
Author
Owner

J287 progress: branch mesh-compat-382 is pushed at 3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed, merged with current origin/dev fba745051416c60a8523f0fe529c2aee6bbe0dd0. Fresh cargo fmt --check passed 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-HOME diagnostic attempt is stopped and preserved separately; it is not the final result. I will post the verbatim fast output when the foreground run completes.

J287 progress: branch `mesh-compat-382` is pushed at `3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed`, merged with current `origin/dev` `fba745051416c60a8523f0fe529c2aee6bbe0dd0`. Fresh `cargo fmt --check` passed 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-`HOME` diagnostic attempt is stopped and preserved separately; it is not the final result. I will post the verbatim fast output when the foreground run completes.
Author
Owner

Final compatibility validation for review

Branch: mesh-compat-382
Head: 3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed
Merged current origin/dev fba745051416c60a8523f0fe529c2aee6bbe0dd0. The foreground runner verified that the local head, pushed branch, and local/remote origin/dev matched before testing (FINAL_HEAD_CHECK=PASS).

At this head, verify quick passed (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.log and /home/claude/.cache/codex-scratch/j287/evidence/recovery-support-final-3d2208f.log.

verify fast ran in the foreground on compute01 at this head. Its verbatim gate summary and final status were:

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| Nix Cargo vendoring       | PASS         |
| fmt                       | PASS         |
| migration names           | PASS         |
| migration tooling tests   | PASS         |
| VT native fmt             | PASS         |
| CLI plugin compile-out    | PASS         |
| clippy                    | PASS         |
| SSH runtime test helper   | PASS         |
| real-binary fixture paths | PASS         |
| Traefik component manifest | PASS         |
| release component publication | PASS         |
| test                      | PASS         |
| SSH inode reuse fixture   | PASS         |
| shim process-per-user     | PASS         |
| cargo-deny                | PASS         |
| gate architecture         | PASS         |
| doc coverage ratchet      | PASS         |
| shape lints off (D351)    | PASS         |
| doc comments on diff      | PASS         |
| fixed test waits          | PASS         |
| privileged integration    | PASS         |
| probe release exclusion   | PASS         |
| nightly fuzz reporter     | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
VERIFY_FAST_EXIT=0
TARGET_CLEANED=/home/claude/worktrees/j287-test/target

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 at 6cf76d7; the subsequent fba7450 dev merge touched tracer and embedded login code, not the mesh or status paths.

The Mac native --features agent suite passed 110/110 under the Mac lock, including restored_snapshot_replaces_stale_peers and nonrotating_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 to 3d2208f did not change the Mac mesh sources. Packet forwarding is unchanged, so the perf-VM measurement is skipped.

Final compatibility validation for review Branch: `mesh-compat-382` Head: `3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed` Merged current `origin/dev` `fba745051416c60a8523f0fe529c2aee6bbe0dd0`. The foreground runner verified that the local head, pushed branch, and local/remote `origin/dev` matched before testing (`FINAL_HEAD_CHECK=PASS`). At this head, `verify quick` passed (`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.log` and `/home/claude/.cache/codex-scratch/j287/evidence/recovery-support-final-3d2208f.log`. `verify fast` ran in the foreground on compute01 at this head. Its verbatim gate summary and final status were: ```text +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | Nix Cargo vendoring | PASS | | fmt | PASS | | migration names | PASS | | migration tooling tests | PASS | | VT native fmt | PASS | | CLI plugin compile-out | PASS | | clippy | PASS | | SSH runtime test helper | PASS | | real-binary fixture paths | PASS | | Traefik component manifest | PASS | | release component publication | PASS | | test | PASS | | SSH inode reuse fixture | PASS | | shim process-per-user | PASS | | cargo-deny | PASS | | gate architecture | PASS | | doc coverage ratchet | PASS | | shape lints off (D351) | PASS | | doc comments on diff | PASS | | fixed test waits | PASS | | privileged integration | PASS | | probe release exclusion | PASS | | nightly fuzz reporter | PASS | | static builds | PASS | +---------------------------+--------------+ VERIFY_FAST_EXIT=0 TARGET_CLEANED=/home/claude/worktrees/j287-test/target ``` 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 at `6cf76d7`; the subsequent `fba7450` dev merge touched tracer and embedded login code, not the mesh or status paths. The Mac native `--features agent` suite passed 110/110 under the Mac lock, including `restored_snapshot_replaces_stale_peers` and `nonrotating_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 to `3d2208f` did not change the Mac mesh sources. Packet forwarding is unchanged, so the perf-VM measurement is skipped.
Author
Owner

D243 static artifact measurements from the final verify fast run at 3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed:

  • 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.

D243 static artifact measurements from the final `verify fast` run at `3d2208f7a6afbf4ac5337eceb4d50b45e6fb6eed`: - `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`.
Author
Owner

Mac compatibility validation at pushed source head 87239a3ceefe328f7460e7c1aa4c0414eca48aaf, under /tmp/mac-bench.lock:

  • The mesh agent library passed 116/116, including a_pre_rotation_node_refuses_rotation_and_epoch_extensions and epoch_support_requires_the_explicit_full_probe.
  • The Mac authority-reset retirement tests and epoch-only snapshot replay passed in the same suite.
  • cargo fmt --all -- --check passed, and the job target was removed before unlocking.

Raw receipt: /home/kayg/.cache/codex-scratch/j287/evidence/mac-epoch-final-87239a3.log (attached). The Linux infraternal status mismatch and server node-view evidence will be refreshed with the compute01 proof/gates after the owner’s return notice.

Mac compatibility validation at pushed source head `87239a3ceefe328f7460e7c1aa4c0414eca48aaf`, under `/tmp/mac-bench.lock`: - The mesh agent library passed 116/116, including `a_pre_rotation_node_refuses_rotation_and_epoch_extensions` and `epoch_support_requires_the_explicit_full_probe`. - The Mac authority-reset retirement tests and epoch-only snapshot replay passed in the same suite. - `cargo fmt --all -- --check` passed, and the job target was removed before unlocking. Raw receipt: `/home/kayg/.cache/codex-scratch/j287/evidence/mac-epoch-final-87239a3.log` (attached). The Linux `infraternal status` mismatch and server node-view evidence will be refreshed with the compute01 proof/gates after the owner’s return notice.
Author
Owner

J287 #380 progress on mesh-compat-382, current pushed head 66211b3fc7a216a728728b1fc7c6e6ae7b135f31.

The J330 #382 rework is now one atomic commit, with current origin/dev 3644950b8 merged. The Mac suite at the identical source tree passed cargo fmt --check and 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 and infraternal status Linux proof remain pending the compute01 real-root proof and gates.

J287 #380 progress on `mesh-compat-382`, current pushed head `66211b3fc7a216a728728b1fc7c6e6ae7b135f31`. The J330 #382 rework is now one atomic commit, with current `origin/dev` `3644950b8` merged. The Mac suite at the identical source tree passed `cargo fmt --check` and 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 and `infraternal status` Linux proof remain pending the compute01 real-root proof and gates.
Author
Owner

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.

Progress at 66211b3fc7a216a728728b1fc7c6e6ae7b135f31: 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.
Author
Owner

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.

Compute01 update at head 66211b3fc7a216a728728b1fc7c6e6ae7b135f31: 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.
Author
Owner

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.

Blocking resource update at head 66211b3fc7a216a728728b1fc7c6e6ae7b135f31: 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.
Author
Owner

Progress: final branch head is 441c50884d, merging current origin/dev bfe0b02f3. Two pushed quick-gate follow-ups are e73358524 (D345 docs) and 6bc376e1 (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.

Progress: final branch head is 441c50884d6d58654cd34f09b7627b119682de37, merging current origin/dev bfe0b02f3. Two pushed quick-gate follow-ups are e73358524 (D345 docs) and 6bc376e1 (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.
Author
Owner

Final verification update: head fec9c1bd89d66c4ccd07520cc458f47fcec1f48c merges current origin/dev af033d0b4fc5e9a6164c6b528914a0a99bb93b55. Quick at 441c508 stopped at D345 for two route test functions; commit b0a7306bf documents 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.

Final verification update: head `fec9c1bd89d66c4ccd07520cc458f47fcec1f48c` merges current origin/dev `af033d0b4fc5e9a6164c6b528914a0a99bb93b55`. Quick at 441c508 stopped at D345 for two route test functions; commit `b0a7306bf` documents 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.
Author
Owner

J287 Mac validation on final pushed head eac540e845f5f25bf139decc1a56443455d448d9 of mesh-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.
  • The server epoch-reset integration test: 1 passed, 0 failed.
  • The Mac target was removed before releasing /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.

J287 Mac validation on final pushed head `eac540e845f5f25bf139decc1a56443455d448d9` of `mesh-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. - The server epoch-reset integration test: 1 passed, 0 failed. - The Mac target was removed before releasing `/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.
Author
Owner

Progress update (2026-11-07): branch mesh-compat-382 is pushed at c87cb3c8d06cff913e89af4084f315dc5f92efe6. The current origin/dev (af033d0b4) is already an ancestor and includes the requested 48358a5fa; local nix develop . -c cargo fmt --check exited 0 with no output. The added D345 doc comment addresses the prior quick-gate failure. The previous quick on eac540e84 exited 1 at D345 before this comment; no gate is currently queued or running. Mac tests had passed at eac540e84 and 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.

Progress update (2026-11-07): branch `mesh-compat-382` is pushed at `c87cb3c8d06cff913e89af4084f315dc5f92efe6`. The current `origin/dev` (`af033d0b4`) is already an ancestor and includes the requested `48358a5fa`; local `nix develop . -c cargo fmt --check` exited 0 with no output. The added D345 doc comment addresses the prior quick-gate failure. The previous quick on `eac540e84` exited 1 at D345 before this comment; no gate is currently queued or running. Mac tests had passed at `eac540e84` and 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.
Author
Owner

Restart recovery at c87cb3c8d06cff913e89af4084f315dc5f92efe6: the prior final-head verify quick waiter at eac540e84 was cut by the compute01 restart and is no longer present in the queue. I have resynced the clean compute01 worktree to c87cb3c8d and checked the prescribed launcher (nix develop ... -c cargo --version, cargo 1.99.0). I am resubmitting verify quick once 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.

Restart recovery at `c87cb3c8d06cff913e89af4084f315dc5f92efe6`: the prior final-head `verify quick` waiter at `eac540e84` was cut by the compute01 restart and is no longer present in the queue. I have resynced the clean compute01 worktree to c87cb3c8d and checked the prescribed launcher (`nix develop ... -c cargo --version`, cargo 1.99.0). I am resubmitting `verify quick` once 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.
Author
Owner

The foreground verify quick retry on c87cb3c8d06cff913e89af4084f315dc5f92efe6 exited 1 in workspace clippy: the Linux integration test used crate::dataplane::Chunk, but its integration-test crate root has no dataplane module. The full stdout is attached as verify-quick-final-c87cb3c8d.log; remote tee hit ENOSPC, so the output was preserved from the foreground session locally.

The correction is pushed on current head babefc4233ccfe0281161d28273b5b75f5cac6bc: the test imports Chunk from 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 quick` retry on `c87cb3c8d06cff913e89af4084f315dc5f92efe6` exited 1 in workspace clippy: the Linux integration test used `crate::dataplane::Chunk`, but its integration-test crate root has no `dataplane` module. The full stdout is attached as `verify-quick-final-c87cb3c8d.log`; remote `tee` hit ENOSPC, so the output was preserved from the foreground session locally. The correction is pushed on current head `babefc4233ccfe0281161d28273b5b75f5cac6bc`: the test imports `Chunk` from 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.
Author
Owner

The foreground verify quick retry on babefc4233ccfe0281161d28273b5b75f5cac6bc exited 1 in workspace clippy because crates/infraternal-server/src/remote_mesh_revocation_tests.rs omitted the new authority_epoch field from a legacy identity fixture. The full stdout is attached as verify-quick-final-babefc423.log.

The fixture now explicitly reports authority_epoch: false for the old node, in commit 887739799 on mesh-compat-382. I am resubmitting quick once on that head; the root proof and final fast gate remain pending.

The foreground `verify quick` retry on `babefc4233ccfe0281161d28273b5b75f5cac6bc` exited 1 in workspace clippy because `crates/infraternal-server/src/remote_mesh_revocation_tests.rs` omitted the new `authority_epoch` field from a legacy identity fixture. The full stdout is attached as `verify-quick-final-babefc423.log`. The fixture now explicitly reports `authority_epoch: false` for the old node, in commit `887739799` on `mesh-compat-382`. I am resubmitting quick once on that head; the root proof and final fast gate remain pending.
Author
Owner

Foreground scripts/verify quick passed on mesh-compat-382 head 887739799e1564c80ce3e7ba4a2f84c2d3207048. 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 as verify-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 fast remain next.

Foreground `scripts/verify quick` passed on `mesh-compat-382` head `887739799e1564c80ce3e7ba4a2f84c2d3207048`. 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 as `verify-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 fast` remain next.
Author
Owner

Foreground quick passed on 887739799e1564c80ce3e7ba4a2f84c2d3207048 and its full log is attached in the preceding comment. The root clone is synced to that head; its exact launcher check returned cargo 1.99.0, and the root proof script syntax is clean.

The real-root proof has not started because ~/mesh-vm.claim still contains J207 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 final verify fast remain pending; the packet data path is unchanged, so no perf measurement is applicable.

Foreground quick passed on `887739799e1564c80ce3e7ba4a2f84c2d3207048` and its full log is attached in the preceding comment. The root clone is synced to that head; its exact launcher check returned `cargo 1.99.0`, and the root proof script syntax is clean. The real-root proof has not started because `~/mesh-vm.claim` still contains `J207 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 final `verify fast` remain pending; the packet data path is unchanged, so no perf measurement is applicable.
Author
Owner

Resource update on head 887739799e1564c80ce3e7ba4a2f84c2d3207048: the foreground verify fast waiter is still queued at position 5 (last status: all five compute01 slots busy, five jobs queued). The live-mesh claim has changed from J207 to J288 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`: the foreground `verify fast` waiter is still queued at position 5 (last status: all five compute01 slots busy, five jobs queued). The live-mesh claim has changed from J207 to `J288 2026-11-07T11:16:23Z`. I have not begun the root proof or touched the claim; it remains pending release.
Author
Owner

Resource update on head 887739799e1564c80ce3e7ba4a2f84c2d3207048: all five compute01 slots remain busy. The single foreground verify fast waiter is still queued (PID 3376983 in the latest status). The live-mesh claim now contains J315 2026-11-07T11:21:33Z; I have not begun the root proof or touched the claim.

Resource update on head `887739799e1564c80ce3e7ba4a2f84c2d3207048`: all five compute01 slots remain busy. The single foreground `verify fast` waiter is still queued (PID 3376983 in the latest status). The live-mesh claim now contains `J315 2026-11-07T11:21:33Z`; I have not begun the root proof or touched the claim.
Author
Owner

The latest compute01 check shows ~/mesh-vm.claim is absent, so the claim has been released. The final verify fast is 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.

The latest compute01 check shows `~/mesh-vm.claim` is absent, so the claim has been released. The final `verify fast` is 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.
Author
Owner

Progress update: merged current origin/dev at 21b3c84ce into mesh-compat-382 and pushed head 944db94e3. The in-progress verify fast on 887739799 was 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.

Progress update: merged current origin/dev at 21b3c84ce into `mesh-compat-382` and pushed head `944db94e3`. The in-progress `verify fast` on 887739799 was 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.
Author
Owner

Verification update on mesh-compat-382 at 944db94e3:

  • Mac under /tmp/mac-bench.lock: cargo fmt --check passed, the mesh agent suite passed 116/116, the server authority-epoch reset test passed 1/1, and MAC_TARGET_REMOVED=PASS. Raw log: /home/kayg/.cache/codex-scratch/j287/evidence/mac-final-944db94e3.log.
  • verify quick on 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 was logins::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.

Verification update on `mesh-compat-382` at `944db94e3`: - Mac under `/tmp/mac-bench.lock`: `cargo fmt --check` passed, the mesh agent suite passed 116/116, the server authority-epoch reset test passed 1/1, and `MAC_TARGET_REMOVED=PASS`. Raw log: `/home/kayg/.cache/codex-scratch/j287/evidence/mac-final-944db94e3.log`. - `verify quick` on 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 was `logins::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.
Author
Owner

Resource update on final head 944db94e3: the second foreground verify quick is queued at compute01 position 5, with RUST_TEST_THREADS=1 to 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 944db94e3 before the proof. I have not acquired ~/mesh-vm.claim while waiting. Mac tests at 944db94e3 passed and their log is attached above. Root proof and final fast remain pending.

Resource update on final head `944db94e3`: the second foreground `verify quick` is queued at compute01 position 5, with `RUST_TEST_THREADS=1` to 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 944db94e3 before the proof. I have not acquired `~/mesh-vm.claim` while waiting. Mac tests at 944db94e3 passed and their log is attached above. Root proof and final fast remain pending.
Author
Owner

Verification update on mesh-compat-382 head 944db94e3:

  • Foreground verify quick passed all 12 rows with RUST_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.
  • The Mac suite on this head passed fmt, all three macOS retirement regressions (116 agent tests total), and the server epoch-reset test; the target was removed under the lock. Raw log is attached in the prior comment.
  • The root clone is synced to 944db94e3; its Nix launcher reports Cargo 1.99.0. The root proof is waiting: compute01 has all five slots busy, and ~/mesh-vm.claim belongs 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 fast on this head. No packet-forwarding/data-path code changed; the perf measurement is skipped.

Verification update on `mesh-compat-382` head `944db94e3`: - Foreground `verify quick` passed all 12 rows with `RUST_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`. - The Mac suite on this head passed fmt, all three macOS retirement regressions (116 agent tests total), and the server epoch-reset test; the target was removed under the lock. Raw log is attached in the prior comment. - The root clone is synced to `944db94e3`; its Nix launcher reports Cargo 1.99.0. The root proof is waiting: compute01 has all five slots busy, and `~/mesh-vm.claim` belongs 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 fast` on this head. No packet-forwarding/data-path code changed; the perf measurement is skipped.
Author
Owner

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.claim still belongs to J254 (2026-11-07T12:40:58Z), so I have not changed it. The J287 compute target is removed; the current-head /root clone 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.

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.claim` still belongs to J254 (`2026-11-07T12:40:58Z`), so I have not changed it. The J287 compute target is removed; the current-head `/root` clone 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.
Author
Owner

J287 progress at head 944db94e30 on branch mesh-compat-382. The branch is pushed and clean; current origin/dev 21b3c84ced is 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 progress at head 944db94e308e976d0b82223e002f588649163f3e on branch mesh-compat-382. The branch is pushed and clean; current origin/dev 21b3c84ceddd571e1580f679009860e32b37beb9 is 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.
Author
Owner

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 resource update at 2026-11-07T13:19Z, head 944db94e308e976d0b82223e002f588649163f3e. 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.
Author
Owner

J287 root-proof preflight at 2026-11-07T13:40:43Z. Local and pushed branch heads match at 944db94e30; current origin/dev 21b3c84ced is 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.

J287 root-proof preflight at 2026-11-07T13:40:43Z. Local and pushed branch heads match at 944db94e308e976d0b82223e002f588649163f3e; current origin/dev 21b3c84ceddd571e1580f679009860e32b37beb9 is 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.
Author
Owner

The first root-proof attempt at 944db94e3 did 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.

The first root-proof attempt at 944db94e3 did 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.
Author
Owner

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.

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.
Author
Owner

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.

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.
Author
Owner

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 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.
Author
Owner

J287 interim compatibility evidence for #380.

Current branch head is 6436af1fad, including current origin/dev 6ffe37e06. verify quick passed on this head; its log is attached.

The real-root proof on 020db2426 included 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 on 8e451d06c9 passed 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 fast on the final head is still pending the new compute01 release notice on #402; I will post its verbatim result here when complete.

J287 interim compatibility evidence for #380. Current branch head is 6436af1fad2ff00ccb74c7f4e9b6554ea8509751, including current origin/dev 6ffe37e06. `verify quick` passed on this head; its log is attached. The real-root proof on 020db2426 included 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 on 8e451d06c946 passed 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 fast` on the final head is still pending the new compute01 release notice on #402; I will post its verbatim result here when complete.
Author
Owner

J287 progress on mesh-compat-382 at final source head 22620e22a5951d3475dcd2d6f074e8486bf7083b (tree 20d38bf963202fd0c13b3f8f453560a8612a8ba2).

The final-source-tree verify quick pre-check passed. The changed status package reported 25 passed and 1 ignored, including mesh_without_a_server_configuration_reports_possible_version_mismatch; raw output is verify-quick-0dbfed478.log in the attached evidence bundle. The Mac mesh suite ran under /tmp/mac-bench.lock and passed 117/117, including nonrotating_peer_uses_pre_rotation_wire_shape, macos_node::tests::equal_revision_restore_retires_stale_peers, and macos_node::tests::restored_snapshot_replaces_stale_peers. Its target was removed before unlocking; raw output is mac-final-0dbfed478.log in 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 final verify fast. Earlier root evidence is on an older branch head and is not counted as final-head proof.

J287 progress on `mesh-compat-382` at final source head `22620e22a5951d3475dcd2d6f074e8486bf7083b` (tree `20d38bf963202fd0c13b3f8f453560a8612a8ba2`). The final-source-tree `verify quick` pre-check passed. The changed status package reported 25 passed and 1 ignored, including `mesh_without_a_server_configuration_reports_possible_version_mismatch`; raw output is `verify-quick-0dbfed478.log` in the attached evidence bundle. The Mac mesh suite ran under `/tmp/mac-bench.lock` and passed 117/117, including `nonrotating_peer_uses_pre_rotation_wire_shape`, `macos_node::tests::equal_revision_restore_retires_stale_peers`, and `macos_node::tests::restored_snapshot_replaces_stale_peers`. Its target was removed before unlocking; raw output is `mac-final-0dbfed478.log` in 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 final `verify fast`. Earlier root evidence is on an older branch head and is not counted as final-head proof.
Author
Owner

J287 compute01 hold, branch mesh-compat-382 at 22620e22a5, clean and pushed. Current origin/dev 6ffe37e067 is 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 compute01 hold, branch mesh-compat-382 at 22620e22a5951d3475dcd2d6f074e8486bf7083b, clean and pushed. Current origin/dev 6ffe37e067d8fa7b090ea83c21b84b77937f76d9 is 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.
Author
Owner

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 22620e22a and post both logs. Current origin/dev has advanced to 7dc56b8e8; this run stays pinned to the explicitly requested review head 22620e22a.

J287 resuming after #402 comment 86192 (compute01 back, 4 slots). Branch mesh-compat-382 is clean and pushed at 22620e22a5951d3475dcd2d6f074e8486bf7083b. 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 22620e22a and post both logs. Current origin/dev has advanced to 7dc56b8e8; this run stays pinned to the explicitly requested review head 22620e22a.
Author
Owner

Root prebuild attempt on head 22620e22a stopped 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 prebuild attempt on head 22620e22a stopped 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.
Author
Owner

Root proof run on 22620e22a exercised 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.

Root proof run on 22620e22a exercised 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.
Author
Owner

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.

The corrected real-root proof passed on head 22620e22a5951d3475dcd2d6f074e8486bf7083b. 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.
Author
Owner

J287 completion on mesh-compat-382 at requested head 22620e22a5951d3475dcd2d6f074e8486bf7083b (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, and infraternal status's old-node compatibility mismatch test. The proof ended with ROOT_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 fast ran in the foreground on compute01 at this same head and exited 0. Verbatim final stdout lines:

 50 pass
 0 fail
 77253 expect() calls
Ran 50 tests across 13 files. [12.11s]

The full raw gate log is attached.

Evidence attachments:

J287 completion on `mesh-compat-382` at requested head `22620e22a5951d3475dcd2d6f074e8486bf7083b` (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, and `infraternal status`'s old-node compatibility mismatch test. The proof ended with `ROOT_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 fast` ran in the foreground on compute01 at this same head and exited 0. Verbatim final stdout lines: ```text 50 pass 0 fail 77253 expect() calls Ran 50 tests across 13 files. [12.11s] ``` The full raw gate log is attached. Evidence attachments: - [root-proof-22620e22a.log](https://git.kayg.org/attachments/aefc4a29-4682-48cd-bcd2-d39e24a59ce9) - [verify-fast-22620e22a.log](https://git.kayg.org/attachments/120d2922-a21b-4aeb-8c06-61ee9a597710)
Author
Owner

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 status plus the server's node view must identify an old node that cannot report epoch support. Current branch head is 7ae32516f3bb11faf23608441b146f129712e317; 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 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 status` plus the server's node view must identify an old node that cannot report epoch support. Current branch head is `7ae32516f3bb11faf23608441b146f129712e317`; 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.
Author
Owner

J287 is resuming the #380 compatibility follow-up on branch mesh-compat-382 at 7b3f56c2c4fcbd8739e28e0faf0a6f94a66d5f2c; current origin/dev is 4e6fc472e4b4f06a08c5f55540fb872a87018ee9. 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 is resuming the #380 compatibility follow-up on branch `mesh-compat-382` at `7b3f56c2c4fcbd8739e28e0faf0a6f94a66d5f2c`; current `origin/dev` is `4e6fc472e4b4f06a08c5f55540fb872a87018ee9`. 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.
Author
Owner

J287 continuation on mesh-compat-382 at 18d831430, now merged with current origin/dev b31c2da2d.

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 continuation on `mesh-compat-382` at `18d831430`, now merged with current `origin/dev` `b31c2da2d`. 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.
Author
Owner

J287 update: origin/dev advanced from b31c2da2d to 098f2c445 during VM setup. I merged that current tip and pushed mesh-compat-382 at bed733849. 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 quick on dev-02, then the current-head root proofs and verify fast on 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.

J287 update: `origin/dev` advanced from `b31c2da2d` to `098f2c445` during VM setup. I merged that current tip and pushed `mesh-compat-382` at `bed733849`. 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 quick` on dev-02, then the current-head root proofs and `verify fast` on 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.
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
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
No description provided.