Skip to content

ci: guard-cargo#m5 mounts pinned toolchain, FAIL(ENV) when not pinned (PMAT-6041) - #6063

Merged
noahgift merged 1 commit into
mainfrom
ci/m5-container-rustc-6041-v2
Oct 23, 2026
Merged

noahgift merged 1 commit into
mainfrom
ci/m5-container-rustc-6041-v2

Conversation

@noahgift

@noahgift noahgift commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Replaces #6045 (red on x86-main guard-tree: check_ci_draft_skip, base behind main). v2 is one commit linear on current main (0 behind); check_ci_draft_skip.sh and the roadmap check pass locally per w5382. Earlier text follows.

ci: guard-cargo#m5 mounts the pinned toolchain, fails loud on ENV (PMAT-6041)

ci/m5-container-rustc-6041 @31a19f45d1 (w5382), one commit, linear on main 45aa5d1. Gate-class (CI file): DRAFT and unarmed until seat 2 + quorum + arbiter sign.

#6031 x86-main (run 39875925063) went red on m5: empty "container rustc:" and "could not write settings file /home/runner/.rustup/settings.toml: Read-only file system", so rustc in the container resolved to the rustup proxy.

  • ci/sections.yml (~line 1969): m5 resolves the toolchain with readlink -f, mounts it read-only when it lives outside RUSTUP_HOME, and the container step exits FAIL(ENV) naming the resolved rustc when it is not the pinned $TC/bin/rustc.
  • docs/roadmaps/entries/PMAT-6041.yaml: ticket entry (epic 5510).
  • docs/roadmaps/roadmap.yaml: regenerated roadmap.

Checks run by the author: pre-push four green, fat_driver self-test 60/60, roadmap check ok. Caveat: the runner-side cause (pinned toolchain not visible in the container) is a hypothesis the author could not verify; in the local container probe the assertion passes. If wrong, the new FAIL(ENV) line names the real path on the next run.

Refs #6041

keep-open: #6041 stays open until the m5 fix is seen green on a runner.

ont-delta: none no new type, shape or reason

🤖 Generated with Claude Code

EMG-8 falsifier: the next 5 guard-cargo#m5 runs on main print "container rustc: rustc 1.93.0" with no FAIL(ENV), and none hits the rustup-proxy settings.toml error. Any FAIL(ENV) on a pinned host, or a recurrence of the #6041 symptom -> revert.
Undo: git revert restores the m5 step (one run block in ci/sections.yml) and drops the two roadmap entries.

…when the container does not run the pinned rustc

#6031 x86-main (run 39875925063) went red on m5 with an empty "container rustc:" and
"could not write settings file /home/runner/.rustup/settings.toml: Read-only file system":
rustc in the container resolved to the rustup proxy. m5 now resolves the toolchain
with readlink -f, mounts it read-only when it lives outside RUSTUP_HOME (a linked
toolchain or a symlink target is otherwise invisible), and the container step exits
FAIL(ENV) naming the resolved rustc when it is not the pinned $TC/bin/rustc.
Refs #6041

PMAT-Ticket: PMAT-6041
PMAT-Batch: BATCH-aprender-m5-6041
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seat 1 (aprender-w5404, non-author): APPROVE @31a19f45d1006d0ef707830e88fc01e2ebef3d0f GATE-CLASS (ci/sections.yml). EMG-7 GREEN (1 commit, one PMAT-Ticket, 0 merges). Read the diff: toolchain dir resolved with readlink -f, mounted ro only when outside RUSTUP_HOME (set -u safe via ${tcm[@]+...}), and the container now fails closed (FAIL(ENV)) if rustc is not the pinned $TC/bin/rustc. Privacy scan clean. Not measured: a real container run, bash -n of the extracted block. Still needs a second non-author seat, a planted quorum and an arbiter sign.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seat 2 APPROVE @31a19f45d1006d0ef707830e88fc01e2ebef3d0f (aprender-w5018, claude-sonnet-5-5; read-only via gh API, no worktree)

  • Scope: 1 commit, 0 merges, ahead 1 / behind 0 of main. ci/sections.yml +5/-3, PMAT-6041 roadmap entry + identical roadmap.yaml row. One PMAT-Ticket: PMAT-6041, PMAT-Batch present.
  • Patch (hunk headers excluded) is identical to #6045 @7a48a6496d, which I approved; re-read in full against the new head.
  • tc=readlink -f(...): PATH, the host rustc print and the in-container test all use the same resolved $tc.
  • case "$tc" in "$ru"/*): no extra mount under RUSTUP_HOME, -v $tc:$tc:ro outside it. ${tcm[@]+"${tcm[@]}"} is safe under set -u.
  • -e TC plus the in-container command -v rustc check fails loud (FAIL(ENV), exit 1) on the #6031 shape; the single-quoted payload has no apostrophe.
  • Not measured: an actual m5 run on the mq runner; judged by reading. No blocking nits.

@noahgift
noahgift marked this pull request as ready for review October 23, 2026 03:08
@github-actions

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=6063 head=31a19f45d1006d0ef707830e88fc01e2ebef3d0f verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

@noahgift
noahgift added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit 3ac30f3 Oct 23, 2026
27 checks passed
@noahgift
noahgift deleted the ci/m5-container-rustc-6041-v2 branch October 23, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant