name: Production Readiness on: pull_request: push: branches: - main - master jobs: backend-contracts: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install backend dependencies run: | python -m pip install --upgrade pip pip install -r backend/requirements.txt pip install pytest - name: Run backend contract tests run: | PYTHONPATH="$PWD" python -m pytest \ backend/tests/test_auth_tenant_contract.py \ backend/tests/test_canonical_crm_auth.py \ backend/tests/test_canonical_crm_tenant_scoping.py \ backend/tests/test_dream_weaver_gateway_auth.py \ backend/tests/test_migrations_and_observability.py \ backend/tests/test_surface_route_tenant_scoping.py webos-typecheck: runs-on: ubuntu-latest defaults: run: working-directory: app steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" cache: npm cache-dependency-path: app/package-lock.json - name: Install WebOS dependencies run: npm ci - name: Typecheck WebOS run: npx tsc --noEmit ipad-parse: runs-on: macos-15 steps: - uses: actions/checkout@v4 - name: Parse active iPad Swift sources run: | swiftc -frontend -parse \ iOS/velocity-ipad/velocity/App/ContentView.swift \ iOS/velocity-ipad/velocity/Features/Clients/ClientsView.swift \ iOS/velocity-ipad/velocity/Features/Imports/ImportsView.swift \ iOS/velocity-ipad/velocity/Core/Networking/VelocityAPIClient.swift \ iOS/velocity-ipad/velocity/Core/State/AppStore.swift \ iOS/velocity-ipad/velocityTests/VelocitySmokeTests.swift