diff --git a/.github/workflows/ost-source-ci.yml b/.github/workflows/ost-source-ci.yml index 97e34bf..f586bf3 100644 --- a/.github/workflows/ost-source-ci.yml +++ b/.github/workflows/ost-source-ci.yml @@ -441,6 +441,26 @@ jobs: env: CMAKE_PREFIX_PATH: ${{ env.JOLT_PREFIX }} run: ost test --target ${{ matrix.platform }} --profile ${{ matrix.profile }} ${{ matrix.intent_flags }} + - name: Verify and package Linux physics libraries + if: ${{ matrix.name == 'workspace-pr-linux' }} + shell: bash + env: + CMAKE_PREFIX_PATH: ${{ env.JOLT_PREFIX }} + run: | + set -euo pipefail + mkdir -p .ost-ci + for library in libs/physicsCore backends/physicsJolt; do + name="$(basename "$library")" + ost library build "$library" --target ${{ matrix.platform }} --profile ${{ matrix.profile }} --json > ".ost-ci/${name}-build.json" + ost library test "$library" --target ${{ matrix.platform }} --profile ${{ matrix.profile }} --json > ".ost-ci/${name}-test.json" + # Jolt's imported target needs the external Jolt SDK. The root + # installed-consumer test carries that SDK prefix; OpenStrata's + # generated consumer intentionally clears CMAKE_PREFIX_PATH. + if [ "$name" = physicsCore ]; then + ost library verify-consumer "$library" --target ${{ matrix.platform }} --profile ${{ matrix.profile }} --json > ".ost-ci/${name}-consumer.json" + fi + ost library package "$library" --target ${{ matrix.platform }} --profile ${{ matrix.profile }} --json > ".ost-ci/${name}-package.json" + done - name: Run the workspace verification pyramid if: ${{ matrix.verify == 'pyramid' || matrix.verify == 'package' }} shell: bash @@ -454,10 +474,13 @@ jobs: uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: report-${{ matrix.name }} + include-hidden-files: true path: | .strata/targets/ **/.strata/reports/ **/dist/plugins/ **/dist/tools/ + libs/physicsCore/dist/ + backends/physicsJolt/dist/ dist/products/ .ost-ci/ diff --git a/docs/architecture/RELEASE_SCHEMA.md b/docs/architecture/RELEASE_SCHEMA.md index 7452b1f..504a2a5 100644 --- a/docs/architecture/RELEASE_SCHEMA.md +++ b/docs/architecture/RELEASE_SCHEMA.md @@ -2,7 +2,7 @@ > **Status: proposed, 2026-09-23.** This defines the intended versioned > release contract; it does not claim that a tag, release workflow, or GitHub -> release exists. The public Windows artifacts published during Phase 3 are +> release exists. The public Windows and Linux artifacts published during Phase 3 are > consumer-validation inputs, not a complete `v0.1.0` release. ## 1. Release unit and scope @@ -87,10 +87,11 @@ draft is reviewed and published. ## 4. Current boundary -The existing public Windows `physicsCore` and `physicsJolt` OCI artifacts have -been pulled and verified from a fresh cache for the Phase 3 migration. They -remain valid exact-digest inputs for that consumer, but do not imply Linux -availability or a formal versioned release. The first release workflow should -be implemented and dry-run before any `v0.1.0` tag is pushed. Linux artifacts, -cross-repository hosted consumer evidence, and a finalized release note are -still required. +The existing public Windows and Linux `physicsCore` and `physicsJolt` OCI +artifacts have been pulled and verified from fresh caches for the Phase 3 +migration. They remain valid exact-digest inputs for that consumer, but do not +constitute a formal versioned release. The cross-repository Stage Runner +[hosted consumer run](https://github.com/animu-sphere/usd-stage-runner/actions/runs/35853380748) +passed on Windows and Linux with artifact caches disabled. The first release +workflow should be implemented and dry-run before any `v0.1.0` tag is pushed; +a finalized release note is still required. diff --git a/docs/reports/2026-09-23-phase3-linux-artifacts.md b/docs/reports/2026-09-23-phase3-linux-artifacts.md new file mode 100644 index 0000000..b0c63da --- /dev/null +++ b/docs/reports/2026-09-23-phase3-linux-artifacts.md @@ -0,0 +1,48 @@ +# 2026-09-23 Phase 3 Linux package artifacts + +## Scope + +The Linux cell of [GitHub Actions run 35852274531](https://github.com/animu-sphere/usd-physics-plugins/actions/runs/35852274531) +passed the workspace suite, isolated `physicsCore` and `physicsJolt` builds and +tests, `physicsCore` installed-consumer verification, and packaging on +`ubuntu-24.04`. The workspace suite includes the Jolt installed-consumer test +with the external Jolt SDK prefix. The Windows and graph cells also passed. + +The Linux packages use the pinned `cy2026` / `usd` runtime and Jolt Physics +5.5.0 at `23dadd0e603f1b321142d4c74df07fce85064989`. + +## Published inputs + +The two package outputs were imported and checked with `ost artifact verify +--require-sbom --require-provenance`, then published to the existing public +`ghcr.io/animu-sphere/usd-physics-plugins` repository. A separate empty +OpenStrata store pulled both by OCI digest with their expected content digest, +kind, target, SBOM, and provenance requirements. + +| Package | Archive content digest | OCI manifest digest | +| --- | --- | --- | +| `physicsCore` | `sha256:81a3433b759e6ec817188a2137f8da24ff8dbebed09a176f48a7ec2596d6f5ad` | `sha256:f050253cea8f6db163b67c9860e88bdf213c8ef400956c29fec130bc4b6726d7` | +| `physicsJolt` | `sha256:2be1f995f3e59d29fcc5a3db66321d4022fd83965d68f09e9b82b5b73bf2703b` | `sha256:e51df5e3815cbbe57034a390c6218f7467be70f92500b437eb7c77f2feda9020` | + +The published tags are discovery labels. Consumers must pin both digests for +each package. + +## Verification boundary + +The first packaging run exposed that `ost library verify-consumer` clears +`CMAKE_PREFIX_PATH` for its generated consumer, so it cannot find the external +Jolt SDK required by `physicsJolt`. The passing run uses the root +installed-consumer test for Jolt and retains the isolated generated consumer +check for `physicsCore`. + +These artifacts are Phase 3 consumer inputs, not a versioned `v0.1.0` release. +Stage Runner's hosted Windows and Linux consumer results and the release dry +run remain separate gates. + +## Follow-up + +Later on 2026-09-23 UTC, Stage Runner's +[hosted Windows and Linux run](https://github.com/animu-sphere/usd-stage-runner/actions/runs/35853380748) +passed 46 tests per platform using the published packages with artifact caches +disabled. Its separate plain-CMake run also passed. The versioned release dry +run remains open. diff --git a/docs/reports/README.md b/docs/reports/README.md index a00332f..b46c39b 100644 --- a/docs/reports/README.md +++ b/docs/reports/README.md @@ -9,3 +9,4 @@ remain in the [capability matrix](../reference/CAPABILITY_MATRIX.md). - [2026-09-22 Phase 2 Windows backend verification](2026-09-22-phase2-windows-backend.md) - [2026-09-22 Phase 2 Linux backend verification](2026-09-22-phase2-linux-backend.md) - [2026-09-23 Phase 2 hosted backend verification](2026-09-23-phase2-hosted-backend.md) +- [2026-09-23 Phase 3 Linux package artifacts](2026-09-23-phase3-linux-artifacts.md) diff --git a/docs/roadmap/current.md b/docs/roadmap/current.md index 893a277..951687a 100644 --- a/docs/roadmap/current.md +++ b/docs/roadmap/current.md @@ -47,16 +47,20 @@ installed physicsCore + physicsJolt path passed all 48 local Windows parity tests. - Published the pinned Windows packages as public, immutable OCI artifacts and verified both OCI and content digests from a fresh cache. +- Published equivalent Linux packages and verified their content and OCI + digests from a fresh cache; see the + [Linux artifact report](../reports/2026-09-23-phase3-linux-artifacts.md). +- Stage Runner passed hosted Windows and Linux OpenStrata consumer builds and + tests with artifact caches disabled, plus the plain-CMake hosted jobs; + [the consumer run](https://github.com/animu-sphere/usd-stage-runner/actions/runs/35853380748) + records both platform cells. ## 4. Remaining Phase 3 work -- Produce and publish equivalent Linux package artifacts. -- Run the Stage Runner hosted Windows and Linux suites from fresh artifact - caches and record the evidence. - Implement and dry-run the versioned release workflow against the [release schema](../architecture/RELEASE_SCHEMA.md) before creating a tag; - the currently published Windows artifacts are Phase 3 inputs, not a full - release. + the currently published Windows and Linux artifacts are Phase 3 inputs, not + a full release. ## 5. Phase 3 completion criteria