# Python Environment And Package Policy Use `uv` for all Python workflows in this repository. ## Rules - Always run Python commands with `uv run`. - Always add dependencies with `uv add`. - Use `uv venv` for virtual environment setup/management. - Do not use `pip`, `pip3`, `python -m pip`, `virtualenv`, or `python -m venv`. - Do not install dependencies outside `uv`. ## Examples - Run app: `uv run python main.py` - Add runtime dependency: `uv add requests` - Add dev dependency: `uv add --dev pytest` # Test Coverage Policy Use `pytest-cov` via `uv` for coverage checks. ## Rules - If coverage flags are needed and `pytest-cov` is missing, install it with `uv add --dev pytest-cov`. - For the workspace package, install coverage tooling with `uv add --package geomrf-engine --dev pytest-cov`. - Run coverage with `uv run pytest ... --cov=...`. - Because both root and `geomrf-engine` use a `tests` package name, run coverage in two passes and combine reports instead of a single mixed pytest invocation. ## Coverage command pattern - Orchestrator pass: `COVERAGE_FILE=.coverage.orch uv run pytest tests --cov=satsim_orch --cov-report=` - Geo engine pass: `COVERAGE_FILE=.coverage.geomrf uv run --package geomrf-engine pytest geomrf-engine/tests --cov=geomrf_engine --cov-report=` - Combine/report: `uv run coverage combine .coverage.orch .coverage.geomrf && uv run coverage report -m` # OMNeT++/INET Environment Policy Use `opp_env` for OMNeT++/INET install and environment management in this repository. ## Rules - Use `opp_env` to install/manage OMNeT++ and INET versions. - Do not rely on ad-hoc/manual OMNeT++ or INET installs for project workflows. - Keep OMNeT++/INET version selection pinned and reproducible across dev and CI. ## Scope boundary - Python dependency and execution workflows remain `uv`-managed. - OMNeT++/INET toolchain workflows are `opp_env`-managed. # Legacy Code Reuse Policy If functionality from `old_code/` is needed: - Do not import or execute from `old_code/` directly. - Copy the required snippet(s) into a new file under the active codebase. - Adapt and maintain the copied code in the active module only. # Sandbox / Network Restriction Policy If a task is blocked by sandbox or network restrictions: - Stop immediately and do not spend tokens repeatedly trying to bypass restrictions. - Clearly tell the user that we are in a sandbox-restricted environment. - Ask the user for permission before attempting any sandbox breakout or elevated access.