Skip to content

Prepare v0.5.1: publish the bundle and the CLIs - #26

Merged
snkmcb merged 3 commits into
mainfrom
release/v0.5.1
Sep 23, 2026
Merged

snkmcb merged 3 commits into
mainfrom
release/v0.5.1

Conversation

@snkmcb

@snkmcb snkmcb commented Sep 23, 2026

Copy link
Copy Markdown
Member

What

This PR prepares v0.5.1. It changes no behaviour; it changes what gets published. execMotion and the three CLIs go to ghcr.io/animu-sphere/usd-motion-plugins next to the libraries, so another repository can pin them by digest.

Three commits:

  1. Move the pin to 0.23.4, with the ecosystem. Updates openstrata.ci.yaml, the re-rendered workflow (only the version changes) and release.yml (which mirrors the pin by hand).
  2. Publish the bundle and the CLIs with the libraries (release.yml):
    • Every packaged bundle and tool is staged as a whole dist directory, the way a library is, with a member-digests.tsv row that records its kind.
    • The publish job imports all of them and pushes each one under <member>-<version>-<target>.
    • The pin table (external-library-pins.{md,json}) gets bundles and tools sections. Each Markdown block can be pasted directly under requires.bundles or requires.tools.
    • Each kind's expected count comes from the tree (the openstrata.plugin.yaml / openstrata.tool.yaml descriptors), so a member that stops being packaged fails the job.
  3. Prepare v0.5.1. VERSION and its 24 mirrors, a finalized ## [0.5.1] changelog section, docs/releases/v0.5.1.md, the notes template, and the roadmap.

Why

ost 0.23.4 added requires.bundles[].artifact and requires.tools[], in answer to usd-vrm-plugins' ost report 45. usd-vrm-plugins cannot delete its copy of execMotion until it can pin the published bundle and re-run its parity rows against it. v0.5.0 attached the bundle and the CLIs to the release but never pushed them, so nothing existed for a pin to point at.

Checked locally (Windows, ost 0.23.4)

  • Root ost build + ost test: 53 of 53 pass, at both 0.5.0 and 0.5.1. ost plugin build and ost plugin test --up-to 5 for execMotion pass. ost plugin package --workspace packages all four members at 0.5.1.
  • Push rehearsal: each bundle and tool dist directory was imported, then pushed with ost artifact push to a throwaway registry (registry:2 in WSL, --plain-http). Every push returned the artifact_digest it was given and an oci_digest, the two fields the job reads.
  • Pin-table script: run against synthetic rows. It emits the three sections, and it fails when a kind's count does not match the tree.
  • Consumer rehearsal in usd-vrm-plugins (scratch branch, discarded afterwards):
    • Deleted plugins/execMotion and pinned the locally built bundle. ost plugin test plugins/execVrm materialized it under .strata/external-bundles/ and put it on the session's plugin path.
    • Inside ost plugin run plugins/execVrm -- ctest …, these pass against it: execVrm_retarget, _joint_transforms, _diagnostics, _retarget_without_exec_motion, workspace_exec_driver, and all five workspace_exec_parity_* cases (divergence 0 everywhere).
  • check_docs.py and make_release_notes.py --version 0.5.1 pass.

Not proven by this PR

The GHCR push itself. No PR event runs release.yml. The tag push is its first run, as it was for v0.5.0. The new rows use the same credentials and the same command as the library rows.

After merge

Tag v0.5.1 from the merged main, then publish the draft release. The pin table it generates is what usd-vrm-plugins will paste.

🤖 Generated with Claude Code

snkmcb and others added 3 commits September 24, 2026 01:30
0.23.4 answers usd-vrm-plugins' ost report 45. For this repository's
consumers, what matters is two new pins: `requires.bundles[].artifact`, so a
published bundle can be required, and `requires.tools[]`, so a published tool
can be used in tests. usd-vrm-plugins needs both before it can delete its copy
of execMotion. The re-render changes nothing but the version; release.yml
mirrors the pin by hand.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Through v0.5.0, execMotion and the three CLIs were attached to the GitHub
release but never pushed to the registry, because no consumer could pin them.
ost 0.23.4 added `requires.bundles[].artifact` and `requires.tools[]`, and
usd-vrm-plugins needs both to delete its copy of execMotion. So every
packaged member is now staged the way a library is: its whole dist directory,
plus a row that records its kind. The publish job imports them all, pushes
each one to the same repository under the same tag shape, and writes a pin
table with one section per kind. The counts of each kind come from the tree,
as the library count already did.

Rehearsed locally against a throwaway registry: every bundle and tool dist
directory that `ost plugin package --workspace` writes imports, and
`ost artifact push` returns the `artifact_digest` it was given and an
`oci_digest`, which are the two fields this job reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
VERSION and every mirror move to 0.5.1 (25 files). The changelog section is
finalized, and the release record and the notes template explain the one
thing this release changes: execMotion and the three CLIs go into the
registry next to the libraries, and the pin table gains a section for each.
No library, bundle or tool behaviour changes.

At 0.5.1 on Windows: root build and test pass 53 of 53, and
`ost plugin package --workspace` packages all four members at 0.5.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@snkmcb
snkmcb merged commit 9256f93 into main Sep 23, 2026
6 checks passed
@snkmcb
snkmcb deleted the release/v0.5.1 branch September 23, 2026 17:12
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