Skip to content

ci(plugin): publish Rampart native plugin artifacts - #737

Draft
afourniernv wants to merge 107 commits into
NVIDIA:mainfrom
afourniernv:ci/pii-rampart-release-artifacts
Draft

ci(plugin): publish Rampart native plugin artifacts#737
afourniernv wants to merge 107 commits into
NVIDIA:mainfrom
afourniernv:ci/pii-rampart-release-artifacts

Conversation

@afourniernv

@afourniernv afourniernv commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Overview

Build and distribute the opt-in Rampart native plugin introduced by #558 without adding Tract to Relay's default host artifacts.

This is the packaging layer of a two-PR review series. It adds deterministic platform archives, matching-platform smoke checks, and draft GitHub Release assets. It does not publish a crate, bundle the model, or change Rampart runtime behavior.

GitHub's native stack metadata cannot link these PRs because they originate from a fork. The dependency remains explicit: this PR contains #558 and must merge after it.

  • I confirm this contribution is my own work, or I have the right to submit it under this project's license.
  • I searched existing issues and open pull requests, and this does not duplicate existing work.

Details

  • Reuse the existing Rust package matrix to build Rampart for six supported targets: GNU Linux x86_64/ARM64, musl Linux x86_64/ARM64, Apple Silicon macOS, and Windows x86_64.
  • Preserve the existing Windows ARM64 CLI build, wheel, and smoke coverage while omitting only the Rampart plugin. Tract 0.23.4 cannot compile its preprocessed ARM64 assembly for the MSVC target.
  • Build each musl plugin inside the same pinned PyPA musllinux image used for runtime smoke, while leaving the existing statically linked musl CLI build unchanged.
  • Build the standalone plugin with its committed lockfile and keep its package plus local path-dependency versions aligned with release tag stamping.
  • Materialize relay-plugin.toml with the platform library path and SHA-256 digest.
  • Create reproducible .tar.gz archives on Unix targets and a .zip archive on Windows.
  • Include only the native library, manifest, configuration schema, README, Apache-2.0 license, and Rust dependency attributions. The Rampart model remains separately provisioned.
  • Verify exact archive contents, JSON/TOML parsing, path safety, duplicate rejection, library integrity, the exported registration symbol, and nemo-relay plugins validate on each matching host or Linux runtime container.
  • Upload one archive per supported target during PR CI and attach all six archives to tagged draft GitHub Releases. The existing release SHA256SUMS covers them.
  • Extend package path detection so changes to Rampart, pii-redaction, or the packaging code cannot skip Rust package CI.
  • Keep the plugin compatible with Relay 0.8 prereleases as well as stable 0.8 releases.

Local validation:

  • uv run pre-commit run --all-files
  • Existing binary-package assembly suite plus the new Rampart archive tests (11 passed total)
  • A simulated 0.8.1 version rewrite followed by cargo check --locked for the standalone plugin
  • A real Apple Silicon release build packaged through the new recipe (9.4 MB compressed)
  • Archive extraction, digest verification, dynamic loading of nemo_relay_register_plugin, and CLI manifest/integrity validation

Hosted validation:

  • Build run 31221867055 passed Check / Run, the aggregate CI Pipeline, and pr-builder / run.
  • All seven existing Relay CLI package jobs passed.
  • Rampart built and uploaded archives for all six supported targets.
  • All six matching Rampart smoke jobs verified archive integrity, loaded the native library and registration symbol, and passed CLI plugin-manifest validation.
  • Windows ARM64 passed its existing CLI binary/wheel smoke with Rampart-specific steps explicitly skipped.

Where should the reviewer start?

Start with scripts/package-pii-rampart-plugin.py for the archive contract, then .github/workflows/ci_rust.yml for the build and smoke matrix. .github/workflows/ci.yaml contains the tagged-release aggregation.

This PR should merge after #558. It establishes GitHub Release archives for the optional native plugin; it does not add a crates.io publication or another registry credential path.

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

afourniernv and others added 30 commits July 26, 2026 16:44
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
Signed-off-by: Will Killian <wkillian@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Aug 7, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: e166d586-32c9-4332-b5df-1f8b64080b40

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size:XXL PR is very large Maintenance CI or Build or general repository maintenance lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code labels Aug 7, 2026
@afourniernv

Copy link
Copy Markdown
Contributor Author

/ok to test b087213b

@afourniernv

Copy link
Copy Markdown
Contributor Author

/ok to test b087213

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

License Diff

Compared against origin/main.

Lockfile license changes

Lockfile License Changes

Rust

