Repository navigation
#465 PR-C4: release readiness — minisign signature, per-object licence audit, README - #544
Merged
Merged
Conversation
shipping/license_audit.json records, for each of the 27 bundled objects, the licence text its wheel ships, the version-matched official terms (URL, fetch time, snapshot sha256), whether each grants distribution of that object, the conditions, a status and the open risks. license_audit.py checks every claim against the object's own wheel's files (identical file bytes are not taken as identical terms) and renders THIRD_PARTY.md, which export_third_party_set.py no longer writes. Result of the audit: nvJitLink and cuFile are not in the wheels' 2018 CUDA EULA text but are in the CUDA 13.0 Update 2 EULA's Attachment A; nvshmem is covered by the NVSHMEM 3.4.5 SLA; cuDNN and TensorRT ship texts that differ from the version-matched docs; libgomp ships with no licence text. Distribution status: local-only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Requirements (sm_120, the CUDA 13.0 Update 2 driver floor, glibc 2.39), the verify-then-install steps, the run usage, named limits and where the licences are. Installed at <prefix>/README.txt; the static layout and licenses checks and the package's pinned_tree compare it byte for byte. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
<name>.sha256.minisig signs the digest (tarball + installer) with the trusted comment package=<name> commit=<commit> manifest_sha256=<sha>, so the signature also vouches for the installed MANIFEST.json. The user verifies before installing; install.sh is unchanged. check_shipping_package.py tarball --pubkey adds the fourth release file and a signature check (minisign -V and an independent Ed25519 reader, plus the trusted comment against the tarball's MANIFEST); the MANIFEST records the licence audit and its distribution status. run_package_container.sh verify runs the user's check in Ubuntu 24.04. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gates 1-8, S1-S9, L1-L3 Owner instructions (per-object licence re-audit, test key, user-side verification), the design (what is signed and why, the trusted comment, key management, README), the audit's results and the items left for the owner, the dev trial, and the formal-run contract written before any formal measurement: build + static, licence audit, package + signature (determinism of all four files), the user's verification in Ubuntu 24.04, install from the tarball, the installed tree's EXACT run against PR-C3, G2-2/G2-4, signature controls S1-S9 and audit controls L1-L3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s need not be byte-identical) Formal run r1 at bfd086c7 failed only gate 4's "all four files byte-identical": the tarball, installer and digest were identical, but two minisign signatures of the same digest with the same key differed. The contract's premise (Ed25519 signatures are deterministic) does not hold for the host's minisign 0.12 / libsodium 1.0.22 (container minisign 0.11 is deterministic). Both signatures verify with the same trusted comment. Gate 4 now requires the three package files byte-identical and the second signature to verify under the same key with the same trusted comment. The whole formal run is re-run from scratch (r2); r1 and its FAIL are kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Archive the outgoing canonical (implementation 1927e740d4267aec, the PR-C3 publication) and promote a fresh controlled-host capture (build/runtime_identity, Release, --run-probe --require-complete) at the PR-C4 contract head 992213e. Promoted before the PR-C4 formal run (docs §20.4): the package's MANIFEST records this coordinate, so it must describe the package's source commit. Axes: * implementation MOVED 1927e740d4267aec -> 221cc25330c5422d; files 287 -> 288. Added (1): shipping/license_audit.json (the per-object licence audit). Changed (2): shipping/cmake/install_third_party.cmake (installs README.txt), shipping/CMakeLists.txt (comment only). Removed: none. * environment, decision_surface, identity_semantics, runtime_inputs: unchanged. * probe: re-run fresh (not reused); behavior 2dabed0b, equal to the PR-C3 publication. Probe equality is not an equivalence claim; equivalence stays unproven. check_runtime_identity_staleness.py --mode attested: exit 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-8, S1-S9, L1-L3) r1 (bfd086c7) failed only the original gate-4 four-file determinism (non-deterministic minisign 0.12 signatures; §20.4a). r2, re-run from scratch at bc75dca under the amended contract, PASSES gates 1-8. * Licence audit 4/4: 17 granted in both texts, 6 texts differ, 3 official-only, 1 without shipped text. Status: local-only. * tarball --pubkey 8/8. * The user's verification passes in Ubuntu 24.04 (minisign 0.11). * Install from the tarball: one RENAME_NOREPLACE; the installed MANIFEST sha256 equals the signed one. * The installed tree is EXACT (5316/5316, 7/7, 7/7) and byte-identical to PR-C3. * G2-2/G2-4 pass. * S1-S9 and L1-L3 all as required. Limits: no release key yet, not distributable, the trusted comment must be compared by the user, and --verify still trusts the tree's MANIFEST. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 8, 2026
…re-C4 MANIFEST reading Review of 59de3f2, four P2: * A release-notes release is matched on the object's own component row (RELNOTES_COMPONENT), not on any version on the page: nvidia_cuda_runtime-13.0.88 no longer passes against 13.0 Update 2 (cudart row 13.0.96). * Every official claim that grants distribution must come from a source bound to the object's validated release: the same source, the same archive version, or a matching switcher or tag. Context-only terms (the current CUDA EULA) fail; unversioned sources are accepted only as the object's own release source with a risk recorded. * A grant_* status needs at least one granting official claim, and an object whose shipped text grants cannot be grant_in_official_only. * manifest_head keeps the PR-C3 "reading" for a source commit without the licence audit, so the PR-C3 MANIFEST at 9217ed9 derives exactly again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…§20.1 matching rules The four P2 from the review of 59de3f2: release-notes row matching, official terms bound to the validated release, grant statuses requiring granting official evidence, and the pre-C4 MANIFEST reading. Replayed on r2's artifacts (no new package): * gate 3 still 4/4; * L1-L3 still fail as required; * the review's three false-PASS cases now fail (R1-R3); * the PR-C3 and r2 MANIFESTs derive exactly (R4). The identity is unchanged, so r2 still describes the source. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
chore(provenance): republish the runtime coordinate for #465 PR-C4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase C PR-C4 (scope §6), release readiness. Contract, results and limits:
docs/reference/native_runtime_resolved_config.md§20.Not a distributable release. The licence status is
local-onlyand the release key does not exist yet. Both are owner items, listed below.Licence re-audit, per object (owner instruction 10-08):
shipping/license_audit.json, checked and rendered intoTHIRD_PARTY.mdbyscripts/native/license_audit.py.The MANIFEST now records the audit sha256 and
distribution: local-only.minisign signature:
<name>.sha256.minisigsigns the package digest, which covers the tarball and the installer.package=<name> commit=<sha> manifest_sha256=<sha>, so the installedMANIFEST.jsoncan be checked against a signed value.minisign -V, thensha256sum -c).install.shis byte-identical to PR-C3 (afa5d06a…).check_shipping_package.py tarball --pubkeyadds the fourth file and asignaturecheck:minisign -V, an independent Ed25519 reader, and the trusted comment compared against the MANIFEST.run_package_container.sh verifyruns the user's check in Ubuntu 24.04.README.txtin the tree: sm_120; driver ≥ 580.95.05 (CUDA 13.0 U2 table; verified only on WSL2 616.92); glibc ≥ 2.39; verify → install → run; named limits; licences.Unchanged: stage computation, entrypoint pin, operator library, the 27 vendor objects and
third_party_set.json, launcher, auditor, installer.Formal run
bfd086c7→ FAIL, on one clause only. The original gate 4 required all four release files to be byte-identical across two builds, but host minisign 0.12 (libsodium 1.0.22) signs non-deterministically; container minisign 0.11 does not. Everything else passed.f2ff5700, committed before r2): the three package files must be byte-identical, and the second signature must verify with the same trusted comment.bc75dcab→ PASS, re-run from scratch. Results inresults/465_prc4_release/full_bc75dcab/(not versioned),evaluation.jsondaa17f1c….static12/12 (README included)tree_clean,identity_current;tarball --pubkey8/8; tarballc753496a…, installer and digest identical across builds; second signature verifies with the same trusted comment; MANIFEST = tree,licenseskey correctSignature and comment signature verified+ 2×OKinstall-trace5/5 (oneRENAME_NOREPLACE, 277 mutations in staging);static --manifest13/13;--verify0; installedMANIFEST.jsonsha256 = signedmanifest_sha256runtime3/3; EXACT, 7/7 identicalNegative controls all gave their required result:
verifyand the hostsignaturecheck fail. In S7 the containerverifyfails and the host check failsrelease_setandsignature.sha256sum -cfails. Both steps are needed.manifest_sha256in a validly signed comment passesminisign; only the trusted-comment comparison catches it.--verifypasses a consistently tampered installed tree; the MANIFEST sha256 no longer matches the signed value.Review fixes (review of
59de3f28; fix96bb41c0, docs §20.8)Four P2, all checker coverage gaps, fixed in checker code only. Identity, audit,
THIRD_PARTY.md, README and package are unchanged, so r2 still describes the source.cudart 13.0.88no longer borrows NVRTC's 13.0.88.grant_*status requires a granting official claim. A shipped-text grant cannot begrant_in_official_only.reading, so PR-C3's MANIFEST derives exactly again.Replay on r2's artifacts (
results/465_prc4_release/review_fix_96bb41c0/):official_terms, R2official_terms, R3coverage).tarball --pubkeystays 8/8.For owner review / decision
§4 licence items (
THIRD_PARTY.md→ Open items):Stays
local-onlyuntil you close these.Release key: generate it yourself (
minisign -G, with a password) and addshipping/package/minisign.pubin a separate PR. Key management is in §20.1. No key was committed here; the runs used throwaway test keys.Design points (§20.1):
README.txtis inside the tree.THIRD_PARTY.mdis generated from the audit; the exporter's--noticeis removed.The §20.4a amendment after r1: disclosed in §20.4a / §20.5; r1's FAIL is kept.
Merge order
Review and merge the stacked republish PR into this branch first. That merge is required:
test_runtime_identity_stalenessfails without it.CI on this branch alone fails 4 tests, all in the stale-identity group (
test_runtime_identity_staleness×2,test_research_lock×2: implementation moved, not republished). These are expected until #545 is merged in. All other CI jobs pass.scripts/pre_push.shpassed on the combined head with #545 (5323 passed).🤖 Generated with Claude Code