Skip to content

Commit ab27597

Browse files
committed
release: eb-stack 0.7.4
Bump every version location CONTRIBUTING.md lists, and record 0.7.4 in the changelog: advisory scheduler capacity, storage advice for every build phase, MCP Registry metadata under io.github.stackhands, and the fixes since 0.7.3. Add publish.yml: on a version tag it publishes eb_stack to crates.io with Trusted Publishing (skipping a version already there) and then calls mcp_registry.yml, which is now a reusable workflow instead of a release trigger. The example easyblocks name their author without an affiliation.
1 parent 3dce331 commit ab27597

23 files changed

Lines changed: 180 additions & 81 deletions

‎.github/workflows/mcp_registry.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
# which is what the registry checks for the io.github.stackhands/ namespace;
55
# no token is stored. The registry also reads the crates.io README of the
66
# version in server.json for its mcp-name line, so this runs after that
7-
# version is on crates.io: on a published release, or by hand.
7+
# version is on crates.io: called by publish.yml after the crate is out,
8+
# or by hand.
89
name: mcp-registry
910
on:
10-
release:
11-
types: [published]
11+
workflow_call:
1212
workflow_dispatch:
1313

1414
permissions:
@@ -19,7 +19,7 @@ jobs:
1919
publish:
2020
runs-on: ubuntu-24.04
2121
steps:
22-
- uses: actions/checkout@v4
22+
- uses: actions/checkout@v7
2323
- name: server.json names the crate version on crates.io
2424
run: |
2525
set -euo pipefail

‎.github/workflows/publish.yml‎

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Publish eb_stack to crates.io with Trusted Publishing, then register the
2+
# MCP server. crates.io hands this workflow a token only once
3+
# stackhands/eb-stack is configured as a Trusted Publisher for eb_stack;
4+
# until then the publish step is skipped and the crate goes out from a
5+
# maintainer's machine (cargo publish --locked), as CONTRIBUTING.md says.
6+
name: publish
7+
8+
on:
9+
push:
10+
tags: ["v*"]
11+
workflow_dispatch:
12+
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
crates:
18+
runs-on: ubuntu-24.04
19+
permissions:
20+
contents: read
21+
id-token: write
22+
steps:
23+
- uses: actions/checkout@v7
24+
- name: The tag is the crate version
25+
if: startsWith(github.ref, 'refs/tags/v')
26+
env:
27+
TAG: ${{ github.ref_name }}
28+
run: |
29+
set -eu
30+
crate=$(python3 -c 'import tomllib; print(tomllib.load(open("Cargo.toml", "rb"))["package"]["version"])')
31+
if [ "v$crate" != "$TAG" ]; then
32+
echo "Cargo.toml says $crate and the tag says $TAG" >&2
33+
exit 1
34+
fi
35+
- name: Is this version on crates.io already
36+
id: present
37+
run: |
38+
set -eu
39+
version=$(python3 -c 'import tomllib; print(tomllib.load(open("Cargo.toml", "rb"))["package"]["version"])')
40+
if curl -fsS -A 'stackhands/eb-stack publish workflow' "https://crates.io/api/v1/crates/eb_stack/$version" > /dev/null; then
41+
echo "eb_stack $version is on crates.io already"
42+
echo "skip=true" >> "$GITHUB_OUTPUT"
43+
fi
44+
- uses: dtolnay/rust-toolchain@stable
45+
if: steps.present.outputs.skip != 'true'
46+
- uses: rust-lang/crates-io-auth-action@v1.0.5
47+
id: auth
48+
if: steps.present.outputs.skip != 'true'
49+
continue-on-error: true
50+
- name: No Trusted Publishing configuration
51+
if: steps.present.outputs.skip != 'true' && steps.auth.outcome != 'success'
52+
run: |
53+
echo "crates.io gave no token for this repository; publish by hand with cargo publish --locked" >&2
54+
exit 1
55+
- name: Publish eb_stack
56+
if: steps.present.outputs.skip != 'true' && steps.auth.outcome == 'success'
57+
env:
58+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
59+
run: cargo publish --locked
60+
61+
mcp-registry:
62+
needs: crates
63+
permissions:
64+
contents: read
65+
id-token: write
66+
uses: ./.github/workflows/mcp_registry.yml

‎CHANGELOG.md‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,36 @@
22

33
All notable changes to this project are documented here.
44

5+
## 0.7.4 - 2026-11-13
6+
7+
### Added
8+
9+
- `stack capacity` reads a captured scheduler snapshot and reports, per node and
10+
for an exact request, the eligible nodes, the nodes that can fit it and the
11+
free fitting slots; missing data stays unknown. The same advice is available
12+
through MCP.
13+
- `stack shard` takes an optional storage policy and attaches storage advice to
14+
every build phase: phases that fit the shared inode budget keep shared
15+
scratch, the rest go to node-local disk where the captured capacity allows.
16+
Footprint tables can mark packages that need a real disk.
17+
- The MCP server is described for the MCP Registry as
18+
`io.github.stackhands/eb-stack`, and a workflow publishes it with GitHub
19+
Actions OIDC.
20+
21+
### Fixed
22+
23+
- Materialized execution lists are bound to their exact bytes, and phase advice
24+
to the generated list.
25+
- Opaque shard roots keep their disk requirements.
26+
- GPU slot division is checked, and CPU advice survives unknown GPU data.
27+
- The footprint buffer used for estimates is the one hashed into the plan.
28+
- File robot roots are normalized in `recipe check`.
29+
30+
### Changed
31+
32+
- The repository is `stackhands/eb-stack`; links, docs and the SBOM tool vendor
33+
name the stackhands organisation.
34+
535
## 0.7.3 - 2026-11-11
636

