Drop the `DEPLOY_CI_EXPORTS := INFINITO_MAKE_DEPLOY=1` declaration from the Makefile and the per-recipe `$(DEPLOY_CI_EXPORTS)` prefix from every `deploy-*` target. The marker now lives in a dedicated on-demand env module `scripts/meta/env/ci.sh` and is sourced by every deploy entry-point under `scripts/tests/deploy/local/deploy/*.sh`, which keeps the export aligned with the rest of the project's env layer (`scripts/meta/env/all.sh` and friends). `ci.sh` is intentionally NOT composed into `all.sh`: the marker flips `MODE_CI` to `true` and MUST surface only when a deploy actually runs, not for unrelated `make test*` / `make build*` recipes that share the same `BASH_ENV`. `docs/requirements/006-playwright-service-gated-tests.md` and the `scripts/meta/env/README.md` document the new SPOT and the always-on / on-demand distinction. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.5 KiB
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 requirement 006 forbids.