# Cleanup stale claims for autonomous multi-agent workflow. # # Запускается каждые 30 минут (cron). Освобождает issues застрявшие в # `status/wip` дольше 4 часов. См. `scripts/cleanup-stale-claims.sh`. # # Secrets: # FORGEJO_BOT_QA_TOKEN — bot-qa PAT (write:issue scope нужен). # Можно использовать любой bot-PAT с write:issue, но bot-qa имеет минимум прав. name: cleanup-stale-claims on: schedule: # Каждые 30 минут UTC - cron: '*/30 * * * *' workflow_dispatch: {} # manual run возможен через UI concurrency: group: stale-claims cancel-in-progress: false jobs: cleanup: runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Checkout repo uses: actions/checkout@v4 - name: Diagnostic — runner environment run: | echo "=== runner environment ===" echo "shell: $SHELL" echo "bash: $(bash --version | head -1)" echo "python3: $(python3 --version 2>&1 || echo 'NOT INSTALLED')" echo "curl: $(curl --version | head -1)" echo "mktemp: $(mktemp --version | head -1 2>&1 || echo 'no --version')" echo "pwd: $(pwd)" echo "ls scripts/: $(ls scripts/ 2>&1)" echo "script exists: $(test -f scripts/cleanup-stale-claims.sh && echo yes || echo no)" - name: Run cleanup script env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_BOT_QA_TOKEN }} FORGEJO_URL: https://git.gendsgn.ru FORGEJO_REPO: lekss361/gendesign STALE_HOURS: 4 run: | echo "=== env check ===" echo "FORGEJO_TOKEN length: ${#FORGEJO_TOKEN}" echo "FORGEJO_URL: $FORGEJO_URL" echo "FORGEJO_REPO: $FORGEJO_REPO" echo "STALE_HOURS: $STALE_HOURS" echo "=== check token works ===" curl -sS -H "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_URL/api/v1/user" | head -c 200 echo "" echo "=== run script with -x trace ===" chmod +x scripts/cleanup-stale-claims.sh bash -x scripts/cleanup-stale-claims.sh