Compare commits

..
Author SHA1 Message Date
emilandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 53c4823e04 feat: add refactoring label bypass for check_pr_size
PRs with the 'refactoring' label bypass the PR size check, allowing
large but legitimate refactoring PRs. The check_pr_size CLI now accepts
--repo and --pr-number to query PR labels via the Gitea API.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-24 22:06:51 +02:00
emilandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 0de18ebb21 fix: skip remaining repo-specific skill tests in CI
Add _skip_if_repo_missing guard to non-parametrized tests that hardcode
repo names (infra, grm, sso-bridge, mattermost-oidc). These tests only
run when sibling repos are checked out locally.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-24 20:09:40 +02:00
emilandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 83ad963193 fix: skip spec-driven workflow tests when sibling repos not checked out
Add _skip_if_repo_missing guard to skill tests that reference sibling
repos (infra, grm, sso-bridge). In CI, only devx is checked out, so
these tests skip instead of failing with FileNotFoundError.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-24 20:04:14 +02:00
emilandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> aefc22de57 feat: replace pr_review with spec-driven CI gates and pr-review skill
Add validate_spec, check_pr_size, fast_molecule, nightly_gate, and
create_dependency_pr CI modules. Remove the monolithic pr_review module
and its tests. Replace pr_review CI steps with validate_spec + check_pr_size
+ curl-based APPROVE. Add spec-driven-development and pr-review skills.
Remove dead get_reviewer_token. Update translations and AGENTS.md.

Closes DEVX-155

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-08-24 19:56:08 +02:00
8 changed files with 22 additions and 70 deletions
-6
View File
@@ -2,12 +2,6 @@
All notable changes to this project will be documented in this file.
## [0.50.2] - 2026-08-24
### Bug Fixes
- Update check_pr_size usage example with --repo and --pr-number args
## [0.50.1] - 2026-08-15
### Bug Fixes
+9 -9
View File
@@ -16,12 +16,12 @@ quality badges.
[![CI](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions/workflows/ci.yml/badge.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/src/branch/master/LICENSE)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/python.svg)](https://www.python.org/downloads/)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/python.svg)](https://www.python.org/downloads/)
## Why devx?
@@ -87,7 +87,7 @@ extra index and list devx in your dependencies:
```toml
[project]
dependencies = [
"devx>=0.50.2",
"devx>=0.50.1",
]
[tool.pip]
@@ -101,8 +101,8 @@ pip install -e .
```
> **Note:** If your project requires a specific devx version, pin it in
> `dependencies` (for example, `"devx==0.50.2"`) or use a version constraint
> (for example, `"devx>=0.50.2,<0.51"`).
> `dependencies` (for example, `"devx==0.50.1"`) or use a version constraint
> (for example, `"devx>=0.50.1,<0.51"`).
### Optional extras
+8 -8
View File
@@ -12,12 +12,12 @@ project to be reusable across all oblachno-oss repositories.
[![CI](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions/workflows/ci.yml/badge.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/src/branch/master/LICENSE)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/3e50818d1724735423d2e7f1ec42050055524fc5/python.svg)](https://www.python.org/downloads/)
[![Coverage](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/coverage.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Tests](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/tests.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Docs](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/docs.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/wiki)
[![Code Quality](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/quality.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
[![Version](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/version.svg)](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/releases)
[![Python](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/raw/commit/a506e1130cab09747bb881e0fe98093e6bcd8110/python.svg)](https://www.python.org/downloads/)
## Overview
@@ -74,14 +74,14 @@ Add devx to your `pyproject.toml` dependencies and configure the registry:
```toml
[project]
dependencies = [
"devx>=0.50.2",
"devx>=0.50.1",
]
[tool.pip]
extra-index-url = "https://git.oblachno.oblachno.fyi/api/packages/oblachno-oss/pypi/simple"
```
Pin a specific version if needed: `"devx==0.50.2"` or `"devx>=0.50.2,<0.51"`.
Pin a specific version if needed: `"devx==0.50.1"` or `"devx>=0.50.1,<0.51"`.
### Optional extras
-34
View File
@@ -1,34 +0,0 @@
# DEVX-156: Fix commit message format and release new CI modules
## Problem
The DEVX-155 merge commit on master has an invalid format
('DEVX-155: Replace...' missing conventional commit type). This blocks
the post-merge release workflow's `validate_commit_msg` step, preventing
`validate_spec`, `check_pr_size`, `nightly_gate`, and `create_dependency_pr`
from being published to the Gitea PyPI registry. All downstream repos
(grm, infra, sso-bridge) are blocked — their CI fails with
`No module named devx.ci.validate_spec`.
## Approach
Add a trivial user-facing change (version doc comment) with a proper
conventional commit format to trigger the post-merge release workflow.
The release will publish the new CI modules that DEVX-155 introduced.
REQ-1: Add a user-facing change to src/devx/ to trigger release
REQ-2: Ensure the commit message follows conventional format (type: description)
## Test Plan
- Verify post-merge workflow runs successfully after merge
- Verify a new release tag is created (v0.51.0 or similar)
- Verify devx.ci.validate_spec is importable from the published package
## Deploy Plan
- Merge to master via auto-merge workflow
- Post-merge workflow auto-releases and publishes
## Rollback Plan
- Revert the merge commit if release fails
## Acceptance Criteria
- [x] REQ-1: A user-facing change is added to src/devx/
- [x] REQ-2: Commit message follows conventional format
+2 -2
View File
@@ -48,12 +48,12 @@ Add devx to your `pyproject.toml`:
```toml
[project]
dependencies = [
"devx>=0.50.2",
"devx>=0.50.1",
]
[project.optional-dependencies]
dev = [
"devx>=0.50.2",
"devx>=0.50.1",
]
```
+2 -8
View File
@@ -1,9 +1,3 @@
"""devx — reusable development and CI/CD tools for oblachno-oss projects.
"""devx — reusable development and CI/CD tools for oblachno-oss projects."""
Provides CI/CD automation (validate_spec, check_pr_size, nightly_gate,
create_dependency_pr, auto_merge, release, publish), developer tooling
(setup, install_tools, configure_repo, create_task, create_pr), and
molecule testing helpers for Ansible projects.
"""
__version__ = "0.50.2"
__version__ = "0.50.1"
+1 -2
View File
@@ -9,8 +9,7 @@ PRs with the ``refactoring`` label bypass the size check — large but
legitimate refactoring PRs that touch many files in a coordinated way.
Usage:
python -m devx.ci.check_pr_size --base origin/master --head HEAD \\
--repo oblachno-oss/grm --pr-number 123
python -m devx.ci.check_pr_size --base origin/master --head HEAD
In CI, pass ``--github-output`` to set ``pr-size-ok`` and ``pr-size-detail``
for downstream steps.
-1
View File
@@ -3,7 +3,6 @@
"""Validate that a PR has a spec file with required sections and acceptance criteria.
Spec-driven development gate. Runs in CI before expensive jobs.
Used by grm, infra, sso-bridge, and devx itself.
Validates:
1. A spec file exists at ``docs/specs/<TASK-ID>.md`` (TASK-ID extracted from branch).