Added

  • adler2 2.0.1 (Apache-2.0)
  • anymap3 1.1.0 (Apache-2.0)
  • byteorder 1.5.0 (MIT)
  • crc32fast 1.5.0 (Apache-2.0)
  • crunchy 0.2.4 (MIT)
  • derive-new 0.7.0 (MIT)
  • downcast-rs 2.0.2 (Apache-2.0)
  • dyn-eq 0.1.3 (MPL-2.0)
  • dyn-hash 1.0.0 (Apache-2.0)
  • filetime 0.2.29 (Apache-2.0)
  • flate2 1.1.9 (Apache-2.0)
  • float-ord 0.3.2 (Apache-2.0)
  • half 2.7.1 (Apache-2.0)
  • inventory 0.3.24 (Apache-2.0)
  • libm 0.2.16 (MIT)
  • maplit 1.0.2 (Apache-2.0)
  • matrixmultiply 0.3.11 (Apache-2.0)
  • memmap2 0.9.11 (Apache-2.0)
  • memo-map 0.3.3 (Apache-2.0)
  • minijinja 2.21.0 (Apache-2.0)
  • miniz_oxide 0.8.9 (Apache-2.0)
  • ndarray 0.17.2 (Apache-2.0)
  • nom-language 0.1.0 (MIT)
  • pastey 0.2.3 (Apache-2.0)
  • portable-atomic-util 0.2.7 (Apache-2.0)
  • primal-check 0.3.4 (Apache-2.0)
  • rand_distr 0.6.0 (Apache-2.0)
  • rawpointer 0.2.1 (Apache-2.0)
  • rayon 1.12.0 (Apache-2.0)
  • rayon-core 1.13.0 (Apache-2.0)
  • rustfft 6.4.1 (Apache-2.0)
  • safetensors 0.8.0 (Apache-2.0)
  • scan_fmt 0.2.6 (MIT)
  • simd-adler32 0.3.10 (MIT)
  • strength_reduce 0.2.4 (Apache-2.0)
  • string-interner 0.20.0 (Apache-2.0)
  • tar 0.4.46 (Apache-2.0)
  • tract-core 0.23.4 (Apache-2.0)
  • tract-data 0.23.4 (Apache-2.0)
  • tract-extra 0.23.4 (Apache-2.0)
  • tract-hir 0.23.4 (Apache-2.0)
  • tract-linalg 0.23.4 (Apache-2.0)
  • tract-nnef 0.23.4 (Apache-2.0)
  • tract-onnx 0.23.4 (Apache-2.0)
  • tract-onnx-opl 0.23.4 (Apache-2.0)
  • tract-pulse 0.23.4 (Apache-2.0)
  • tract-pulse-opl 0.23.4 (Apache-2.0)
  • tract-transformers 0.23.4 (Apache-2.0)
  • transpose 0.2.3 (Apache-2.0)
  • unicode-normalization 0.1.25 (Apache-2.0)
  • unicode_categories 0.1.1 (Apache-2.0)
  • xattr 1.6.1 (Apache-2.0)

Removed

  • None

Updated/Changed

bit-set

Before:

  • bit-set 0.8.0 (Apache-2.0)

After:

  • bit-set 0.10.0 (Apache-2.0)
  • bit-set 0.8.0 (Apache-2.0)

bit-vec

Before:

  • bit-vec 0.8.0 (Apache-2.0)

After:

  • bit-vec 0.8.0 (Apache-2.0)
  • bit-vec 0.9.1 (Apache-2.0)

erased-serde

Before:

  • erased-serde 0.4.10 (MIT OR Apache-2.0)

After:

  • erased-serde 0.4.10 (Apache-2.0)

tinyvec

Before:

  • tinyvec 1.11.0 (Zlib OR Apache-2.0 OR MIT)

After:

  • tinyvec 1.11.0 (Apache-2.0)

tinyvec_macros

Before:

  • tinyvec_macros 0.1.1 (MIT OR Apache-2.0 OR Zlib)

After:

  • tinyvec_macros 0.1.1 (Apache-2.0)

typeid

Before:

  • typeid 1.0.3 (MIT OR Apache-2.0)

After:

  • typeid 1.0.3 (Apache-2.0)

zerocopy-derive

Before:

  • zerocopy-derive 0.8.48 (BSD-2-Clause OR Apache-2.0 OR MIT)

After:

  • zerocopy-derive 0.8.48 (Apache-2.0)

Node

Added

  • None

Removed

  • None

Updated/Changed

  • None

Python

Added

  • None

Removed

  • None

Updated/Changed

  • None
Status output
[license-diff] selected languages: rust, node, python
[license-diff] generating current inventory
[license-diff] current: generating Rust inventory
[license-diff] current: Rust inventory complete (503 packages)
[license-diff] current: generating Node inventory
[license-diff] current: Node inventory complete (367 packages)
[license-diff] current: generating Python inventory
[license-diff] current: Python inventory complete (105 packages)
[license-diff] current inventory complete
[license-diff] checking out base ref origin/main into a temporary worktree
[license-diff] base: generating Rust inventory
[license-diff] base: Rust inventory complete (449 packages)
[license-diff] base: generating Node inventory
[license-diff] base: Node inventory complete (367 packages)
[license-diff] base: generating Python inventory
[license-diff] base: Python inventory complete (105 packages)
[license-diff] base inventory complete
[license-diff] removing temporary base worktree
[license-diff] comparing inventories
[license-diff] rendering Markdown output
[license-diff] done

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
…rtifacts

Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
…ifacts

Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
@afourniernv afourniernv added the DO NOT MERGE PR should not be merged; see PR for details label Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO NOT MERGE PR should not be merged; see PR for details lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code Maintenance CI or Build or general repository maintenance size:XXL PR is very large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants