Skip to content

feat(release): G5 — binary-release ships every [[bin]] (#4189) - #4580

Closed
noahgift wants to merge 3 commits into
batch/ont-10from
1c/g5-release-all-bins
Closed

noahgift wants to merge 3 commits into
batch/ont-10from
1c/g5-release-all-bins

Conversation

@noahgift

Copy link
Copy Markdown
Contributor

Refs #4189 (G5). Stacked on batch/ont-10 (#4502); I'll retarget it to main once #4502 merges, per the cop's call. rc.1 is tagged after this merges.

Problem. binary-release.yml attached apr and pv only. 27 of the 29 workspace [[bin]]s never reached a tag. asset_version_check.sh also refused every line except apr X.Y.Z (<sha>), so 28 of 29 real rc.1 lines failed.

Change

  • New build-all-bins lane: x86_64 on yoga, aarch64 on gx10, gnu target, built in rust:1.93.0-bullseye.
    • The bin set and the cargo selection come from scripts/nightly_manifest.py bins run on the tag tree, exactly as nightly.yml does it. There is no second list.
    • apr and pv stay on their dedicated lanes. A second pv-<tag>-<target> from this lane would clobber the pv asset.
    • Before upload, each bin must pass asset_version_check.sh TAG SHA LINE <bin>, --help, the GLIBC_2.31 floor, and nightly_manifest.py smoke.
    • After upload, every asset is read back from the release.
    • Assets are named <bin>-<tag>-<target>.tar.gz + .sha256, so promote_rc.sh renames them like the other assets.
  • asset_version_check.sh:
    • Takes an optional BIN argument, defaulting to apr, so 3-arg callers are unchanged. The name is compared as a literal prefix.
    • Accepts the (<description>) that pv and pv-sat print after the sha.
    • 12 new case rows.
  • aprender-cgp now prints its [[bin]] name; its clap name was cgp.

Evidence

  • Ran the new check on all 29 --version lines of a stamped v0.70.0-rc.1 build at 9f56095: 29/29 ok.
  • aprender-ptx-debug's deprecation notice goes to stderr, and the lane reads stdout only.
  • --self-test PASS.
  • Two mutants each turn the case table red: ignoring the bin name gives 6 FAIL rows, and a greedy sha field gives 1.
  • cargo test -p aprender-cgp --lib --test integration: 121 + 29 passed.
  • cargo fmt clean; actionlint shows only pre-existing info-level notes.

Known gap. check_release_assets.sh, the assets skip gate, still lists the 18 apr/pv assets. A release that has those 18 but is missing only all-bins assets would skip this lane. A follow-up can derive the list.

🤖 Generated with Claude Code

…under its own name (#4189)

binary-release.yml shipped apr and pv only; 27 workspace bins were built by the
nightly and never attached to a tag. New `build-all-bins` lane (x86_64 on yoga,
aarch64 on gx10, gnu in rust:1.93.0-bullseye): the bin set and the cargo
selection are `nightly_manifest.py bins` of the tag tree, verbatim, never a hand
list. apr/pv keep their dedicated lanes (a second pv-<tag>-<target> would clobber
the pv asset). Before upload every bin must pass asset_version_check.sh under its
own name, --help, the 2.31 glibc floor and `nightly_manifest.py smoke`; after
upload every asset is read back.

asset_version_check.sh accepted only `apr X.Y.Z (<sha>)`, so 28 of 29 real rc.1
lines were refused. It now takes an optional BIN (default apr, 3-arg callers
unchanged), compares the name as a literal prefix, and accepts pv/pv-sat's
trailing ` (<description>)`. Measured on the 29 --version lines of a stamped
v0.70.0-rc.1 build at 9f56095: 29/29 ok once aprender-cgp prints its own
[[bin]] name (clap name was "cgp"). 12 new case rows; two mutants (ignore the
bin name; greedy sha field) each turn the table red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "GH-4189",
 "head": "ae34ee7cdd685e1c5abcf324ffc61cd7fd7c0362",
 "width": 3,
 "executor": "agy",
 "agreed": false,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "FAIL",
   "findings": 2
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 11
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

… the nightly half is on base

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false)

{
 "ticket": "GH-4189",
 "head": "e97655a8686d17d09216ad82b7326548b110c897",
 "width": 3,
 "executor": "agy",
 "agreed": true,
 "auto_merge": {
  "checked": true,
  "was_armed": false,
  "disarmed": false,
  "note": "auto-merge not armed"
 },
 "lanes": [
  {
   "lane": 1,
   "verdict": "PASS",
   "findings": 0
  },
  {
   "lane": 2,
   "verdict": "PASS",
   "findings": 9
  },
  {
   "lane": 3,
   "verdict": "PASS",
   "findings": 0
  }
 ]
}

…t-5, DEGRADED: cuda/mutation/agy unreachable)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

Superseded by #4589, the same 4 files rebuilt on #4588 (base main). This PR targeted batch/ont-10, so ci.yml never ran. The branch is kept.

@noahgift noahgift closed this Sep 28, 2026
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