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 may live, how that is checked, and how to keep restores deterministic and offline-friendly.
Layout (authoritative)
~/.nuget/packages/— default system-wide NuGet package cache (the global packages folder;dotnet nuget locals global-packages --listprints it). Override it explicitly withNUGET_PACKAGESwhen preparing a bounded offline cache. No build, pack or tooling path uses a repo-local cache;/.nuget/stays git-ignored so a stray one is never committed.devops/offline/— air-gap inputs, including thestellaops-contractsNuGet folder feed (devops/offline/nuget/contract-packages/).- Committed binaries live only under the reviewed roots listed in
.gitea/scripts/validate/verify-binaries.sh(for exampledevops/plugins/,devops/offline/, test fixtures and benchmark corpora undersrc/, and doc samples). Each root carries its reason in the script.
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.org,stellaops(internal feed) andstellaops-contracts(the committed contract-package folder 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. A binary that must be committed goes under one of the reviewed roots; adding a root is a reviewed change to
verify-binaries.shthat names what lives there and why it is committed. - A third-party binary passes the dependency and license gate first (
docs/legal/LICENSE-COMPATIBILITY.md,docs/legal/THIRD-PARTY-DEPENDENCIES.md,NOTICE.md).
Automation & Integrity
- Run
bash .gitea/scripts/validate/verify-binaries.shlocally;--self-testproves the detector still detects. CI runs both in.gitea/workflows/repo-hygiene-verify.ymlon every pull request and every push tomain. - NuGet restore uses the system-wide cache unless
NUGET_PACKAGESis set.
Housekeeping
- Record binary additions and removals in the current sprint’s Execution Log.
