diff --git a/.github/workflows/process-reconcile.yml b/.github/workflows/process-reconcile.yml new file mode 100644 index 00000000..d62e998a --- /dev/null +++ b/.github/workflows/process-reconcile.yml @@ -0,0 +1,58 @@ +name: Сверка очереди ревью +run-name: "reconcile process queue · ${{ github.event_name }}" + +on: + schedule: + - cron: '7,37 * * * *' + workflow_dispatch: + inputs: + apply: + description: "Повторно будить потерянные запросы и публиковать диагностику" + required: true + type: boolean + default: true + +permissions: + actions: read + contents: read + issues: read + +jobs: + reconcile: + name: "Один снимок S4/S7 без polling модели" + runs-on: ubuntu-latest + timeout-minutes: 10 + concurrency: + group: process-reconcile + cancel-in-progress: false + steps: + # Расписание читается из main, а исполняемый reconciler — из dev: так + # после штатного merge действует та же версия кода, которую проверил CI. + - uses: actions/checkout@v7 + with: + ref: dev + fetch-depth: 1 + persist-credentials: false + - uses: actions/setup-node@v7 + with: + node-version: 22 + - name: Сопоставить labels, requests, runs и sealed evidence + env: + GH_TOKEN: ${{ secrets.HP_PROCESS_TOKEN }} + REPO: ${{ github.repository }} + APPLY: ${{ github.event_name == 'schedule' || inputs.apply == true }} + run: | + mkdir -p artifacts/process-reconcile + node scripts/process-reconcile.mjs \ + --repo "$REPO" \ + --apply="$APPLY" \ + --max-actions=5 \ + --output=artifacts/process-reconcile/summary.json + - name: Опубликовать компактный machine-readable итог + if: always() + uses: actions/upload-artifact@v4 + with: + name: process-reconcile-${{ github.run_id }}-${{ github.run_attempt }} + path: artifacts/process-reconcile/summary.json + if-no-files-found: error + retention-days: 14 diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml index ddb522a8..6ca0440d 100644 --- a/.github/workflows/process.yml +++ b/.github/workflows/process.yml @@ -1,4 +1,5 @@ name: Ревью-конвейер +run-name: "process #${{ github.event.issue.number }} · ${{ github.event.label.name }} · ${{ github.event.issue.title }}" # Событийный конвейер процесса (PROCESS.md). Смена статусной метки — это # сообщение: она порождает событие, событие запускает следующий шаг.