Skip to content

Release: version packages (#92) #268

Release: version packages (#92)

Release: version packages (#92) #268

name: Tier2 Staging Gate
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
tier2-gate:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps chromium
- name: Verify secrets
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
AI_TANGLE_STORAGE_STATE: ${{ secrets.AI_TANGLE_STORAGE_STATE }}
run: |
if [ -z "${OPENAI_API_KEY}" ] || [ -z "${AI_TANGLE_STORAGE_STATE}" ]; then
echo "::warning::Required secrets not available — skipping Tier2 gate"
echo "SKIP_GATE=true" >> "$GITHUB_ENV"
fi
- name: Materialize storage state
if: env.SKIP_GATE != 'true'
env:
AI_TANGLE_STORAGE_STATE: ${{ secrets.AI_TANGLE_STORAGE_STATE }}
run: |
mkdir -p ./.auth
printf '%s' "${AI_TANGLE_STORAGE_STATE}" > ./.auth/ai-tangle-tools.json
node -e "JSON.parse(require('node:fs').readFileSync('./.auth/ai-tangle-tools.json','utf8'))"
- name: Run repeated staging gate
if: env.SKIP_GATE != 'true'
run: |
pnpm bench:tier2:repeat -- \
--out ./agent-results/tier2-staging \
--model gpt-5.2 \
--storage-state ./.auth/ai-tangle-tools.json \
--repetitions 2 \
--min-full-pass-rate 1 \
--min-fast-pass-rate 1 \
--max-avg-turns 45 \
--max-avg-duration-ms 300000
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Upload gate artifacts
if: always() && env.SKIP_GATE != 'true'
uses: actions/upload-artifact@v4
with:
name: tier2-staging-results
path: ./agent-results/tier2-staging