GRM-165: feat: adopt spec-driven CI gates, create_dependency_pr, and pr-review skill
Post-merge / detect-and-configure (push) Successful in 1m2s
Post-merge / release-and-maintain (push) Successful in 2m14s

Co-authored-by: emil User <emil.simeonov@tutanota.com>
This commit was merged in pull request #256.
This commit is contained in:
2026-08-25 01:40:50 +00:00
committed by kireto
parent 9609ef2505
commit eab452ec04
9 changed files with 572 additions and 81 deletions
+19 -1
View File
@@ -12,7 +12,6 @@ Quick reference for devx tools when working on this repo.
| Check CI status | `make devx-pr-status` or `make devx-pr-status PR=42 WAIT=1` |
| Fetch CI failure logs | `make devx-pr-logs` or `make devx-pr-logs PR=42 JOB=quality TAIL=50` |
| Add ready-to-merge label | `make devx-pr-label` or `make devx-pr-label PR=42` |
| Post PR review | `make devx-pr-review PR=42 EVENT=APPROVE BODY="..." CHECKLIST=1,2,3,4,5,6,7,8,9,10,11,12,13` |
| Rebase current branch | `make rebase` |
| Rebase PR via API | `make pr-rebase` or `make pr-rebase PR=42` |
@@ -30,6 +29,25 @@ CI runs a `pre-merge-check` job early (after quality + detect-changes)
that validates branch format, PR title, and Vikunja task match.
This fails fast before expensive molecule tests run.
## Spec-Driven CI Gates (Pre-merge)
Every PR must pass these gates before merge:
| Gate | Module | What it checks |
|------|--------|----------------|
| Spec validation | `devx.ci.validate_spec` | Spec file exists at `docs/specs/<TASK-ID>.md`, has REQ-IDs, all ACs checked |
| PR size | `devx.ci.check_pr_size` | Max 500 lines / 10 files (excludes CHANGELOG, badges, locks) |
Full molecule tests still run on every PR (6 scenarios, all platforms).
## Post-merge Auto-publish + Dependency PR
After merge to master, `post-merge.yml`:
1. Runs release (git-cliff semver, tags, publishes to Gitea PyPI)
2. Auto-creates an infra dependency PR (`devx.ci.create_dependency_pr`)
to bump the pinned grm version in `infra/pyproject.toml`
3. Syncs wiki, updates Vikunja task, pushes badges
## Key Rules
- Never manually merge via API — always use auto-merge with `ready-to-merge` label