Binary Prerequisites & Offline Layout
For developers and release engineers who add, pin, or refresh binary dependencies in the Stella Ops monorepo, and for anyone preparing an offline / air-gapped build. It defines where binaries live, how integrity manifests are maintained, and how to keep restores deterministic and offline-friendly.
Layout (authoritative)
~/.nuget/packages/— default system-wide NuGet package cache. Override it explicitly withNUGET_PACKAGESwhen preparing a bounded offline cache; repo-local.nuget/directories are ignored scratch and are not the default restore authority.devops/manifests/— binary integrity manifests (e.g.,binary-plugins.manifest.json).devops/offline/feeds/— air-gap bundles (tarballs, OCI layers, SBOM packs) registered inmanifest.json.- Module-owned binaries (currently
plugins/,tools/,deploy/,ops/) are tracked for integrity indevops/manifests/until relocated.
Adding or updating NuGet packages
- Run
dotnet restore, which populates the active global packages folder (normally~/.nuget/packages/) from the sources inNuGet.config. - Never add new feeds to
nuget.configwithout review; the configured sources arenuget.organdstellaops(internal feed). - For offline builds, pre-populate a bounded package cache from a network-connected machine and point
NUGET_PACKAGESat that cache in the air-gapped environment.
Adding other binaries
- Prefer building from source; if you must pin a binary, drop it under
devops/offline/and append an entry with SHA-256, origin URL, version, and intended consumer. - For module-owned binaries (e.g., plugins), record the artefact in
devops/manifests/binary-plugins.manifest.jsonuntil it can be rebuilt deterministically as part of CI.
Automation & Integrity
- Run
scripts/update-binary-manifests.pyto refresh manifests after adding binaries. - Run
scripts/verify-binaries.shlocally; CI executes it on every PR/branch to block binaries outside approved roots. - CI also re-runs the manifest generator and fails if the manifests would change — commit regenerated manifests as part of the change.
- NuGet restore uses the system-wide cache unless
NUGET_PACKAGESis set. A stale repo-local.nuget/cache can be removed after confirmingdotnet nuget locals global-packages --listpoints elsewhere. - For offline enforcement, set
OFFLINE=1(CI should fail if it reachesnuget.orgwithoutALLOW_REMOTE=1).
Housekeeping
- Refresh manifests when binaries change and record the update in the current sprint’s Execution Log.
