dev no longer builds on macOS: restart.rs uses Linux-only SO_PEERCRED (since #285 merge 363d95468) #379

Open
opened 2026-11-06 02:08:13 +00:00 by kayg · 20 comments
Owner

Found by J267 (#375, Mac mesh break-it). Severity P2: no security or data impact, but every dev commit since the #285 merge is unbuildable on macOS, which blocks D352 Mac parity and any Mac test of dev.

What: cargo build --locked --release -p infraternal fails on macOS arm64 at origin/dev 0b72f638a:

error[E0425]: cannot find value `PeerCredentials` in module `nix::sys::socket::sockopt`
   --> crates/infraternal/src/restart.rs:271:81
    |
271 |     let peer = nix::sys::socket::getsockopt(&socket, nix::sys::socket::sockopt::PeerCredentials)?;
    |                                                                                 ^^^^^^^^^^^^^^^ not found in `nix::sys::socket::sockopt`

For more information about this error, try `rustc --explain E0425`.
error: could not compile `infraternal` (bin "infraternal") due to 1 previous error

nix::sys::socket::sockopt::PeerCredentials (SO_PEERCRED) exists only on Linux and Android. query_ca_status (crates/infraternal/src/restart.rs:267-271) isn't cfg(target_os = "linux"), and the default feature set compiles it on the Mac.

Since when: the line comes from 008bc417f (#285 part A). It reached dev with 363d95468 "Merge trust-285-a (with trust-285-b)". The parent base 9b0c731e8 builds fine on the same Mac VM (J267, Finished release in 34m 12s, sha256 2f9863b2…).

Reproducer (Mac VM, under lockf /tmp/mac-bench.lock):

git -C <clone> worktree add --detach /tmp/x 0b72f638a
cd /tmp/x && nix develop "git+file://$PWD?shallow=1" -c bash -c 'unset RUSTC_WRAPPER; cargo build --locked --release -p infraternal'

Expected: a Mac release binary, as at 9b0c731e8. Actual: E0425 at restart.rs:271:81. Log: lume@infraternal-macos-01-std:~/j267-evidence/build-0b72.log.

Why the gate missed it: scripts/verify fast builds Linux targets only. scripts/macos-build-check would have caught it, but nothing runs it before merge.

Notes for whoever fixes it (no fix in J267, report only): the macOS equivalent of the peer-UID check is getpeereid (nix::unistd::getpeereid) or LOCAL_PEERCRED (sockopt::LocalPeerCred). The same Linux-only call in infraternal-server/src/ca_handoff.rs:140 and infraternal-shim (cleanup.rs, login.rs, session.rs) didn't break this build, so those are presumably cfg-gated or not built for the Mac. Worth checking in the same pass. A Mac build row in the merge gate (or the orchestrator running macos-build-check on merges that touch shared CLI code) would stop the next one.

Links: #285, #375, D352.

Found by J267 (#375, Mac mesh break-it). Severity **P2**: no security or data impact, but every dev commit since the #285 merge is unbuildable on macOS, which blocks D352 Mac parity and any Mac test of dev. **What:** `cargo build --locked --release -p infraternal` fails on macOS arm64 at origin/dev `0b72f638a`: ``` error[E0425]: cannot find value `PeerCredentials` in module `nix::sys::socket::sockopt` --> crates/infraternal/src/restart.rs:271:81 | 271 | let peer = nix::sys::socket::getsockopt(&socket, nix::sys::socket::sockopt::PeerCredentials)?; | ^^^^^^^^^^^^^^^ not found in `nix::sys::socket::sockopt` For more information about this error, try `rustc --explain E0425`. error: could not compile `infraternal` (bin "infraternal") due to 1 previous error ``` `nix::sys::socket::sockopt::PeerCredentials` (`SO_PEERCRED`) exists only on Linux and Android. `query_ca_status` (`crates/infraternal/src/restart.rs:267-271`) isn't `cfg(target_os = "linux")`, and the default feature set compiles it on the Mac. **Since when:** the line comes from `008bc417f` (#285 part A). It reached dev with `363d95468` "Merge trust-285-a (with trust-285-b)". The parent base `9b0c731e8` builds fine on the same Mac VM (J267, `Finished release in 34m 12s`, sha256 `2f9863b2…`). **Reproducer** (Mac VM, under `lockf /tmp/mac-bench.lock`): ``` git -C <clone> worktree add --detach /tmp/x 0b72f638a cd /tmp/x && nix develop "git+file://$PWD?shallow=1" -c bash -c 'unset RUSTC_WRAPPER; cargo build --locked --release -p infraternal' ``` Expected: a Mac release binary, as at `9b0c731e8`. Actual: E0425 at `restart.rs:271:81`. Log: `lume@infraternal-macos-01-std:~/j267-evidence/build-0b72.log`. **Why the gate missed it:** `scripts/verify fast` builds Linux targets only. `scripts/macos-build-check` would have caught it, but nothing runs it before merge. **Notes for whoever fixes it** (no fix in J267, report only): the macOS equivalent of the peer-UID check is `getpeereid` (`nix::unistd::getpeereid`) or `LOCAL_PEERCRED` (`sockopt::LocalPeerCred`). The same Linux-only call in `infraternal-server/src/ca_handoff.rs:140` and `infraternal-shim` (`cleanup.rs`, `login.rs`, `session.rs`) didn't break this build, so those are presumably cfg-gated or not built for the Mac. Worth checking in the same pass. A Mac build row in the merge gate (or the orchestrator running `macos-build-check` on merges that touch shared CLI code) would stop the next one. Links: #285, #375, D352.
Author
Owner

J286 starting on branch macos-build-379, base 3dc58dc67b771c7e38a298c3c5ac437055b8ff44 (origin/dev). Plan (~90 minutes): reproduce default and desktop release builds under the per-step Mac lock; make the smallest platform fix preserving Linux behavior and D166 unsupported-Mac fail-safe; test Linux macOS-target checking and add the cheapest workable guard without editing merge.sh; prove both Mac builds, Linux workspace check, foreground quick and final fast gates. Evidence will be retained under j286 evidence directories on the build hosts. No merge.

J286 starting on branch `macos-build-379`, base `3dc58dc67b771c7e38a298c3c5ac437055b8ff44` (origin/dev). Plan (~90 minutes): reproduce default and desktop release builds under the per-step Mac lock; make the smallest platform fix preserving Linux behavior and D166 unsupported-Mac fail-safe; test Linux macOS-target checking and add the cheapest workable guard without editing merge.sh; prove both Mac builds, Linux workspace check, foreground quick and final fast gates. Evidence will be retained under j286 evidence directories on the build hosts. No merge.
Author
Owner

Investigation: #379 identifies the unguarded SO_PEERCRED call in restart::query_ca_status; the shim already uses cfg-separated SO_PEERCRED/getpeereid for the same peer-UID contract. The CA handoff call is Linux-gated and fails closed elsewhere. I am reproducing default + desktop on the Mac before editing. D166 fail-safe methods and key_rotation:false already exist and will stay unchanged. Linux Nix toolchain currently has only Linux std targets; macOS native dependencies additionally require the Apple SDK through .cargo/apple-cc.sh. I will record a cross-check attempt and extend the existing native macos-build-check with desktop coverage if cross-checking cannot exercise this CLI.

Investigation: #379 identifies the unguarded SO_PEERCRED call in restart::query_ca_status; the shim already uses cfg-separated SO_PEERCRED/getpeereid for the same peer-UID contract. The CA handoff call is Linux-gated and fails closed elsewhere. I am reproducing default + desktop on the Mac before editing. D166 fail-safe methods and key_rotation:false already exist and will stay unchanged. Linux Nix toolchain currently has only Linux std targets; macOS native dependencies additionally require the Apple SDK through .cargo/apple-cc.sh. I will record a cross-check attempt and extend the existing native macos-build-check with desktop coverage if cross-checking cannot exercise this CLI.
Author
Owner

Progress: initial Mac raw-cargo attempt stopped on the host sha256sum lacking GNU --check --status (artifact /Users/lume/j286-evidence/base-default.log). Re-running in nix develop; log /Users/lume/j286-evidence/base-default-nix.log. Existing Mac guard now has a proposed --check mode for default + desktop cargo check, and its full release mode builds desktop too. Linux baseline workspace check is running through compute01 build-slot (/home/claude/j286-evidence/base-workspace.log); the macOS cross-check is queued on dev-02. No production edit yet.

Progress: initial Mac raw-cargo attempt stopped on the host sha256sum lacking GNU --check --status (artifact /Users/lume/j286-evidence/base-default.log). Re-running in nix develop; log /Users/lume/j286-evidence/base-default-nix.log. Existing Mac guard now has a proposed --check mode for default + desktop cargo check, and its full release mode builds desktop too. Linux baseline workspace check is running through compute01 build-slot (/home/claude/j286-evidence/base-workspace.log); the macOS cross-check is queued on dev-02. No production edit yet.
Author
Owner

Cross-check result: after supplying the pinned 1.99.0 aarch64-apple-darwin std in a temporary Nix shell, cargo check --locked --target aarch64-apple-darwin -p infraternal still fails before our CLI: .cargo/apple-cc.sh:67 requires /usr/bin/clang (not found on Linux), used by vendored SQLite/OpenSSL, and this wrapper deliberately requires the OS toolchain/SDK (#265). Evidence: dev-02 /home/claude/j286-evidence/cross-macos-with-std-direct.log; temporary toolchain recipe /home/claude/j286-evidence/cross.nix. Merely adding the Rust target does not guard restart.rs. Cheapest alternative: run lockf -k /tmp/mac-bench.lock nix develop -c scripts/macos-build-check --check on the Mac at merge time for shared Rust changes; it checks default + desktop feature sets without release linking/tests. I am adding this mode to the existing script, and desktop release/linkage coverage to its full mode. merge.sh remains untouched; orchestrator must wire/invoke the native check.

Cross-check result: after supplying the pinned 1.99.0 aarch64-apple-darwin std in a temporary Nix shell, `cargo check --locked --target aarch64-apple-darwin -p infraternal` still fails before our CLI: .cargo/apple-cc.sh:67 requires /usr/bin/clang (not found on Linux), used by vendored SQLite/OpenSSL, and this wrapper deliberately requires the OS toolchain/SDK (#265). Evidence: dev-02 `/home/claude/j286-evidence/cross-macos-with-std-direct.log`; temporary toolchain recipe `/home/claude/j286-evidence/cross.nix`. Merely adding the Rust target does not guard restart.rs. Cheapest alternative: run `lockf -k /tmp/mac-bench.lock nix develop -c scripts/macos-build-check --check` on the Mac at merge time for shared Rust changes; it checks default + desktop feature sets without release linking/tests. I am adding this mode to the existing script, and desktop release/linkage coverage to its full mode. merge.sh remains untouched; orchestrator must wire/invoke the native check.
Author
Owner

Reproduced the requested default release failure on base 3dc58dc67b under the Mac lock: E0425 PeerCredentials missing at restart.rs:271:81; cargo exit 101. Artifact: /Users/lume/j286-evidence/base-default-nix.log. Desktop baseline is next, with the lock released between builds. Linux baseline cargo check --workspace --locked passed (5m42s reported by cargo; build time only, not a performance claim), artifact compute01 /home/claude/j286-evidence/base-workspace.log.

Reproduced the requested default release failure on base 3dc58dc67b771c7e38a298c3c5ac437055b8ff44 under the Mac lock: E0425 PeerCredentials missing at restart.rs:271:81; cargo exit 101. Artifact: `/Users/lume/j286-evidence/base-default-nix.log`. Desktop baseline is next, with the lock released between builds. Linux baseline `cargo check --workspace --locked` passed (5m42s reported by cargo; build time only, not a performance claim), artifact compute01 `/home/claude/j286-evidence/base-workspace.log`.
Author
Owner

Desktop baseline hit a second environment prerequisite before restart.rs: Nix exports its 14.4 SDK to the system Swift compiler, which cannot load its standard library with that SDK (apple-metal/apple-cf build scripts). Artifact /Users/lume/j286-evidence/base-desktop.log. Retrying the same unmodified base with SDKROOT and DEVELOPER_DIR unset inside nix develop, so Swift selects the installed OS SDK, as the existing Apple C wrapper already does.

Desktop baseline hit a second environment prerequisite before restart.rs: Nix exports its 14.4 SDK to the system Swift compiler, which cannot load its standard library with that SDK (apple-metal/apple-cf build scripts). Artifact `/Users/lume/j286-evidence/base-desktop.log`. Retrying the same unmodified base with SDKROOT and DEVELOPER_DIR unset inside nix develop, so Swift selects the installed OS SDK, as the existing Apple C wrapper already does.
Author
Owner

Implementation is ready locally: cfg-separated Linux SO_PEERCRED and macOS getpeereid, both comparing the connected peer UID before request bytes. Linux query semantics and D166 Mac no-rotation capability are unchanged. Foreground quick is in the infraternal unit-test build after workspace clippy passed (compute01 /home/claude/j286-evidence/quick.log). Mac desktop baseline now compiles with the installed Apple SDK/tool shims selected; /Users/lume/j286-evidence/native-step.sh records that environment.

Implementation is ready locally: cfg-separated Linux SO_PEERCRED and macOS getpeereid, both comparing the connected peer UID before request bytes. Linux query semantics and D166 Mac no-rotation capability are unchanged. Foreground quick is in the infraternal unit-test build after workspace clippy passed (compute01 /home/claude/j286-evidence/quick.log). Mac desktop baseline now compiles with the installed Apple SDK/tool shims selected; /Users/lume/j286-evidence/native-step.sh records that environment.
Author
Owner

Both requested baseline builds now reproduce E0425 at restart.rs:271:81, cargo exit 101, including --features desktop once the installed Apple SDK/tools are selected. Desktop artifact: /Users/lume/j286-evidence/base-desktop-native-tools.log. Applying the fix on the Mac now; default and desktop green release builds follow as separate locked steps. The native guard selects system Apple tools/SDK itself while retaining GNU bash/sed/checksums, so its documented nix invocation works without the scratch runner.

Both requested baseline builds now reproduce E0425 at restart.rs:271:81, cargo exit 101, including --features desktop once the installed Apple SDK/tools are selected. Desktop artifact: `/Users/lume/j286-evidence/base-desktop-native-tools.log`. Applying the fix on the Mac now; default and desktop green release builds follow as separate locked steps. The native guard selects system Apple tools/SDK itself while retaining GNU bash/sed/checksums, so its documented nix invocation works without the scratch runner.
Author
Owner

Pushed atomic implementation commit 143ea57903a2ed3b996ec3647347b52f39e9fcc1 on macos-build-379, integrated onto current dev be64f2902ed11067d31bb875bbdb77982760524e. Foreground integrated quick passed: 216 passed, 0 failed, 15 ignored; every quick row PASS (compute01:/home/claude/j286-evidence/quick-integrated.log). Fixed Linux cargo check --workspace --locked passed (fixed-workspace.log). Fixed Mac default release passed on the original base (/Users/lume/j286-evidence/fixed-default.log); integrated Mac builds remain in progress. Final fast now starts through the free compute01 slot, reusing /home/claude/worktrees/j286/target.

Pushed atomic implementation commit `143ea57903a2ed3b996ec3647347b52f39e9fcc1` on `macos-build-379`, integrated onto current dev `be64f2902ed11067d31bb875bbdb77982760524e`. Foreground integrated quick passed: 216 passed, 0 failed, 15 ignored; every quick row PASS (`compute01:/home/claude/j286-evidence/quick-integrated.log`). Fixed Linux `cargo check --workspace --locked` passed (`fixed-workspace.log`). Fixed Mac default release passed on the original base (`/Users/lume/j286-evidence/fixed-default.log`); integrated Mac builds remain in progress. Final fast now starts through the free compute01 slot, reusing `/home/claude/worktrees/j286/target`.
Author
Owner

Mac release proof: default on the integrated source passed (/Users/lume/j286-evidence/fixed-default-integrated.log, cargo Finished release in 3m10s); desktop on pushed head 143ea57903 passed (/Users/lume/j286-evidence/fixed-desktop.log, cargo Finished release in 7m18s). These are build receipts, not runtime-performance claims. The actual nix develop -c scripts/macos-build-check --check invocation is running now, to verify the proposed native merge guard itself. Linux final fast has passed compile-out and clippy and entered workspace tests.

Mac release proof: default on the integrated source passed (`/Users/lume/j286-evidence/fixed-default-integrated.log`, cargo Finished release in 3m10s); desktop on pushed head 143ea57903a2ed3b996ec3647347b52f39e9fcc1 passed (`/Users/lume/j286-evidence/fixed-desktop.log`, cargo Finished release in 7m18s). These are build receipts, not runtime-performance claims. The actual `nix develop -c scripts/macos-build-check --check` invocation is running now, to verify the proposed native merge guard itself. Linux final fast has passed compile-out and clippy and entered workspace tests.
Author
Owner

Guard verification finding: applying the system SDK globally also affects the native VT debug build, whose Zig host runner then fails to link system symbols. Artifact /Users/lume/j286-evidence/native-guard.log. I am narrowing --check to the shipping release profile: check default first with the development shell SDK/native recipe, then select system SDK/tools only for the desktop Swift check. The existing full macos-build-check mode stays unchanged. Both requested release builds already pass; this follow-up fixes only the added guard.

Guard verification finding: applying the system SDK globally also affects the native VT debug build, whose Zig host runner then fails to link system symbols. Artifact `/Users/lume/j286-evidence/native-guard.log`. I am narrowing --check to the shipping release profile: check default first with the development shell SDK/native recipe, then select system SDK/tools only for the desktop Swift check. The existing full macos-build-check mode stays unchanged. Both requested release builds already pass; this follow-up fixes only the added guard.
Author
Owner

Native guard red/green proof: revised --check passed default + desktop (/Users/lume/j286-evidence/native-guard-release.log). Replacing only restart.rs with unmodified dev makes the same guard fail with E0425, exit 101; fixture restores the fixed file on exit (native-guard-red.log, guard-red.sh). Amended the atomic commit to include the verified guard correction, pushed head 2283885ac887bcae9ae0d09112bada91baf43c35. Existing full Mac check remains unchanged; --check uses the release profile and selects system SDK/tools only for desktop. Rechecking the restored fixed head now. Production Rust diff is unchanged from 143ea5790; final Linux gate is still in its workspace-test phase.

Native guard red/green proof: revised --check passed default + desktop (`/Users/lume/j286-evidence/native-guard-release.log`). Replacing only restart.rs with unmodified dev makes the same guard fail with E0425, exit 101; fixture restores the fixed file on exit (`native-guard-red.log`, `guard-red.sh`). Amended the atomic commit to include the verified guard correction, pushed head `2283885ac887bcae9ae0d09112bada91baf43c35`. Existing full Mac check remains unchanged; --check uses the release profile and selects system SDK/tools only for desktop. Rechecking the restored fixed head now. Production Rust diff is unchanged from 143ea5790; final Linux gate is still in its workspace-test phase.
Author
Owner

Owner freeze acknowledged: no new steps on dev-02-std or macos-01-std, and no new Mac-lock step will be queued. Fix is already pushed as 2283885ac887bcae9ae0d09112bada91baf43c35. Linux verification continues on compute01. Native Mac build proof is pending until the Mac is back, except any receipt completed by the already-running final desktop build (allowed to finish). Earlier native default/desktop builds and guard red/green receipts are recorded above; final default receipt is also retained locally under /home/kayg/.cache/codex-scratch/j286/evidence/mac-final-default.log. I will attempt the macOS cross-check from compute01 as requested; its SDK/native-dependency limitation from the earlier Linux attempt remains documented.

Owner freeze acknowledged: no new steps on dev-02-std or macos-01-std, and no new Mac-lock step will be queued. Fix is already pushed as `2283885ac887bcae9ae0d09112bada91baf43c35`. Linux verification continues on compute01. Native Mac build proof is pending until the Mac is back, except any receipt completed by the already-running final desktop build (allowed to finish). Earlier native default/desktop builds and guard red/green receipts are recorded above; final default receipt is also retained locally under `/home/kayg/.cache/codex-scratch/j286/evidence/mac-final-default.log`. I will attempt the macOS cross-check from compute01 as requested; its SDK/native-dependency limitation from the earlier Linux attempt remains documented.
Author
Owner

The already-running final Mac desktop step finished after the freeze order, without starting anything else: release build PASS, binary starts (infraternal 0.1.0 (stable)), arm64 Mach-O, only /System/Library and /usr/lib dependencies, 23,282,672 bytes; SHA-256 1d8846cd2dd01b592b21b0bde972538407719d369c6b32b4bb9f8ac648cd1bcc. Head 2283885ac8. Remote full log /Users/lume/j286-evidence/final-desktop.log; captured terminal receipt saved locally as /home/kayg/.cache/codex-scratch/j286/evidence/mac-final-desktop-receipt.log. No new Mac-lock step, sync or cleanup will be started. Any further native Mac proof and retrieval of that remote full log are pending until the Mac is back. Both final-head release builds have now actually completed; earlier native guard red/green receipts were already copied off the VM.

The already-running final Mac desktop step finished after the freeze order, without starting anything else: release build PASS, binary starts (`infraternal 0.1.0 (stable)`), arm64 Mach-O, only /System/Library and /usr/lib dependencies, 23,282,672 bytes; SHA-256 1d8846cd2dd01b592b21b0bde972538407719d369c6b32b4bb9f8ac648cd1bcc. Head 2283885ac887bcae9ae0d09112bada91baf43c35. Remote full log `/Users/lume/j286-evidence/final-desktop.log`; captured terminal receipt saved locally as `/home/kayg/.cache/codex-scratch/j286/evidence/mac-final-desktop-receipt.log`. No new Mac-lock step, sync or cleanup will be started. Any further native Mac proof and retrieval of that remote full log are pending until the Mac is back. Both final-head release builds have now actually completed; earlier native guard red/green receipts were already copied off the VM.
Author
Owner

j286 progress: compute01 verify fast found two failures outside this diff: process-per-user bulk_turn_advances_sixteen_kib_and_yields_before_the_rest (session.drained), and test_gate_prints_skip_for_77 (plain exit 77 is reported SKIP). full gate continues through its remaining rows. i will reproduce the failing rows on unmodified dev before reporting their status. log: compute01 ~/j286-evidence/fast.log. std VMs remain frozen; no new steps started there.

j286 progress: compute01 verify fast found two failures outside this diff: process-per-user bulk_turn_advances_sixteen_kib_and_yields_before_the_rest (session.drained), and test_gate_prints_skip_for_77 (plain exit 77 is reported SKIP). full gate continues through its remaining rows. i will reproduce the failing rows on unmodified dev before reporting their status. log: compute01 ~/j286-evidence/fast.log. std VMs remain frozen; no new steps started there.
Author
Owner

j286 checkpoint: fix remains pushed at 2283885ac8. compute01 fast completed x86 static linkage/trust/AES checks: 27,709,552 bytes, recorded-baseline delta +5,291,296 bytes (report only); arm64 static build continues. the only failures so far are the previously reported shim drain assertion and exit-77 gate reporting test. next: reproduce those rows on unmodified integrated dev base be64f2902, run compute01 macOS cross-check, then final-head quick/fast using the same target ~/worktrees/j286/target. no new work on either frozen std VM. receipts remain in ~/j286-evidence/ on compute01 and local ~/.cache/codex-scratch/j286/evidence/.

j286 checkpoint: fix remains pushed at 2283885ac887bcae9ae0d09112bada91baf43c35. compute01 fast completed x86 static linkage/trust/AES checks: 27,709,552 bytes, recorded-baseline delta +5,291,296 bytes (report only); arm64 static build continues. the only failures so far are the previously reported shim drain assertion and exit-77 gate reporting test. next: reproduce those rows on unmodified integrated dev base be64f2902, run compute01 macOS cross-check, then final-head quick/fast using the same target ~/worktrees/j286/target. no new work on either frozen std VM. receipts remain in ~/j286-evidence/ on compute01 and local ~/.cache/codex-scratch/j286/evidence/.
Author
Owner

compute01 cross-check at final head 2283885ac failed before reaching the CLI: cargo check --locked --target aarch64-apple-darwin -p infraternal, with target std supplied through Nix, exits 101 in SQLite/OpenSSL because .cargo/apple-cc.sh:67 requires /usr/bin/clang. log: compute01 ~/j286-evidence/cross-compute.log. cheapest guard remains native scripts/macos-build-check --check under lockf after the freeze is lifted; merge.sh is unchanged. both suspect initial gate rows pass on unmodified integrated dev be64f2902: exit-77 unit test (1 passed), full process-per-user shim row (217 passed, 20 ignored). logs: base-privileged-row.log and base-shim-row.log. final-head workspace/quick/fast is queued on compute01; no new std-VM work.

compute01 cross-check at final head 2283885ac failed before reaching the CLI: cargo check --locked --target aarch64-apple-darwin -p infraternal, with target std supplied through Nix, exits 101 in SQLite/OpenSSL because .cargo/apple-cc.sh:67 requires /usr/bin/clang. log: compute01 ~/j286-evidence/cross-compute.log. cheapest guard remains native scripts/macos-build-check --check under lockf after the freeze is lifted; merge.sh is unchanged. both suspect initial gate rows pass on unmodified integrated dev be64f2902: exit-77 unit test (1 passed), full process-per-user shim row (217 passed, 20 ignored). logs: base-privileged-row.log and base-shim-row.log. final-head workspace/quick/fast is queued on compute01; no new std-VM work.
Author
Owner

exit-77 finding reproduced on unmodified be64f2902 scripts with the actual gate context: RUST_GATE_SKIPPABLE=yes python3 scripts/test-verify-privileged.py PrivilegedAreas.test_gate_prints_skip_for_77 exits 1 with the same plain|SKIP assertion. rust_run_gate_skippable exposes that temporary variable to its child Python and nested Bash; the isolated baseline invocation without it passes. receipt: compute01 ~/j286-evidence/base-privileged-context.log (sources extracted with git archive from be64f2902, no source edits). this is a pre-existing gate issue outside #379. the baseline full shim row passes, so its initial drain assertion remains an unclassified transient until the final-head rerun.

exit-77 finding reproduced on unmodified be64f2902 scripts with the actual gate context: RUST_GATE_SKIPPABLE=yes python3 scripts/test-verify-privileged.py PrivilegedAreas.test_gate_prints_skip_for_77 exits 1 with the same plain|SKIP assertion. rust_run_gate_skippable exposes that temporary variable to its child Python and nested Bash; the isolated baseline invocation without it passes. receipt: compute01 ~/j286-evidence/base-privileged-context.log (sources extracted with git archive from be64f2902, no source edits). this is a pre-existing gate issue outside #379. the baseline full shim row passes, so its initial drain assertion remains an unclassified transient until the final-head rerun.
Author
Owner

j286 checkpoint at final head 2283885ac8: compute01 cargo check --workspace --locked PASS (FINAL_WORKSPACE_EXIT=0), foreground verify quick PASS (FINAL_QUICK_EXIT=0). final fast workspace tests and process-per-user shim row passed; the exit-77 privileged-row unit test failed again, matching the unmodified-dev context reproducer. final static release checks are still running. logs: compute01 ~/j286-evidence/final-{workspace,quick,fast}.log; completed logs also retained locally under ~/.cache/codex-scratch/j286/evidence/. no new work on either frozen std VM; native Mac follow-up/full desktop-log retrieval waits for the freeze to lift.

j286 checkpoint at final head 2283885ac887bcae9ae0d09112bada91baf43c35: compute01 cargo check --workspace --locked PASS (FINAL_WORKSPACE_EXIT=0), foreground verify quick PASS (FINAL_QUICK_EXIT=0). final fast workspace tests and process-per-user shim row passed; the exit-77 privileged-row unit test failed again, matching the unmodified-dev context reproducer. final static release checks are still running. logs: compute01 ~/j286-evidence/final-{workspace,quick,fast}.log; completed logs also retained locally under ~/.cache/codex-scratch/j286/evidence/. no new work on either frozen std VM; native Mac follow-up/full desktop-log retrieval waits for the freeze to lift.
Author
Owner

j286 implementation finished on macos-build-379, pushed head 2283885ac887bcae9ae0d09112bada91baf43c35. original base: 3dc58dc67b771c7e38a298c3c5ac437055b8ff44; integrated dev base: be64f2902ed11067d31bb875bbdb77982760524e. no merge performed.

query_ca_status now reads the kernel peer UID with getpeereid on macOS. Linux retains its existing PeerCredentials query. both refuse a different UID before writing request bytes. rotation code is untouched: macOS still advertises no rotation support until #367, preserving D166/D352.

scripts/macos-build-check --check adds a native compile guard for default and desktop release configurations. its red run rejects the original source with E0425/exit 101; the restored final source passes. the existing full mode is unchanged. merge.sh is unchanged.

compute01 cannot check the full CLI for aarch64-apple-darwin: even with target std supplied through Nix, SQLite/OpenSSL invoke .cargo/apple-cc.sh, which requires /usr/bin/clang and the Apple SDK/toolchain. the final-head attempt exits 101 before reaching the CLI (cross-compute.log). cheapest merge-time alternative, for the orchestrator to invoke after the freeze is lifted:

lockf -k /tmp/mac-bench.lock nix develop -c scripts/macos-build-check --check

native Mac evidence at the pushed head: both cargo build --locked --release -p infraternal and the same command with --features desktop succeeded, producing arm64 Mach-O binaries that start successfully. default: 22,554,416 bytes, SHA-256 6d8b7524d307fec833233f0282368f4c80be3de215344947240d1acc3d331f7e; desktop: 23,282,672 bytes, SHA-256 1d8846cd2dd01b592b21b0bde972538407719d369c6b32b4bb9f8ac648cd1bcc. baseline logs reproduce E0425 in both configurations.

the desktop step was already running when the owner froze the std VMs and was allowed to finish. its saved stdout is attached as mac-final-desktop-receipt.log; the full log remains at /Users/lume/j286-evidence/final-desktop.log. further native Mac proof, full-log retrieval and Mac target cleanup are pending until the Mac is back and the freeze is lifted. no new step was started on either frozen std VM.

final-head Linux evidence on compute01: cargo check --workspace --locked passed (FINAL_WORKSPACE_EXIT=0); foreground scripts/verify quick passed (FINAL_QUICK_EXIT=0). final scripts/verify fast is FAIL, solely on the pre-existing exit-77 reporting test. the identical failure is reproduced with unmodified dev scripts under the actual inherited RUST_GATE_SKIPPABLE=yes context (base-privileged-context.log). the initial shim drain assertion did not recur: the full shim row passes on both dev and final head. no gate workaround was added.

final gate summary, verbatim:

+---------------------------+--------------+
| 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    | FAIL (1)     |
| probe release exclusion   | PASS         |
| nightly fuzz reporter     | PASS         |
| static builds             | PASS         |
+---------------------------+--------------+
FINAL_FAST_EXIT=1

final static artifacts: x86_64 27,709,552 bytes (recorded baseline 22,418,256; delta +5,291,296), aarch64 24,930,400 bytes (recorded baseline 20,453,280; delta +4,477,120). both are stripped static ELF with no PT_INTERP and pass the gate. these are the gate's recorded-baseline deltas, with no attribution of that accumulated delta to this patch.

raw receipts are attached in j286-evidence.zip, indexed by README.txt, and retained at /home/kayg/.cache/codex-scratch/j286/evidence/. compute01 logs remain in /home/claude/j286-evidence/; its target directory was removed after all commands exited (cleanup.txt). remaining follow-up: resolve the pre-existing gate-test failure, invoke the native merge guard once the freeze lifts, and retrieve the pending full desktop log. the issue remains open.

j286 implementation finished on `macos-build-379`, pushed head `2283885ac887bcae9ae0d09112bada91baf43c35`. original base: `3dc58dc67b771c7e38a298c3c5ac437055b8ff44`; integrated dev base: `be64f2902ed11067d31bb875bbdb77982760524e`. no merge performed. `query_ca_status` now reads the kernel peer UID with `getpeereid` on macOS. Linux retains its existing `PeerCredentials` query. both refuse a different UID before writing request bytes. rotation code is untouched: macOS still advertises no rotation support until #367, preserving D166/D352. `scripts/macos-build-check --check` adds a native compile guard for default and desktop release configurations. its red run rejects the original source with E0425/exit 101; the restored final source passes. the existing full mode is unchanged. `merge.sh` is unchanged. compute01 cannot check the full CLI for `aarch64-apple-darwin`: even with target std supplied through Nix, SQLite/OpenSSL invoke `.cargo/apple-cc.sh`, which requires `/usr/bin/clang` and the Apple SDK/toolchain. the final-head attempt exits 101 before reaching the CLI (`cross-compute.log`). cheapest merge-time alternative, for the orchestrator to invoke after the freeze is lifted: ```sh lockf -k /tmp/mac-bench.lock nix develop -c scripts/macos-build-check --check ``` native Mac evidence at the pushed head: both `cargo build --locked --release -p infraternal` and the same command with `--features desktop` succeeded, producing arm64 Mach-O binaries that start successfully. default: 22,554,416 bytes, SHA-256 `6d8b7524d307fec833233f0282368f4c80be3de215344947240d1acc3d331f7e`; desktop: 23,282,672 bytes, SHA-256 `1d8846cd2dd01b592b21b0bde972538407719d369c6b32b4bb9f8ac648cd1bcc`. baseline logs reproduce E0425 in both configurations. the desktop step was already running when the owner froze the std VMs and was allowed to finish. its saved stdout is attached as `mac-final-desktop-receipt.log`; the full log remains at `/Users/lume/j286-evidence/final-desktop.log`. further native Mac proof, full-log retrieval and Mac target cleanup are pending until the Mac is back and the freeze is lifted. no new step was started on either frozen std VM. final-head Linux evidence on compute01: `cargo check --workspace --locked` passed (`FINAL_WORKSPACE_EXIT=0`); foreground `scripts/verify quick` passed (`FINAL_QUICK_EXIT=0`). final `scripts/verify fast` is **FAIL**, solely on the pre-existing exit-77 reporting test. the identical failure is reproduced with unmodified dev scripts under the actual inherited `RUST_GATE_SKIPPABLE=yes` context (`base-privileged-context.log`). the initial shim drain assertion did not recur: the full shim row passes on both dev and final head. no gate workaround was added. final gate summary, verbatim: ```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 | FAIL (1) | | probe release exclusion | PASS | | nightly fuzz reporter | PASS | | static builds | PASS | +---------------------------+--------------+ FINAL_FAST_EXIT=1 ``` final static artifacts: x86_64 27,709,552 bytes (recorded baseline 22,418,256; delta +5,291,296), aarch64 24,930,400 bytes (recorded baseline 20,453,280; delta +4,477,120). both are stripped static ELF with no PT_INTERP and pass the gate. these are the gate's recorded-baseline deltas, with no attribution of that accumulated delta to this patch. raw receipts are attached in `j286-evidence.zip`, indexed by `README.txt`, and retained at `/home/kayg/.cache/codex-scratch/j286/evidence/`. compute01 logs remain in `/home/claude/j286-evidence/`; its target directory was removed after all commands exited (`cleanup.txt`). remaining follow-up: resolve the pre-existing gate-test failure, invoke the native merge guard once the freeze lifts, and retrieve the pending full desktop log. the issue remains open.
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#379
No description provided.