`INFINITO_PACKAGE_CACHE_MAX_AGE_MIN` was 129600 (90 days), 13× longer than the 7-day `Valid-Until` window Debian and Ubuntu generate by default in their apt `Release` files. Nexus held cached `Release` manifests for 90 days, so once the upstream `Valid-Until` elapsed the manifest stayed in the cache for another ~83 days and every Docker build that ran `apt-get update` against the package-cache aborted with E: Release file for http://deb.debian.org/debian/dists/.../InRelease is expired (invalid since 5h 30min 54s). Drop the default to 8640 minutes (6 days). Stays one day below the 7-day `Valid-Until` so Nexus always re-validates the cached `Release` against upstream before apt would see it expired. The single value still applies to every proxy repo (apt, yum, pypi, npm, gem, go, helm, raw-*), but the `Valid-Until` enforcement only exists in apt — for the other repos the change merely makes the cache 84 days fresher instead of staler, no regression. Update both docs sites that document the default: - docs/contributing/artefact/files/compose.yml.md (env-var table) - docs/contributing/environment/cache.md (operator narrative) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Environment Layer 🌍
This directory contains the shared environment bootstrap layer for Infinito.Nexus scripts. ✨
Its purpose is to keep runtime configuration centralized, deterministic, and easy to reuse across local runs, CI, and container-based execution. 🧭
The design follows simple composition principles so environment state can be loaded safely and consistently without duplicating logic in many places. 🧱
Use the directory-level entrypoint for sourcing this environment context in scripts and automation. ✅
Modules 📦
The directory has two kinds of env modules:
-
Always-on modules are composed by
all.shand SHOULD be sourced by anything that needs the standard project environment (Python interpreter, distro defaults, runtime context, inventory paths, GitHub markers):python.sh,runtime.sh,defaults.sh,inventory.sh,github.sh. -
On-demand modules MUST NOT be composed into
all.shbecause they encode an intent that only makes sense in a specific call path. The deploy-only marker is the canonical example:ci.shexportsINFINITO_MAKE_DEPLOY=1soMODE_CI(defined ingroup_vars/all/01_modes.yml) flips totruefor the duration of a make-driven deploy. It is sourced by every deploy entry-point underscripts/tests/deploy/local/deploy/. Sourcing it fromall.shwould set the marker for unrelatedmake test*ormake build*recipes too, which is exactly what the service-gating contract forbids.