$ErrorActionPreference = "Stop" $PSNativeCommandUseErrorActionPreference = $true python scripts/rc_readiness.py Push-Location backend try { python -m compileall -q src tests python -m ruff check src tests python -m mypy src python -m pytest -q } finally { Pop-Location } Push-Location frontend try { npm test npm run build } finally { Pop-Location } node --test clients/typescript/modelforge-client.test.mjs Push-Location node-agent try { python -m compileall -q src tests python -m ruff check src tests python -m mypy src python -m pytest -q } finally { Pop-Location } Push-Location runtime-worker try { python -m compileall -q src tests python -m ruff check src tests python -m mypy src python -m pytest -q } finally { Pop-Location } $composeValidationEnvironment = [ordered]@{ MODELFORGE_POSTGRES_DB = "modelforge" VITE_API_BASE_URL = "http://127.0.0.1:8000" MODELFORGE_CORS_ORIGINS = "http://127.0.0.1:3000" MODELFORGE_VERSION = (Get-Content VERSION -Raw).Trim() MODELFORGE_OPERATOR_API_KEY = "compose-validation-operator-not-for-production" MODELFORGE_BACKUP_ENCRYPTION_KEY = "compose-validation-backup-not-for-production" MODELFORGE_POSTGRES_ADMIN_PASSWORD = "compose-validation-admin" MODELFORGE_MIGRATION_DB_PASSWORD = "compose-validation-owner" MODELFORGE_RUNTIME_DB_PASSWORD = "compose-validation-runtime" MODELFORGE_RUNTIME_DATABASE_URL = "postgresql+psycopg://modelforge_runtime:compose-validation-runtime@postgres:5432/modelforge" MODELFORGE_MIGRATION_DATABASE_URL = "postgresql+psycopg://modelforge:compose-validation-owner@postgres:5432/modelforge" MODELFORGE_AGENT_CA_CERT_PATH = "./validation-ca.crt" MODELFORGE_AGENT_CONTROL_PLANE_HOST_ADDRESS = "192.0.2.10" } $previousComposeEnvironment = @{} foreach ($name in $composeValidationEnvironment.Keys) { $previousComposeEnvironment[$name] = [Environment]::GetEnvironmentVariable($name, "Process") [Environment]::SetEnvironmentVariable( $name, $composeValidationEnvironment[$name], "Process" ) } try { docker compose --env-file .env.example -f docker-compose.yml -f docker-compose.production.yml config --quiet docker compose --env-file .env.example -f docker-compose.yml -f docker-compose.backup.yml config --quiet docker compose --env-file .env.example -f docker-compose.yml -f docker-compose.dr.yml config --quiet docker compose --env-file .env.example -f docker-compose.yml -f docker-compose.node-recovery.yml config --quiet docker compose --env-file .env.example config --quiet docker compose --env-file .env.example -f docker-compose.yml -f docker-compose.gpu.yml config --quiet docker compose --env-file .env.example -f docker-compose.node-agent.yml config --quiet docker compose --env-file .env.example -f docker-compose.node-agent.yml -f docker-compose.runtime-worker.yml config --quiet docker compose --env-file .env.example -f docker-compose.node-agent.yml -f docker-compose.node-agent.private-ca.yml config --quiet docker compose --env-file .env.example -f docker-compose.node-agent.yml -f docker-compose.node-agent.private-ca.yml -f docker-compose.runtime-worker.yml -f docker-compose.runtime-worker.private-ca.yml config --quiet } finally { foreach ($name in $composeValidationEnvironment.Keys) { [Environment]::SetEnvironmentVariable( $name, $previousComposeEnvironment[$name], "Process" ) } } Write-Host "ModelForge component and Compose checks passed."