737
### Distribution

‎CITATION.cff‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ authors:
1010
license: MIT
1111
repository-code: "https://github.com/stackhands/eb-stack"
1212
url: "https://eb-stack.rgoswami.me"
13-
version: 0.7.3
13+
version: 0.7.4
1414
keywords:
1515
- EasyBuild
1616
- HPC

‎CONTRIBUTING.md‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ layer. The public files contain reusable package intent and target topology.
7777

7878
## Releasing
7979

80-
Version source of truth: `version` in root `Cargo.toml` (currently **0.7.3**).
80+
Version source of truth: `version` in root `Cargo.toml` (currently **0.7.4**).
8181
Keep these in lockstep on every release:
8282

8383
1. `Cargo.toml` / `pixi.toml` `version`
@@ -100,19 +100,22 @@ stays absent until the test is updated for a published citation.
100100
Then:
101101

102102
```bash
103-
git tag -a v0.7.3 -m "eb-stack 0.7.3"
104-
git push origin v0.7.3
103+
git tag -a v0.7.4 -m "eb-stack 0.7.4"
104+
git push origin v0.7.4
105105
# .github/workflows/release.yml (cargo-dist) builds the installers
106-
# and publishes the GitHub Release. It does not publish to crates.io:
106+
# and publishes the GitHub Release.
107+
# .github/workflows/publish.yml publishes eb_stack to crates.io with Trusted
108+
# Publishing and then registers the MCP server (mcp_registry.yml). It skips a
109+
# version already on crates.io. Until crates.io lists stackhands/eb-stack as a
110+
# Trusted Publisher, publish by hand from the tagged checkout, then run the
111+
# mcp-registry workflow:
107112
cargo publish --locked
108-
# runs on a host with a crates.io token scoped to publish eb_stack, from the
109-
# tagged checkout (0.7.1 was published this way).
110113
```
111114

112115
Verify the binary surface:
113116

114117
```bash
115118
cargo build --release
116119
./target/release/eb-stack --version
117-
# prints eb-stack 0.7.3
120+
# prints eb-stack 0.7.4
118121
```

‎Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "eb_stack"
3-
version = "0.7.3"
3+
version = "0.7.4"
44
edition = "2021"
55
# Floor is 1.90: `ordered-float` 5.5.1 sets rust-version 1.90.
66
# `uuid` 1.29.0 sets 1.89.0. Edition 2024 dependencies need Cargo 1.85.

‎README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
A plan is not a build. `package plan` and `package bump` can establish only **resolves**. `campaign run` owns **builds** and **binary-verified**.
1313

14-
The GitHub release and the crates.io package are 0.7.3 and carry every command here.
14+
The GitHub release and the crates.io package are 0.7.4 and carry every command here.
1515

1616
The [glossary](docs/orgmode/reference/glossary.org) defines closure, generation, baseline, and reachability. The longer path is the [tutorial](docs/orgmode/tutorial.org).
1717

@@ -74,10 +74,10 @@ stops while reading the crate index: the Cargo feature `edition2024` is
7474
not stabilized. `rustup toolchain install stable` and `rustup default
7575
stable` provide a new enough compiler.
7676

77-
The GitHub release is 0.7.3, with installers and archives for Linux
77+
The GitHub release is 0.7.4, with installers and archives for Linux
7878
(x86-64, aarch64), macOS and Windows, and `eb-stack --version` prints
79-
`0.7.3` for it, as a build of this tree does. `cargo install eb_stack
80-
--locked` builds the same 0.7.3 from crates.io.
79+
`0.7.4` for it, as a build of this tree does. `cargo install eb_stack
80+
--locked` builds the same 0.7.4 from crates.io.
8181

8282
`cargo binstall` is not part of a Rust install. `cargo binstall
8383
eb_stack` fails with `no such command: binstall` until that program is
@@ -93,7 +93,7 @@ install -Dm755 target/release/eb-stack ~/.local/bin/eb-stack
9393
```
9494

9595
Add `~/.local/bin` to `PATH`. `eb-stack --version` then prints
96-
`eb-stack 0.7.3`. The test suite is `cargo test --locked`, in
96+
`eb-stack 0.7.4`. The test suite is `cargo test --locked`, in
9797
[Tests](#tests). It is not required before the first solve.
9898

9999
Build the Rust binary on a suitable build host. EasyBuild installs belong on the target selected by the public target configuration, not necessarily on the machine running the CLI.

‎docs/orgmode/changelog.org‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#+TITLE: Changelog
22
#+OPTIONS: toc:nil num:nil
33

4-
Cargo, CITATION, and Sphinx report *0.7.3*. The notes for every release
5-
since 0.3.0, 0.4.0 through 0.7.3, are the sections of
4+
Cargo, CITATION, and Sphinx report *0.7.4*. The notes for every release
5+
since 0.3.0, 0.4.0 through 0.7.4, are the sections of
66
[[https://github.com/stackhands/eb-stack/blob/main/CHANGELOG.md][CHANGELOG.md]].
77

88
The version-one design provides:

‎docs/orgmode/contributing.org‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ layer. Public files contain reusable package intent and target topology.
7777

7878
* Releasing
7979

80-
Version source of truth is ~version~ in root ~Cargo.toml~ (currently *0.7.3*).
80+
Version source of truth is ~version~ in root ~Cargo.toml~ (currently *0.7.4*).
8181
Keep these aligned:
8282

8383
1. ~Cargo.toml~ / ~pixi.toml~ ~version~

0 commit comments

Comments
 (0)