verify fast static-build path check fails with symlinked target on origin/dev #421

Open
opened 2026-11-07 09:43:50 +00:00 by kayg · 15 comments
Owner

The verify fast static-build row's scripts/test-rustc-paths.py check fails on a clean, unmodified origin/dev checkout when CARGO_TARGET_DIR points through the symlinked worktree target used by the gate. The same control passes when the target is a physical directory, so this is a gate path-resolution bug independent of mesh changes in #381.

Control results:

  • Clean baseline origin/dev at 3644950b8e4b5dddeefba350f97a3892189ca193, symlink target /home/claude/worktrees/j288/target: fails at scripts/test-rustc-paths.py:28, where the executable's embedded path is asserted to equal /infraternal/source.rs.
  • Same clean baseline and helper with a physical target directory: passes (origin_dev_rustc_paths_exit=0).
  • J288 head 36e7a6308f5561181b56cf44b67f479a33d6d0f6: verify fast reaches the static-build row and fails at the same assertion. All other rows passed.

The wrapper scripts, remap flags and toolchain are unchanged from origin/dev. The three attached logs are the gate run, the symlink-target baseline failure, and the physical-target baseline control. Related feature work: #381.

The `verify fast` static-build row's `scripts/test-rustc-paths.py` check fails on a clean, unmodified `origin/dev` checkout when `CARGO_TARGET_DIR` points through the symlinked worktree target used by the gate. The same control passes when the target is a physical directory, so this is a gate path-resolution bug independent of mesh changes in #381. Control results: - Clean baseline `origin/dev` at `3644950b8e4b5dddeefba350f97a3892189ca193`, symlink target `/home/claude/worktrees/j288/target`: fails at `scripts/test-rustc-paths.py:28`, where the executable's embedded path is asserted to equal `/infraternal/source.rs`. - Same clean baseline and helper with a physical target directory: passes (`origin_dev_rustc_paths_exit=0`). - J288 head `36e7a6308f5561181b56cf44b67f479a33d6d0f6`: `verify fast` reaches the static-build row and fails at the same assertion. All other rows passed. The wrapper scripts, remap flags and toolchain are unchanged from `origin/dev`. The three attached logs are the gate run, the symlink-target baseline failure, and the physical-target baseline control. Related feature work: #381.
Author
Owner

J288 control logs attached: the final fast gate at 36e7a630, the unmodified origin/dev symlink-target reproduction, and the physical-target passing control. SHA-256 values are in the local evidence manifest; the raw outputs are attached here.

J288 control logs attached: the final fast gate at 36e7a630, the unmodified origin/dev symlink-target reproduction, and the physical-target passing control. SHA-256 values are in the local evidence manifest; the raw outputs are attached here.
Author
Owner

J385 started on fix-rustc-paths-421, base a894dd877 (origin/dev). Plan: reproduce physical and symlinked targets, add a red regression, fix the path boundary without weakening the embedded-path assertion, run quick then compute01 fast and prove any unrelated reds on unmodified dev. Estimated 90 minutes plus build-slot queue time. Production remains read-only.

J385 started on fix-rustc-paths-421, base a894dd877 (origin/dev). Plan: reproduce physical and symlinked targets, add a red regression, fix the path boundary without weakening the embedded-path assertion, run quick then compute01 fast and prove any unrelated reds on unmodified dev. Estimated 90 minutes plus build-slot queue time. Production remains read-only.
Author
Owner

Finding from code inspection: .cargo/rustc.sh derives its remap source root with pwd -P, but test-rustc-paths.py creates an absolute source argument under the uncanonicalized CARGO_TARGET_DIR. A target symlink therefore gives rustc a different prefix spelling than the remap. The static reproducibility harness already resolves its environment paths. New regression driver exercises the unchanged control with physical and symlinked targets; baseline is queued through compute01 build-slot (PID 3616143), evidence /home/claude/j385-evidence/baseline.log. Note: this checkout records path normalization under D243; D317 is the user-docs decision, so no decision text will change.

Finding from code inspection: .cargo/rustc.sh derives its remap source root with pwd -P, but test-rustc-paths.py creates an absolute source argument under the uncanonicalized CARGO_TARGET_DIR. A target symlink therefore gives rustc a different prefix spelling than the remap. The static reproducibility harness already resolves its environment paths. New regression driver exercises the unchanged control with physical and symlinked targets; baseline is queued through compute01 build-slot (PID 3616143), evidence /home/claude/j385-evidence/baseline.log. Note: this checkout records path normalization under D243; D317 is the user-docs decision, so no decision text will change.
Author
Owner

