name: Full verification on: push: branches: - feature/ai-brain-router workflow_dispatch: jobs: application: runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 11.25.0 - uses: actions/setup-node@v4 with: node-version: 22 - run: pnpm install --frozen-lockfile - name: Core and simulation tests run: node scripts/test-core.mjs - name: Production build run: pnpm build - name: Validate deployment shell scripts run: | bash -n deploy/playable/*.sh bash -n deploy/pc-lab/*.sh - name: Validate Windows PowerShell helpers shell: pwsh run: | $ErrorActionPreference = 'Stop' $files = Get-ChildItem deploy/pc-lab/*.ps1 foreach ($file in $files) { $tokens = $null $errors = $null [System.Management.Automation.Language.Parser]::ParseFile($file.FullName, [ref]$tokens, [ref]$errors) | Out-Null if ($errors.Count -gt 0) { $errors | ForEach-Object { Write-Error $_.Message } throw "PowerShell parse failed: $($file.Name)" } } - name: Validate ALE bridge Lua syntax run: | sudo apt-get update -qq sudo apt-get install -y lua5.4 luac5.4 -p ale/azerothai_bridge.lua - name: Lint (advisory while prototype debt is cleaned up) continue-on-error: true run: pnpm lint local-brain: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 11.25.0 - uses: actions/setup-node@v4 with: node-version: 22 - run: pnpm install --frozen-lockfile - name: Install Ollama run: curl -fsSL https://ollama.com/install.sh | sh - name: Start Ollama run: | nohup ollama serve >/tmp/ollama.log 2>&1 & for i in {1..30}; do if curl -fsS http://127.0.0.1:11434/api/tags >/dev/null; then exit 0; fi sleep 2 done cat /tmp/ollama.log exit 1 - name: Pull Qwen3.5 4B run: ollama pull qwen3.5:4b - name: Run one real AzerothAI brain decision env: OLLAMA_URL: http://127.0.0.1:11434 MODEL: qwen3.5:4b run: node scripts/smoke-brain.mjs