Skip to content

Commit 4ca9649

Browse files
ci(abi-drift): SHA-pin iseriser, drop sticky restore-keys (#111) (#172)
## Summary - Pin iseriser to `741a3b63e7619b6e9cfe7f91b04d7ccfb130b1ca` (current `main` HEAD, post-#20/#21/#22) instead of floating `--branch main`. - Drop the prefix-matching `restore-keys` and key the cache by the rev SHA so a future bump actually invalidates it. - Always re-install with `--force`; the existence-check short-circuit was the proximate cause of cached pre-#20 binaries surviving the fix landing 11 days ago. ## Why [iseriser#20](hyperpolymath/iseriser#20) (merged 2026-05-20) added GADT-skip to `abi-emit-manifest` so `data … where` declarations (like vordr-mcp's `MonotonicDegradation` proof relation) no longer crash with `Error: data declaration has no \`=\``. But this repo's CI never picked up the new binary: ```yaml # Before key: iseriser-${{ runner.os }}-${{ github.sha }} restore-keys: | iseriser-${{ runner.os }}- ``` `restore-keys` prefix-matches across every commit, so once any cache existed for ubuntu it'd restore that one. Combined with: ```bash if ! command -v iseriser >/dev/null 2>&1; then cargo install --git … --branch main --locked fi ``` the install only fired if no binary existed at all. Result: stale binary forever. Latest main run on 2026-05-26 (`gh run view 26426084041`) still printed `Error: data declaration has no \`=\`` against vordr-mcp. ## Test plan - [ ] CI runs `ABI Drift Gate` against this PR. - [ ] `iseriser --version` log shows the post-#20 build. - [ ] vordr-mcp line in the per-cartridge output reads ` ✓ vordr-mcp` rather than ` ✗ vordr-mcp EMIT FAILED`. - [ ] No regression in any other allowlisted cartridge. Closes #111 Refs hyperpolymath/standards#92, hyperpolymath/iseriser#20. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 0724af5 commit 4ca9649

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

.github/workflows/abi-drift.yml

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,24 +54,32 @@ jobs:
5454
with:
5555
toolchain: stable
5656

57+
# Pin to a specific iseriser commit so the cache key changes when
58+
# we bump it. Floating `--branch main` + a prefix-matching
59+
# `restore-keys` (`iseriser-${{ runner.os }}-`) was sticky: once a
60+
# binary was cached for a given OS, the install step's
61+
# `command -v iseriser` short-circuit skipped re-build, and #111's
62+
# GADT-skip fix (iseriser#20, merged 2026-05-20) never reached CI.
63+
# Bumping ISERISER_REV invalidates the cache and forces a rebuild.
5764
- name: Cache cargo bin (iseriser install)
5865
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
66+
env:
67+
ISERISER_REV: 741a3b63e7619b6e9cfe7f91b04d7ccfb130b1ca
5968
with:
6069
path: |
6170
~/.cargo/bin/iseriser
6271
~/.cargo/registry
6372
~/.cargo/git
64-
key: iseriser-${{ runner.os }}-${{ github.sha }}
65-
restore-keys: |
66-
iseriser-${{ runner.os }}-
73+
key: iseriser-${{ runner.os }}-${{ env.ISERISER_REV }}
6774

6875
- name: Install iseriser
76+
env:
77+
ISERISER_REV: 741a3b63e7619b6e9cfe7f91b04d7ccfb130b1ca
6978
run: |
7079
set -euo pipefail
71-
if ! command -v iseriser >/dev/null 2>&1; then
72-
cargo install --git https://github.com/hyperpolymath/iseriser --branch main --locked
73-
fi
74-
iseriser --version || true
80+
cargo install --git https://github.com/hyperpolymath/iseriser \
81+
--rev "$ISERISER_REV" --locked --force
82+
iseriser --version
7583
7684
- name: Resolve cartridge allowlist
7785
id: discover

0 commit comments

Comments
 (0)