Red reproduced on unmodified a894dd877 scripts with the new regression driver: physical target PASS (identical stripped artifacts); symlink target fails the original /infraternal/source.rs assertion at line 28, RED_EXIT=1. Evidence: compute01:/home/claude/j385-evidence/red.log. Root cause is the gate harness passing a lexical symlink prefix while rustc.sh maps pwd -P. Minimal fix resolves the harness scratch root before constructing checkout/source arguments, as the existing static reproducibility harness does. The static row now always runs both target layouts through that original assertion; no compiler flags or assertions are relaxed.

Red reproduced on unmodified a894dd877 scripts with the new regression driver: physical target PASS (identical stripped artifacts); symlink target fails the original /infraternal/source.rs assertion at line 28, RED_EXIT=1. Evidence: compute01:/home/claude/j385-evidence/red.log. Root cause is the gate harness passing a lexical symlink prefix while rustc.sh maps pwd -P. Minimal fix resolves the harness scratch root before constructing checkout/source arguments, as the existing static reproducibility harness does. The static row now always runs both target layouts through that original assertion; no compiler flags or assertions are relaxed.
Author
Owner

Green proof: the exact same regression driver now passes physical and symlink targets, each comparing two differently named checkout roots byte-for-byte and requiring file!() == /infraternal/source.rs. Gate architecture tests also pass for x86_64/aarch64 dispatch. Evidence: compute01:/home/claude/j385-evidence/green-quick.log (quick pre-check continuing). This is a gate fixture path-construction fix only: release compiler flags and shipped binary code are unchanged, so there is no release size/runtime delta from this diff.

Green proof: the exact same regression driver now passes physical and symlink targets, each comparing two differently named checkout roots byte-for-byte and requiring file!() == /infraternal/source.rs. Gate architecture tests also pass for x86_64/aarch64 dispatch. Evidence: compute01:/home/claude/j385-evidence/green-quick.log (quick pre-check continuing). This is a gate fixture path-construction fix only: release compiler flags and shipped binary code are unchanged, so there is no release size/runtime delta from this diff.
Author
Owner

The initial quick pre-check passed (QUICK_EXIT=0), evidence compute01:/home/claude/j385-evidence/green-quick.log. Fetched dev and updated the branch base to 9965911c8a, which includes J376’s #432 fixture fix. Re-running quick on that base, then full fast. Target remains /home/claude/worktrees/j385/target -> /home/claude/.cache/codex-scratch/j385/target.

The initial quick pre-check passed (QUICK_EXIT=0), evidence compute01:/home/claude/j385-evidence/green-quick.log. Fetched dev and updated the branch base to 9965911c8ac2848168f5947f623488c75631c320, which includes J376’s #432 fixture fix. Re-running quick on that base, then full fast. Target remains /home/claude/worktrees/j385/target -> /home/claude/.cache/codex-scratch/j385/target.
Author
Owner

Checkpoint: pushed atomic commit 5f49cb562 on fix-rustc-paths-421 (base 9965911c8). Red/green and quick receipts are retained in /home/claude/j385-evidence/{red,green-quick,quick}.log on compute01; local copies are /home/kayg/Developer/Worktrees/infraternal-J385-evidence/. Full fast is still running (PID 3848555), output /home/claude/j385-evidence/fast.log, CARGO_TARGET_DIR points through the worktree target symlink. No gate success is claimed yet.

Checkpoint: pushed atomic commit 5f49cb562 on fix-rustc-paths-421 (base 9965911c8). Red/green and quick receipts are retained in /home/claude/j385-evidence/{red,green-quick,quick}.log on compute01; local copies are /home/kayg/Developer/Worktrees/infraternal-J385-evidence/. Full fast is still running (PID 3848555), output /home/claude/j385-evidence/fast.log, CARGO_TARGET_DIR points through the worktree target symlink. No gate success is claimed yet.
Author
Owner

Full gate finding (not yet baseline-qualified): workspace install suite has four failures with SetupRunning / exit_status 73 at install.rs:563,1269,1327,1718: negotiated_retry_reuses_only_a_verified_cache_after_activation_refusal; interrupted_rollback_never_deletes_already_restored_state_on_retry; interrupted_restore_recreates_links_without_deleting_the_original; interrupted_upgrade_after_acknowledged_stop_restarts_the_previous_service. 104 passed, 4 failed, 2 ignored. Evidence compute01:/home/claude/j385-evidence/fast.log. The full run continues toward static builds; afterward I will reproduce these cases on unmodified dev 9965911c8 using the same target before calling them unrelated. No SSH code is changed in this branch.

Full gate finding (not yet baseline-qualified): workspace install suite has four failures with SetupRunning / exit_status 73 at install.rs:563,1269,1327,1718: negotiated_retry_reuses_only_a_verified_cache_after_activation_refusal; interrupted_rollback_never_deletes_already_restored_state_on_retry; interrupted_restore_recreates_links_without_deleting_the_original; interrupted_upgrade_after_acknowledged_stop_restarts_the_previous_service. 104 passed, 4 failed, 2 ignored. Evidence compute01:/home/claude/j385-evidence/fast.log. The full run continues toward static builds; afterward I will reproduce these cases on unmodified dev 9965911c8 using the same target before calling them unrelated. No SSH code is changed in this branch.
Author
Owner

