Release packaging: prove a clean native Rust artifact with no CLR dependency #106

Closed
opened 2026-08-08 08:26:28 +00:00 by hugo · 1 comment
Owner

Objective

Build and inspect release crates/binaries to prove the clean-reimplementation constraint.

Deliverables

  • Audit Cargo metadata, symbols, linked libraries, packaged files, runtime process behavior, and network/service dependencies.
  • Reject dotnet/Mono/CLR hosting APIs, LibreMetaverse assemblies, generated FFI bindings, helper subprocesses, RPC bridges, and fallback downloads.
  • Verify installation/run on clean machines with only documented Rust/native prerequisites.

Validation

  • Automated artifact audit passes every binary/package.
  • Runtime smoke confirms no CLR/C# process or bridge is loaded/invoked.
  • Published source packages build without the reference checkout.

Prerequisite

All implementation and program milestones are complete with their fixed parity suites green.

Project constraints

  • The released implementation is entirely native Rust and must pass the explicit no-CLR/no-bridge artifact audit.
  • Do not weaken API coverage or semantic parity to satisfy hardening, performance, or packaging goals.
  • Preserve reproducible evidence, update release documentation, and keep all default/live destructive boundaries explicit.
## Objective Build and inspect release crates/binaries to prove the clean-reimplementation constraint. ## Deliverables - Audit Cargo metadata, symbols, linked libraries, packaged files, runtime process behavior, and network/service dependencies. - Reject dotnet/Mono/CLR hosting APIs, LibreMetaverse assemblies, generated FFI bindings, helper subprocesses, RPC bridges, and fallback downloads. - Verify installation/run on clean machines with only documented Rust/native prerequisites. ## Validation - Automated artifact audit passes every binary/package. - Runtime smoke confirms no CLR/C# process or bridge is loaded/invoked. - Published source packages build without the reference checkout. ## Prerequisite All implementation and program milestones are complete with their fixed parity suites green. ## Project constraints - The released implementation is entirely native Rust and must pass the explicit no-CLR/no-bridge artifact audit. - Do not weaken API coverage or semantic parity to satisfy hardening, performance, or packaging goals. - Preserve reproducible evidence, update release documentation, and keep all default/live destructive boundaries explicit.
hugo added this to the 12 - Hardening and release milestone 2026-08-08 08:26:28 +00:00
hugo added the enhancement label 2026-08-08 08:26:28 +00:00
Author
Owner

Implemented and verified in commit dceb394 (pushed to main).

Implementation:

  • Added a fail-closed Rust artifact auditor covering the complete 16-package release/source inventory and all 10 shipped programs.
  • Audits locked Cargo metadata/closure, versioned internal dependencies, package archive contents, unsafe/special entries, managed payload markers, native FFI allowlists, ELF/PE/Mach-O links/imports, declared service boundaries, and runtime helper-process behavior.
  • Builds every extracted .crate library/binary offline in a fresh temporary workspace with a deliberately nonexistent reference checkout.
  • Runs every binary help path plus live-grid-smoke audit/fake, OSD conversion, and fake WebRTC smokes after removing grid credentials and trapping CLR/Mono/compiler/download helpers.
  • Removed the programs build.rs git subprocess; source identity is now explicit build input.
  • Made package docs/avatar runtime data self-contained, versioned all internal package dependencies, and added the OpenJPEG/Opus adapters to the publishable release set.
  • Added an ubuntu-latest Rust 1.97.1 clean-machine workflow, documented native prerequisites/reproduction, and refreshed dependency/license/distribution provenance.

Issue review against acceptance criteria:

  • Cargo metadata, symbols/imports, linked libraries, packaged files, runtime behavior, and network/service boundaries are all represented in policy/evidence.
  • CLR/Mono/LibreMetaverse assembly markers, dynamic bridge hooks, helper subprocesses, RPC frameworks, managed package files, unsafe archive entries, and runtime fallback helpers are rejected.
  • All 16 package archives built offline without the reference checkout; all 10 release binaries were inspected and smoke-tested.

Validation:

  • cargo package --locked --allow-dirty --no-verify --offline (all 16 packages): pass
  • cargo build --locked --release -j1 -p libremetaverse-programs --bins (all 10 binaries, Rust 1.97.1): pass
  • artifact-audit final clean-room rebuild: pass (9m27s)
  • cargo test --locked -p metacrate-ci-matrix --lib: 17 passed
  • cargo clippy --locked -p metacrate-ci-matrix --all-targets -- -D warnings: pass
  • cargo fmt --all -- --check: pass
  • documentation, dependency, provenance, release-matrix, and diff-hygiene audits: pass

Committed evidence: ci/evidence/artifact-audit.json records clean_package_build=true, reference_checkout_required=false, helper_processes_invoked=[], forbidden_findings=0, exact package/binary SHA-256 values, imports, links, and smoke results. This issue intentionally used credential-free offline/fake modes; no .env credentials or live grid were needed for a no-runtime-dependency release audit.

Implemented and verified in commit dceb394 (pushed to main). Implementation: - Added a fail-closed Rust artifact auditor covering the complete 16-package release/source inventory and all 10 shipped programs. - Audits locked Cargo metadata/closure, versioned internal dependencies, package archive contents, unsafe/special entries, managed payload markers, native FFI allowlists, ELF/PE/Mach-O links/imports, declared service boundaries, and runtime helper-process behavior. - Builds every extracted .crate library/binary offline in a fresh temporary workspace with a deliberately nonexistent reference checkout. - Runs every binary help path plus live-grid-smoke audit/fake, OSD conversion, and fake WebRTC smokes after removing grid credentials and trapping CLR/Mono/compiler/download helpers. - Removed the programs build.rs git subprocess; source identity is now explicit build input. - Made package docs/avatar runtime data self-contained, versioned all internal package dependencies, and added the OpenJPEG/Opus adapters to the publishable release set. - Added an ubuntu-latest Rust 1.97.1 clean-machine workflow, documented native prerequisites/reproduction, and refreshed dependency/license/distribution provenance. Issue review against acceptance criteria: - Cargo metadata, symbols/imports, linked libraries, packaged files, runtime behavior, and network/service boundaries are all represented in policy/evidence. - CLR/Mono/LibreMetaverse assembly markers, dynamic bridge hooks, helper subprocesses, RPC frameworks, managed package files, unsafe archive entries, and runtime fallback helpers are rejected. - All 16 package archives built offline without the reference checkout; all 10 release binaries were inspected and smoke-tested. Validation: - cargo package --locked --allow-dirty --no-verify --offline (all 16 packages): pass - cargo build --locked --release -j1 -p libremetaverse-programs --bins (all 10 binaries, Rust 1.97.1): pass - artifact-audit final clean-room rebuild: pass (9m27s) - cargo test --locked -p metacrate-ci-matrix --lib: 17 passed - cargo clippy --locked -p metacrate-ci-matrix --all-targets -- -D warnings: pass - cargo fmt --all -- --check: pass - documentation, dependency, provenance, release-matrix, and diff-hygiene audits: pass Committed evidence: ci/evidence/artifact-audit.json records clean_package_build=true, reference_checkout_required=false, helper_processes_invoked=[], forbidden_findings=0, exact package/binary SHA-256 values, imports, links, and smoke results. This issue intentionally used credential-free offline/fake modes; no .env credentials or live grid were needed for a no-runtime-dependency release audit.
hugo closed this issue 2026-08-12 04:58:12 +00:00
Sign in to join this conversation.