From d162076131021e8e2d83d662844f58315af428e2 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:54:02 +0500 Subject: [PATCH 1/7] chore: add local quality make targets --- Makefile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 82fef40..c37127d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PYTHON ?= python -.PHONY: bootstrap validate-config dry-run test +.PHONY: bootstrap validate-config dry-run test lint typecheck quality bootstrap: $(PYTHON) -m alpha_research.cli.main bootstrap @@ -13,3 +13,11 @@ dry-run: test: $(PYTHON) -m pytest + +lint: + $(PYTHON) -m ruff check src tests + +typecheck: + $(PYTHON) -m mypy src/alpha_research + +quality: lint typecheck test From be2bafe089eaf8420b32165fd595268f27931b03 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:54:13 +0500 Subject: [PATCH 2/7] chore: add release verification make targets --- Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c37127d..bf81bed 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PYTHON ?= python -.PHONY: bootstrap validate-config dry-run test lint typecheck quality +.PHONY: bootstrap validate-config dry-run test lint typecheck quality release-verify configured-local-smoke bootstrap: $(PYTHON) -m alpha_research.cli.main bootstrap @@ -21,3 +21,9 @@ 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 From bb1dbfe51aea2a7ad451191a69f8e91ab4fabc93 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:54:27 +0500 Subject: [PATCH 3/7] ci: add release verification workflow shell --- .github/workflows/release_verification.yml | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/release_verification.yml diff --git a/.github/workflows/release_verification.yml b/.github/workflows/release_verification.yml new file mode 100644 index 0000000..6037176 --- /dev/null +++ b/.github/workflows/release_verification.yml @@ -0,0 +1,34 @@ +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 From 0b1d2420e0bbcf44b7ed46ee47e758163e354784 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:54:37 +0500 Subject: [PATCH 4/7] ci: add lint and typecheck steps --- .github/workflows/release_verification.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release_verification.yml b/.github/workflows/release_verification.yml index 6037176..1078efe 100644 --- a/.github/workflows/release_verification.yml +++ b/.github/workflows/release_verification.yml @@ -32,3 +32,9 @@ jobs: 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 From 47751e648fc69694c3ae9af24e381307e8592ff0 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:54:48 +0500 Subject: [PATCH 5/7] ci: add tests and release bundle verification --- .github/workflows/release_verification.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release_verification.yml b/.github/workflows/release_verification.yml index 1078efe..f2d994f 100644 --- a/.github/workflows/release_verification.yml +++ b/.github/workflows/release_verification.yml @@ -38,3 +38,9 @@ jobs: - 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 . From ba760ae224123f372f2fd523ae4c6e37d601a155 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:54:58 +0500 Subject: [PATCH 6/7] ci: add configured local smoke validation --- .github/workflows/release_verification.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/release_verification.yml b/.github/workflows/release_verification.yml index f2d994f..d45cd66 100644 --- a/.github/workflows/release_verification.yml +++ b/.github/workflows/release_verification.yml @@ -44,3 +44,17 @@ jobs: - 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 From d4c3fc61d6e48a634ec7e3b8b3f5c73dc3e8f466 Mon Sep 17 00:00:00 2001 From: Akmal Date: Sat, 9 May 2026 16:55:14 +0500 Subject: [PATCH 7/7] docs: document release verification checks --- README.md | 1 + docs/status/quality_gates.md | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/status/quality_gates.md diff --git a/README.md b/README.md index 89baae7..b977fe2 100644 --- a/README.md +++ b/README.md @@ -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`. diff --git a/docs/status/quality_gates.md b/docs/status/quality_gates.md new file mode 100644 index 0000000..6df9686 --- /dev/null +++ b/docs/status/quality_gates.md @@ -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.