Skip to content

ci: run the public demos against the wheel this branch would ship - #105

Merged
imran-siddique merged 1 commit into
mainfrom
ci/downstream-examples
Aug 27, 2026
Merged

ci: run the public demos against the wheel this branch would ship#105
imran-siddique merged 1 commit into
mainfrom
ci/downstream-examples

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

Closes the gap that let 0.27.0 break six public demos with nothing noticing.

What happened

0.27.0 shipped two correct security changes, and both broke demos in agentrust-io/examples:

Six demos that passed on 0.26.0 failed on 0.27.0.

Why nothing caught it

Two reasons, and both had to be fixed:

  1. That repository only ever tests against a version already on PyPI. The earliest possible detection was after the upload, which is after a version number can be taken back.
  2. The list of demos to run lived inside its workflow file, where this repository's CI cannot reach it.

The list now lives beside the demos as run_demos.py (agentrust-io/examples#92, merged). This job calls it against a wheel built from the branch under review.

A red check here is not automatically a revert

Worth being explicit, because whoever meets one will be deciding under time pressure, and the job comment says it too.

A security fix should break a demo that was relying on the hole. #98 broke six demos because six were building brokers that would release against any manifest reusing a held weights hash — which is exactly what #98 closed. The demos were wrong.

The value is knowing on the PR, and landing the demo fix alongside, rather than discovering it after publishing.

Install order

Deliberate, and worth a look:

pip install -r examples/weight-custody-manifest/requirements.txt   # brings in the extras
pip install "model-signing>=1.1,<2" pytest
pip install --force-reinstall --no-deps python/dist/*.whl          # then swap the SDK

--force-reinstall because the examples' pinned floor is usually already satisfied by the version being replaced, so a plain install is a no-op. --no-deps so the swap does not drag the pinned release back in.

RELEASING.md

Two steps learned the expensive way:

  • Diff CHANGELOG.md against git log v<last>..HEAD before dating a section. 0.27.0 found seven merged PRs with no entry at all, one of them a security change. A notes section covering two of nine changes is worse than none, because it reads as complete.
  • Note that downstream-examples has already run by the time a release PR is merged.

Verified

End to end locally: wheel built from this branch, installed over the examples' pin, 13 demos and the unit tests pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_014NL8o3PXq6kfs2SdmBv6ak

0.27.0 shipped two correct security changes and both broke demos in
agentrust-io/examples: release began refusing manifests whose identity was not
pinned out of band (#98), and the memory-fingerprint challenge began requiring a
signed sweep (#95). Six demos that passed on 0.26.0 failed on 0.27.0.

Nothing caught it and nothing could have. That repository only ever tests
against a version already on PyPI, so the earliest possible detection was after
the upload, which is after a version number can be taken back. And the list of
demos to run lived inside its workflow file, where this repository's CI cannot
reach it.

The list now lives beside the demos as run_demos.py (agentrust-io/examples#92),
and this job calls it against a wheel built from the branch under review. A
change here that breaks them fails on the pull request that causes it.

A failure is not automatically a reason to revert. A security fix SHOULD break a
demo that was relying on the hole; #98 broke six because six were building
brokers that would release against any manifest reusing a held weights hash,
which is exactly what it closed. It is a reason to know, and to land the demo
fix alongside rather than discover it afterwards. The job comment says so, since
whoever meets a red check here will be deciding that under time pressure.

The install order is deliberate: the examples' requirements first, to bring in
the extras the demos need, then the local wheel with --force-reinstall --no-deps
to replace the SDK with the one under review. The pinned floor is usually
already satisfied by the version being replaced, so a plain install is a no-op.

RELEASING.md gains two steps that were learned the expensive way: diff the
changelog against git log before dating a section, and note that the downstream
check has already run by the time a release PR is merged.

Verified locally end to end: wheel built from this branch, installed over the
examples' pin, 13 demos and the unit tests pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NL8o3PXq6kfs2SdmBv6ak
@imran-siddique
imran-siddique merged commit a952cb6 into main Aug 27, 2026
7 checks passed
@imran-siddique
imran-siddique deleted the ci/downstream-examples branch August 27, 2026 16:21
imran-siddique added a commit that referenced this pull request Sep 1, 2026
Cuts a clean release. Supersedes 0.26.0 and 0.27.0, whose sdists carry internal
infrastructure identifiers in a test fixture; the wheels never did, and #107
removed them from the tree.

Contents since 0.27.0:

  #105 public demos run against the wheel the branch would ship
  #106 protected-runtime evidence captured on real Azure SEV-SNP silicon
  #107 identifier redaction plus a CI leak scan on every push, PR and release

0.28.0 rather than 0.27.1: #106 is additive evidence work with a new test module,
and #107 adds a workflow and a tool rather than only editing fixtures.


Claude-Session: https://claude.ai/code/session_019kmhCCZYFS1ZzQjeoQWkw4

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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