Repository navigation
Description
native-arch reports success every night while validating nothing, and its s390x target is an address that has been dead since 2026-10-09. The landing page cites this lane as evidence of native validation.
The lane is green and empty
$ gh run view 42476062143 --json jobs # 2026-11-08, scheduled
success check-secrets steps=3
skipped native ${{ matrix.arch }} (${{ matrix.host }}) steps=0
skipped native s390x (linux1@148.100.85.193) steps=0Both native jobs skip — steps=0 — because check-secrets finds no CFARM_SSH_KEY / LINUX1_SSH_KEY and gates them off. Only the gate itself runs, and the run is success.
Five consecutive nights, same shape:
2026-11-08 schedule success 2026-11-05 schedule success
2026-11-07 schedule success 2026-11-04 schedule success
2026-11-06 schedule success
⛔ A workflow that cannot distinguish "every architecture passed" from "nothing ran" reports the same green for both. The secrets gate is reasonable — a fork has no credentials — but the conclusion should not be success when every validating job was skipped.
And the s390x host address is dead
.github/workflows/native-arch.yml:
264: name: native s390x (linux1@148.100.85.193)
269: TARGET_HOST: 148.100.85.193
46,49,60: the same address in the comments and the secret documentation
148.100.85.193 is the old z15. The host moved to linux1@148.100.85.168 (IBM z17, 8 vCPU) on 2026-10-09. So even with the secrets installed, the s390x lane would fail to connect — and because the lane is skipped, nothing has ever reported that.
The LINUX1_KNOWN_HOSTS documentation (:49) also names .193, so a ssh-keyscan done from it would key the wrong host.
Which makes a published claim unbacked
go-embedded-ruby.github.io states:
riscv64, loong64, ppc64le and s390x are validated on a nightly schedule — under qemu, and natively on the GCC Compile Farm plus an IBM LinuxONE s390x host — not on the pull-request path.
Neither half holds right now:
| state | |
|---|---|
| under qemu | arch-qemu-nightly has failed every night for ≥10 nights (#842) |
| natively | native-arch skips both lanes; s390x points at a dead IP |
Witness that the native lane has not been running
I ran internal/vm on the real z17 by hand on 2026-11-07 (ssh linuxone, cross-compiled binary, 8 vCPU, load 0.00) and it was the first execution of that package on big-endian hardware — 7 of 9 initially-failing tests turned out to be missing repository files, not architecture. Figures and method are in #842. That is consistent with a lane that has never run, and inconsistent with nightly native validation.
What this needs, separately from fixing it
TARGET_HOST→148.100.85.168, and the three comment references with it.- A conclusion that is not
successwhen the validating jobs were all skipped — or, if a green fork run is wanted, something that makes the distinction legible (thecheck-secretssummary already prints which lanes are enabled; the run conclusion does not carry it). - The landing sentence to match whatever the lane actually does once it does it.
⛔ I am not changing the workflow here: items 1 and 2 are a CI decision (and 2 has a real trade-off for forks), and the secrets themselves are not something a session should touch. Filing with the measurement, which is the part that was missing.
🤖 Generated with Claude Code
Activity
tannevaled commentedon Nov 8, 2026
Prior art: this repository already accepted the rule, for a different trigger
priorart --repo go-embedded-ruby/ruby "native-arch nightly skipped"surfaces a closed PR whose title is the principle this issue is about:So "a native-arch lane that cannot do its job must not report OK" is not a new proposal — it was argued and landed for the checkout failure. What this issue reports is the same rule with an untreated trigger: the lane is skipped by the secrets gate, so there is no step to fail, and the run conclusion is
successwithsteps=0on both native jobs.That reframes the ask. Rather than "should a lane that validates nothing be green", the question is narrower: #778's rule has a hole where the job never starts, and the five nights of green above are what falls through it.
Why I did not find this when filing
I searched with
gh search issues --repo go-embedded-ruby/ruby "native-arch", which returned #842 and #688 and nothing else — because it searches issues, not pull requests. #778 and #781 are closed PRs, which is where this repository's reasoning about the lane lives.priorartreads both surfaces, open and closed, and found them in one call. Recording the miss rather than the result: the search I ran could not have found the most relevant prior art, whatever I typed into it.⚠ Note for anyone copying the invocation:
priorartnow wants--repo(two dashes). A single dash still works through a shim that warns and "will not outlive the next major".🤖 Generated with Claude Code