name: self-test

on:
  push:
    branches: ['**']
    tags: ['v*']
  pull_request:

jobs:
  tier1:
    name: Tier 1 static lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node 20
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Run rdc:self-test --strict (Tier 1)
        # Tier 2 requires headless claude + clauth daemon — not available in standard CI.
        # Tier 1 catches the backtick-drift + frontmatter class of bugs.
        run: node scripts/self-test.mjs --strict

  tier2-gate:
    name: Tier 2 behavioral (tag releases only)
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/v')
    needs: tier1
    env:
      ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node 20
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install claude CLI
        if: env.ANTHROPIC_API_KEY != ''
        run: npm install -g @anthropic-ai/claude-code

      - name: Run rdc:self-test --tier2 --quick (Tier 2)
        if: env.ANTHROPIC_API_KEY != ''
        # Runs each manifest in --quick mode. Skips long-running (slow:true) tests.
        # Requires: ANTHROPIC_API_KEY secret set in repo settings.
        # Note: check-cwd.js hook must allow RDC_TEST=1 sessions (see guides/agent-bootstrap.md § Known blocker).
        run: node scripts/self-test.mjs --tier2 --quick
        env:
          RDC_TEST: '1'

      - name: Skip Tier 2 when Claude API key is unavailable
        if: env.ANTHROPIC_API_KEY == ''
        run: echo "Skipping Tier 2 behavioral tests because ANTHROPIC_API_KEY is not configured for this repository."
