Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/release_verification.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: release-verification

on:
pull_request:
push:
branches:
- master

concurrency:
group: release-verification-${{ github.ref }}
cancel-in-progress: true

jobs:
release-verification:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-3.12-${{ hashFiles('requirements.lock', 'requirements-dev.lock') }}
restore-keys: |
${{ runner.os }}-pip-3.12-

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.lock -r requirements-dev.lock

- name: Ruff lint
run: python -m ruff check src tests

- name: Mypy typecheck
run: python -m mypy src/alpha_research

- name: Unit tests
run: python -m pytest tests/unit

- name: Release bundle verification
run: python ./scripts/verify_release_bundle.py --root .

- name: Configured local smoke
run: python ./scripts/run_release_smoke.py --root . --mode configured-local

- name: Upload smoke artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: configured-local-smoke
path: |
artifacts/
reports/
outputs/
if-no-files-found: ignore
16 changes: 15 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PYTHON ?= python

.PHONY: bootstrap validate-config dry-run test
.PHONY: bootstrap validate-config dry-run test lint typecheck quality release-verify configured-local-smoke

bootstrap:
$(PYTHON) -m alpha_research.cli.main bootstrap
Expand All @@ -13,3 +13,17 @@ dry-run:

test:
$(PYTHON) -m pytest

lint:
$(PYTHON) -m ruff check src tests

typecheck:
$(PYTHON) -m mypy src/alpha_research

quality: lint typecheck test

release-verify:
$(PYTHON) ./scripts/verify_release_bundle.py --root .

configured-local-smoke:
$(PYTHON) ./scripts/run_release_smoke.py --root . --mode configured-local
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,4 @@ python .\scripts\run_release_smoke.py --root . --mode live-public
Для локального воспроизводимого прогона есть отдельный runbook: `docs/runbooks/reproducible_local_runbook.md`.
Для отдельного тяжелого smoke-прогона есть workflow `.github/workflows/release_smoke.yml`.
Для честной сверки реализации со спецификацией есть `docs/status/spec_coverage_map.yaml` и `docs/status/spec_gap_audit.md`.
Quality gates и локальные эквиваленты CI описаны в `docs/status/quality_gates.md`.
25 changes: 25 additions & 0 deletions docs/status/quality_gates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Quality gates

The repository has two CI paths:

- `ci.yml` runs the broad lint, type, test, integration, leakage, and configured
local smoke matrix.
- `release_verification.yml` is the focused pull request path for release
evidence: install, lint, typecheck, unit tests, release bundle verification,
and configured-local smoke.

## Local equivalents

| CI step | Local command |
| --- | --- |
| Ruff lint | `make lint` |
| Mypy typecheck | `make typecheck` |
| Unit/default tests | `make test` |
| Release bundle verification | `make release-verify` |
| Configured local smoke | `make configured-local-smoke` |

## Review expectations

Run the focused path for changes touching pipeline orchestration, configured
adapters, release manifests, reporting, or status artifacts. For docs-only
changes, a markdown review is enough when no command contract changes.
Loading