Progress: full gate reached static builds, and its own output now shows both physical and symlink target controls PASS with the original exact path/byte-identity checks. First release compile has completed; remaining release work is still running. Current head stays 5f49cb562a. Evidence remains compute01:/home/claude/j385-evidence/fast.log. After the slot is released, I will run the prepared clean-dev install-suite reproduction and scan both shipping images for logical and physical build-root prefixes.

Progress: full gate reached static builds, and its own output now shows both physical and symlink target controls PASS with the original exact path/byte-identity checks. First release compile has completed; remaining release work is still running. Current head stays 5f49cb562a24c3b0905dd8cdb6b349837c9d9de8. Evidence remains compute01:/home/claude/j385-evidence/fast.log. After the slot is released, I will run the prepared clean-dev install-suite reproduction and scan both shipping images for logical and physical build-root prefixes.
Author
Owner

Static-build row PASS in the completed full compute01 gate with the live symlinked target (layout.log records CARGO_TARGET_DIR and its symlink destination). Full FAST_EXIT=1, with only test FAIL (101), the four install failures already listed. Both shipping images passed an extra byte scan for the logical checkout/target and physical target prefixes: x86_64 28171984 bytes, aarch64 25305312 bytes; no prefix present. Gate-reported historical-baseline deltas are +5753728 / +4852032 bytes. Evidence: compute01:/home/claude/j385-evidence/{fast,release-paths,layout}.log. Clean-dev install-suite reproduction is starting now before final qualification.

Static-build row PASS in the completed full compute01 gate with the live symlinked target (layout.log records CARGO_TARGET_DIR and its symlink destination). Full FAST_EXIT=1, with only test FAIL (101), the four install failures already listed. Both shipping images passed an extra byte scan for the logical checkout/target and physical target prefixes: x86_64 28171984 bytes, aarch64 25305312 bytes; no prefix present. Gate-reported historical-baseline deltas are +5753728 / +4852032 bytes. Evidence: compute01:/home/claude/j385-evidence/{fast,release-paths,layout}.log. Clean-dev install-suite reproduction is starting now before final qualification.
Author
Owner

Baseline qualification update: clean dev 9965911c8 is confirmed (BASELINE_TREE_CLEAN=1). The four already-built cases pass individually, and the same install test binary passes directly at normal parallelism (108 passed, 0 failed, 2 ignored). Therefore these direct executions do not qualify the Cargo-launched gate red; I am retaining the queued Cargo reproduction to preserve launch context. Evidence compute01:/home/claude/j385-evidence/{baseline-focused,baseline-parallel,baseline-install}.log. The static-build row and both release-prefix scans are PASS; no gate failure is being hidden or waived.

Baseline qualification update: clean dev 9965911c8 is confirmed (BASELINE_TREE_CLEAN=1). The four already-built cases pass individually, and the same install test binary passes directly at normal parallelism (108 passed, 0 failed, 2 ignored). Therefore these direct executions do not qualify the Cargo-launched gate red; I am retaining the queued Cargo reproduction to preserve launch context. Evidence compute01:/home/claude/j385-evidence/{baseline-focused,baseline-parallel,baseline-install}.log. The static-build row and both release-prefix scans are PASS; no gate failure is being hidden or waived.
Author
Owner

J385 gate receipt for 5f49cb562a. compute01 used the worktree target symlink; layout.log records the live process environment. Static builds PASS. The four install failures are not yet baseline-qualified: direct execution on clean dev passed, so the exact Cargo workspace test row is queued on clean 9965911c8.

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

Both shipping images also exclude the physical target prefix:

x86_64: bytes=28171984 sha256=172a681e161fbdcd5dc2ee443f6f90860c4cd29e4d888d51731573197ee4af46
  /home/claude/.cache/codex-scratch/j385/target: present=False
  /home/claude/worktrees/j385: present=False
  /home/claude/worktrees/j385/target: present=False
aarch64: bytes=25305312 sha256=cfb6e0126090920174c624c1be66172f75011f03c3d41655a6fd29f0c9db2c47
  /home/claude/.cache/codex-scratch/j385/target: present=False
  /home/claude/worktrees/j385: present=False
  /home/claude/worktrees/j385/target: present=False
PASS: neither logical nor physical job build paths occur in either release binary

Raw receipts are attached. The final baseline qualification will follow.

J385 gate receipt for 5f49cb562a24c3b0905dd8cdb6b349837c9d9de8. compute01 used the worktree target symlink; layout.log records the live process environment. Static builds PASS. The four install failures are not yet baseline-qualified: direct execution on clean dev passed, so the exact Cargo workspace test row is queued on clean 9965911c8. Full 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 | FAIL (101) | | 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 | SKIP | | probe release exclusion | PASS | | nightly fuzz reporter | PASS | | static builds | PASS | +---------------------------+--------------+ FAST_EXIT=1 ``` Both shipping images also exclude the physical target prefix: ```text x86_64: bytes=28171984 sha256=172a681e161fbdcd5dc2ee443f6f90860c4cd29e4d888d51731573197ee4af46 /home/claude/.cache/codex-scratch/j385/target: present=False /home/claude/worktrees/j385: present=False /home/claude/worktrees/j385/target: present=False aarch64: bytes=25305312 sha256=cfb6e0126090920174c624c1be66172f75011f03c3d41655a6fd29f0c9db2c47 /home/claude/.cache/codex-scratch/j385/target: present=False /home/claude/worktrees/j385: present=False /home/claude/worktrees/j385/target: present=False PASS: neither logical nor physical job build paths occur in either release binary ``` Raw receipts are attached. The final baseline qualification will follow.
Author
Owner

J385 qualification update: the complete clean-dev install suite through Cargo passed (108 passed, 2 ignored), as did the focused tests. The clean-dev full workspace test row failed earlier at rootless_sessions::tests::stale_probe_discovery_removes_its_readiness_marker (ConnectionReset), so it did not reach the install suite. This does not prove the four SSH failures in the first fast gate were baseline failures; I am not classifying them as such.

A final full fast rerun is queued on compute01 at exact head 5f49cb562a, with the worktree target symlink retained. Queue position 8. Log: /home/claude/.cache/codex-scratch/j385/evidence/fast-final.log. The previous full gate's static-build row passed and its raw receipt remains attached above. No repository code changed since that gate.

J385 qualification update: the complete clean-dev install suite through Cargo passed (108 passed, 2 ignored), as did the focused tests. The clean-dev full workspace test row failed earlier at rootless_sessions::tests::stale_probe_discovery_removes_its_readiness_marker (ConnectionReset), so it did not reach the install suite. This does not prove the four SSH failures in the first fast gate were baseline failures; I am not classifying them as such. A final full fast rerun is queued on compute01 at exact head 5f49cb562a24c3b0905dd8cdb6b349837c9d9de8, with the worktree target symlink retained. Queue position 8. Log: /home/claude/.cache/codex-scratch/j385/evidence/fast-final.log. The previous full gate's static-build row passed and its raw receipt remains attached above. No repository code changed since that gate.
Author
Owner

J385 implementation handoff: branch fix-rustc-paths-421, head 5f49cb562a24c3b0905dd8cdb6b349837c9d9de8, base 9965911c8ac2848168f5947f623488c75631c320. One atomic commit, pushed. No merge or deployment.

Root cause: the wrapper remaps its physical pwd -P checkout root, while the control passed absolute source arguments containing the target symlink spelling; rustc compares prefixes literally. The control now resolves its scratch root before constructing source arguments. The gate exercises both physical and symlinked targets. The exact /infraternal/source.rs and stripped-artifact byte-equality assertions are unchanged. Red-first receipt and green physical/symlink controls are in the attached earlier receipts. No compiler flags or dependencies changed (duplicate dependency delta 0).

Validation gap: the full fast gate passed static builds but failed four SSH install tests with SetupRunning / exit 73. Those exact failures were NOT reproduced on clean dev. Clean-dev focused cases and the complete Cargo install suite passed (108 passed, 2 ignored). The clean-dev workspace test row instead failed earlier in rootless_sessions::tests::stale_probe_discovery_removes_its_readiness_marker with ConnectionReset. This demonstrates a separate clean-dev test failure, not a baseline reproduction of the four SSH failures. The requirement to baseline-qualify those exact failures remains unmet; do not treat the full gate as green. A redundant full rerun was cancelled while queued, by its recorded PID 1394404, before it acquired a slot.

Quick pre-check receipt, verbatim:

build-slot: [19:55:48] all 4 slots busy; queue position 1, waiting...
build-slot: [19:56:28] got slot 4/4
quick scope vs merge base with origin/dev: workspace=0 packages=[] tracer=0

==> scope guard
verify quick scope: fuzz packages are excluded from the test run; PASS
(scope guard: 0s)

==> migration names
migration names: PASS
(migration names: 0s)

==> Nix Cargo vendoring
Cargo vendor directory names: unique
warning: Git tree '/home/claude/worktrees/j385' has uncommitted changes
/nix/store/wl26dkzxzffs8wmrnx3x5dccf9iadxvv-cargo-vendor-dir.drv
Nix Cargo vendoring: evaluated
(Nix Cargo vendoring: 2s)

==> fmt
(fmt: 6s)

==> doc coverage ratchet
.....
----------------------------------------------------------------------
Ran 5 tests in 0.003s

OK
unit                                         files    code        mod          fn       type      const        pub    doc/total      %  vs base
-------------------------------------------  -----  ------  ---------  ----------  ---------  ---------  ---------  -----------  -----  -------
rust:(no crate)                                  3      70        3/3         0/2        0/1        0/1        3/3          3/7   42.9    +0.00
rust:crates/infraternal                         77   24277     99/104     418/938      51/92      17/54    211/233     585/1188   49.2   +15.80
rust:crates/infraternal-agent                   77   28738    104/107     504/940    109/191      52/92    319/397     769/1330   57.8   +16.38
rust:crates/infraternal-linux-tun                1     132        1/2         7/9        1/2       0/12        8/8         9/25   36.0      new
rust:crates/infraternal-mesh                    17    3010      18/18      84/135      40/44        7/7    124/132      149/204   73.0    +0.82
rust:crates/infraternal-mesh/fuzz                1      86        1/1         1/1        0/0        0/0        1/1          2/2  100.0    +0.00
rust:crates/infraternal-plugin-api              30    4504      35/38     183/267      81/97      34/46    273/296      333/448   74.3    +5.63
rust:crates/infraternal-protocol                 8    2565        8/8       23/81      10/13        7/8      42/42       48/110   43.6    +0.00
rust:crates/infraternal-server                 291  105015    334/358   1317/3015    256/501    111/239   968/1231    2018/4113   49.1    +9.94
rust:crates/infraternal-session                  2      93        3/3         5/7        1/1        0/0        2/2         9/11   81.8    +0.00
rust:crates/infraternal-shim                    66   21082    108/113     451/876      59/83      62/94    334/383     680/1166   58.3    +5.21
rust:crates/infraternal-status                  10    2524      10/10       31/86       9/10       2/11      31/31       52/117   44.4    +0.97
rust:crates/plugins/backup                       2     101        3/3         1/2        0/0        1/1        4/4          5/6   83.3    +0.00
rust:crates/plugins/canvas                       7    1486       9/10       14/62        4/8        0/7      14/39        27/87   31.0    +0.00
rust:crates/plugins/desktop                     54   13640      62/71     233/384     88/128      10/34    209/222      393/617   63.7    +0.30
rust:crates/plugins/host-facts                   6    1129        7/7       18/49       8/10       4/12      28/28        37/78   47.4    +0.00
rust:crates/plugins/mesh                        86   39335    108/117    840/1410    145/193     75/183    477/503    1168/1903   61.4   +18.16
rust:crates/plugins/mesh/fuzz                    2      59        2/2         1/1        0/0        1/1        2/2          4/4  100.0    +0.00
rust:crates/plugins/proxy                       30   11983      30/33     112/469      46/92      13/70    167/183      201/664   30.3    +2.82
rust:crates/plugins/relay                       10    2579      14/15      53/121      23/30      24/45      69/70      114/211   54.0    +0.00
rust:crates/plugins/release                     10    1404      10/10        7/36       7/18        2/7      23/31        26/71   36.6    +1.41
rust:crates/plugins/remote                      28   12819      37/42     265/440      68/95      44/51    240/271      414/628   65.9    +9.74
rust:crates/plugins/ssh                        104   29894    115/124     595/986    175/255      73/98    522/584     958/1463   65.5   +14.43
rust:fuzz                                       36    1001      36/36         1/2        0/0        0/0      36/36        37/38   97.4    +0.00
rust:research/mesh-engines/netlink-bench         3     479        3/3        0/22        0/1       0/10        3/3         3/36    8.3    +0.00
rust:research/process-per-user/vt-carry          5    1861        6/7      32/104       3/14        1/7      32/40       42/132   31.8    +0.00
rust:research/quic-stacks/harness                8    1829        8/8       13/59        2/9       0/10      21/45        23/86   26.7    +0.00
rust:research/ssh-client/probe                   2     136        2/2         0/5        0/1        0/0        2/2          2/8   25.0    +0.00
swift:crates/plugins/desktop/native             12    1847      12/12     106/107      26/26    163/163      12/12      307/308   99.7    +0.00
swift:crates/plugins/desktop/tests/fixtures     13    1129      13/13        1/34       0/16       0/23      13/13        14/86   16.3    +0.00
ts:apps/release-signer/src                       1     150        1/1       17/17        2/2        2/3        1/1        22/23   95.7    +0.00
ts:apps/tracer                                 710   84017    675/710   1263/2502    340/639   468/1369  1895/2597    2746/5220   52.6    +2.39
ts:docs/verification/addhost-breakit2            5     145        5/5         0/0        0/0       0/17        5/5         5/22   22.7    +0.00
ts:docs/verification/ca-update-audit             2     143        2/2         0/3        0/0       0/16        2/2         2/21    9.5    +0.00
ts:packages/protocol                            19    2508      19/19      46/113      29/44       5/16     93/127       99/192   51.6    +0.51
ts:packages/ui                                  90    8509      81/90     270/329    115/185    126/209    412/524      592/813   72.8    +5.03
ts:research/vnc/benchmark                        1     268        1/1         0/3        0/0       0/18        1/1         1/22    4.5    +0.00
ts:scripts                                       5     128        5/5         0/2        0/0       0/10        5/6         5/17   29.4    +0.00
ts:scripts/browser-auth                         13    2642      13/13        5/46        0/0      1/135      14/14       19/194    9.8    +0.00
ts:scripts/hosts-from-server                     1      91        1/1         0/0        0/0        0/8        1/1          1/9   11.1    +0.00
ts:scripts/release                               5     512        5/5         1/3        0/0       0/12        5/5         6/20   30.0    +0.00
TOTAL                                         1853  413920  2009/2132  6918/13668  1698/2801  1305/3099  6624/8130  11930/21700   55.0         

doc coverage ratchet: ok
(doc coverage ratchet: 10s)

==> shape lints off (D351)
....
----------------------------------------------------------------------
Ran 4 tests in 0.228s

OK
(shape lints off (D351): 0s)

==> doc comments on diff
............
----------------------------------------------------------------------
Ran 12 tests in 0.573s

OK
diff docs: ok (merge base 9965911c8ac2)
(doc comments on diff: 1s)

==> fixed test waits
diff sleeps: ok (merge base 9965911c8ac2)
(fixed test waits: 1s)

+---------------------------+--------------+
| Rust gate                 | Result       |
+---------------------------+--------------+
| scope guard               | PASS         |
| migration names           | PASS         |
| Nix Cargo vendoring       | PASS         |
| fmt                       | PASS         |
| doc coverage ratchet      | PASS         |
| shape lints off (D351)    | PASS         |
| doc comments on diff      | PASS         |
| fixed test waits          | PASS         |
+---------------------------+--------------+

QUICK pre-check passed. This is not the gate: run scripts/verify fast before reporting done.
QUICK_EXIT=0

compute01 used the worktree target symlink; layout.log records the live process environment. The remote source tree is now clean at the head SHA; source-head.log and gated-content.hashes record the source identity.

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

Both shipping images also exclude the physical target prefix:

x86_64: bytes=28171984 sha256=172a681e161fbdcd5dc2ee443f6f90860c4cd29e4d888d51731573197ee4af46
  /home/claude/.cache/codex-scratch/j385/target: present=False
  /home/claude/worktrees/j385: present=False
  /home/claude/worktrees/j385/target: present=False
aarch64: bytes=25305312 sha256=cfb6e0126090920174c624c1be66172f75011f03c3d41655a6fd29f0c9db2c47
  /home/claude/.cache/codex-scratch/j385/target: present=False
  /home/claude/worktrees/j385: present=False
  /home/claude/worktrees/j385/target: present=False
PASS: neither logical nor physical job build paths occur in either release binary

Shipping sizes: x86 28,171,984 bytes (+5,753,728 against the gate historical baseline); arm 25,305,312 bytes (+4,852,032). These historical deltas are not attributed to this scripts-only change. Raw baseline receipts are attached; red, quick, full fast, layout, and release-path receipts are already attached at issuecomment-87571. Job target cleanup follows; evidence is retained.

J385 implementation handoff: branch `fix-rustc-paths-421`, head `5f49cb562a24c3b0905dd8cdb6b349837c9d9de8`, base `9965911c8ac2848168f5947f623488c75631c320`. One atomic commit, pushed. No merge or deployment. Root cause: the wrapper remaps its physical `pwd -P` checkout root, while the control passed absolute source arguments containing the target symlink spelling; rustc compares prefixes literally. The control now resolves its scratch root before constructing source arguments. The gate exercises both physical and symlinked targets. The exact `/infraternal/source.rs` and stripped-artifact byte-equality assertions are unchanged. Red-first receipt and green physical/symlink controls are in the attached earlier receipts. No compiler flags or dependencies changed (duplicate dependency delta 0). Validation gap: the full fast gate passed static builds but failed four SSH install tests with `SetupRunning` / exit 73. Those exact failures were NOT reproduced on clean dev. Clean-dev focused cases and the complete Cargo install suite passed (108 passed, 2 ignored). The clean-dev workspace test row instead failed earlier in `rootless_sessions::tests::stale_probe_discovery_removes_its_readiness_marker` with ConnectionReset. This demonstrates a separate clean-dev test failure, not a baseline reproduction of the four SSH failures. The requirement to baseline-qualify those exact failures remains unmet; do not treat the full gate as green. A redundant full rerun was cancelled while queued, by its recorded PID 1394404, before it acquired a slot. Quick pre-check receipt, verbatim: ```text build-slot: [19:55:48] all 4 slots busy; queue position 1, waiting... build-slot: [19:56:28] got slot 4/4 quick scope vs merge base with origin/dev: workspace=0 packages=[] tracer=0 ==> scope guard verify quick scope: fuzz packages are excluded from the test run; PASS (scope guard: 0s) ==> migration names migration names: PASS (migration names: 0s) ==> Nix Cargo vendoring Cargo vendor directory names: unique warning: Git tree '/home/claude/worktrees/j385' has uncommitted changes /nix/store/wl26dkzxzffs8wmrnx3x5dccf9iadxvv-cargo-vendor-dir.drv Nix Cargo vendoring: evaluated (Nix Cargo vendoring: 2s) ==> fmt (fmt: 6s) ==> doc coverage ratchet ..... ---------------------------------------------------------------------- Ran 5 tests in 0.003s OK unit files code mod fn type const pub doc/total % vs base ------------------------------------------- ----- ------ --------- ---------- --------- --------- --------- ----------- ----- ------- rust:(no crate) 3 70 3/3 0/2 0/1 0/1 3/3 3/7 42.9 +0.00 rust:crates/infraternal 77 24277 99/104 418/938 51/92 17/54 211/233 585/1188 49.2 +15.80 rust:crates/infraternal-agent 77 28738 104/107 504/940 109/191 52/92 319/397 769/1330 57.8 +16.38 rust:crates/infraternal-linux-tun 1 132 1/2 7/9 1/2 0/12 8/8 9/25 36.0 new rust:crates/infraternal-mesh 17 3010 18/18 84/135 40/44 7/7 124/132 149/204 73.0 +0.82 rust:crates/infraternal-mesh/fuzz 1 86 1/1 1/1 0/0 0/0 1/1 2/2 100.0 +0.00 rust:crates/infraternal-plugin-api 30 4504 35/38 183/267 81/97 34/46 273/296 333/448 74.3 +5.63 rust:crates/infraternal-protocol 8 2565 8/8 23/81 10/13 7/8 42/42 48/110 43.6 +0.00 rust:crates/infraternal-server 291 105015 334/358 1317/3015 256/501 111/239 968/1231 2018/4113 49.1 +9.94 rust:crates/infraternal-session 2 93 3/3 5/7 1/1 0/0 2/2 9/11 81.8 +0.00 rust:crates/infraternal-shim 66 21082 108/113 451/876 59/83 62/94 334/383 680/1166 58.3 +5.21 rust:crates/infraternal-status 10 2524 10/10 31/86 9/10 2/11 31/31 52/117 44.4 +0.97 rust:crates/plugins/backup 2 101 3/3 1/2 0/0 1/1 4/4 5/6 83.3 +0.00 rust:crates/plugins/canvas 7 1486 9/10 14/62 4/8 0/7 14/39 27/87 31.0 +0.00 rust:crates/plugins/desktop 54 13640 62/71 233/384 88/128 10/34 209/222 393/617 63.7 +0.30 rust:crates/plugins/host-facts 6 1129 7/7 18/49 8/10 4/12 28/28 37/78 47.4 +0.00 rust:crates/plugins/mesh 86 39335 108/117 840/1410 145/193 75/183 477/503 1168/1903 61.4 +18.16 rust:crates/plugins/mesh/fuzz 2 59 2/2 1/1 0/0 1/1 2/2 4/4 100.0 +0.00 rust:crates/plugins/proxy 30 11983 30/33 112/469 46/92 13/70 167/183 201/664 30.3 +2.82 rust:crates/plugins/relay 10 2579 14/15 53/121 23/30 24/45 69/70 114/211 54.0 +0.00 rust:crates/plugins/release 10 1404 10/10 7/36 7/18 2/7 23/31 26/71 36.6 +1.41 rust:crates/plugins/remote 28 12819 37/42 265/440 68/95 44/51 240/271 414/628 65.9 +9.74 rust:crates/plugins/ssh 104 29894 115/124 595/986 175/255 73/98 522/584 958/1463 65.5 +14.43 rust:fuzz 36 1001 36/36 1/2 0/0 0/0 36/36 37/38 97.4 +0.00 rust:research/mesh-engines/netlink-bench 3 479 3/3 0/22 0/1 0/10 3/3 3/36 8.3 +0.00 rust:research/process-per-user/vt-carry 5 1861 6/7 32/104 3/14 1/7 32/40 42/132 31.8 +0.00 rust:research/quic-stacks/harness 8 1829 8/8 13/59 2/9 0/10 21/45 23/86 26.7 +0.00 rust:research/ssh-client/probe 2 136 2/2 0/5 0/1 0/0 2/2 2/8 25.0 +0.00 swift:crates/plugins/desktop/native 12 1847 12/12 106/107 26/26 163/163 12/12 307/308 99.7 +0.00 swift:crates/plugins/desktop/tests/fixtures 13 1129 13/13 1/34 0/16 0/23 13/13 14/86 16.3 +0.00 ts:apps/release-signer/src 1 150 1/1 17/17 2/2 2/3 1/1 22/23 95.7 +0.00 ts:apps/tracer 710 84017 675/710 1263/2502 340/639 468/1369 1895/2597 2746/5220 52.6 +2.39 ts:docs/verification/addhost-breakit2 5 145 5/5 0/0 0/0 0/17 5/5 5/22 22.7 +0.00 ts:docs/verification/ca-update-audit 2 143 2/2 0/3 0/0 0/16 2/2 2/21 9.5 +0.00 ts:packages/protocol 19 2508 19/19 46/113 29/44 5/16 93/127 99/192 51.6 +0.51 ts:packages/ui 90 8509 81/90 270/329 115/185 126/209 412/524 592/813 72.8 +5.03 ts:research/vnc/benchmark 1 268 1/1 0/3 0/0 0/18 1/1 1/22 4.5 +0.00 ts:scripts 5 128 5/5 0/2 0/0 0/10 5/6 5/17 29.4 +0.00 ts:scripts/browser-auth 13 2642 13/13 5/46 0/0 1/135 14/14 19/194 9.8 +0.00 ts:scripts/hosts-from-server 1 91 1/1 0/0 0/0 0/8 1/1 1/9 11.1 +0.00 ts:scripts/release 5 512 5/5 1/3 0/0 0/12 5/5 6/20 30.0 +0.00 TOTAL 1853 413920 2009/2132 6918/13668 1698/2801 1305/3099 6624/8130 11930/21700 55.0 doc coverage ratchet: ok (doc coverage ratchet: 10s) ==> shape lints off (D351) .... ---------------------------------------------------------------------- Ran 4 tests in 0.228s OK (shape lints off (D351): 0s) ==> doc comments on diff ............ ---------------------------------------------------------------------- Ran 12 tests in 0.573s OK diff docs: ok (merge base 9965911c8ac2) (doc comments on diff: 1s) ==> fixed test waits diff sleeps: ok (merge base 9965911c8ac2) (fixed test waits: 1s) +---------------------------+--------------+ | Rust gate | Result | +---------------------------+--------------+ | scope guard | PASS | | migration names | PASS | | Nix Cargo vendoring | PASS | | fmt | PASS | | doc coverage ratchet | PASS | | shape lints off (D351) | PASS | | doc comments on diff | PASS | | fixed test waits | PASS | +---------------------------+--------------+ QUICK pre-check passed. This is not the gate: run scripts/verify fast before reporting done. QUICK_EXIT=0 ``` compute01 used the worktree target symlink; layout.log records the live process environment. The remote source tree is now clean at the head SHA; source-head.log and gated-content.hashes record the source identity. Full 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 | FAIL (101) | | 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 | SKIP | | probe release exclusion | PASS | | nightly fuzz reporter | PASS | | static builds | PASS | +---------------------------+--------------+ FAST_EXIT=1 ``` Both shipping images also exclude the physical target prefix: ```text x86_64: bytes=28171984 sha256=172a681e161fbdcd5dc2ee443f6f90860c4cd29e4d888d51731573197ee4af46 /home/claude/.cache/codex-scratch/j385/target: present=False /home/claude/worktrees/j385: present=False /home/claude/worktrees/j385/target: present=False aarch64: bytes=25305312 sha256=cfb6e0126090920174c624c1be66172f75011f03c3d41655a6fd29f0c9db2c47 /home/claude/.cache/codex-scratch/j385/target: present=False /home/claude/worktrees/j385: present=False /home/claude/worktrees/j385/target: present=False PASS: neither logical nor physical job build paths occur in either release binary ``` Shipping sizes: x86 28,171,984 bytes (+5,753,728 against the gate historical baseline); arm 25,305,312 bytes (+4,852,032). These historical deltas are not attributed to this scripts-only change. Raw baseline receipts are attached; red, quick, full fast, layout, and release-path receipts are already attached at issuecomment-87571. Job target cleanup follows; evidence is retained.
Author
Owner

J385 cleanup complete: removed only this job’s target symlink, physical target directory, and initial j385-copy source copy. Evidence retained under /home/claude/.cache/codex-scratch/j385/evidence. Recorded queued launcher PIDs 1394117 and 1394404 are no longer running. Remote and local worktrees are clean at 5f49cb562a. The remaining limitation is the exact SSH-failure baseline qualification described in the finish receipt; no claim of a green full gate.

J385 cleanup complete: removed only this job’s target symlink, physical target directory, and initial j385-copy source copy. Evidence retained under /home/claude/.cache/codex-scratch/j385/evidence. Recorded queued launcher PIDs 1394117 and 1394404 are no longer running. Remote and local worktrees are clean at 5f49cb562a24c3b0905dd8cdb6b349837c9d9de8. The remaining limitation is the exact SSH-failure baseline qualification described in the finish receipt; no claim of a green full gate.
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#421
No description provided.