diff --git a/.claude/rules/git-pr.md b/.claude/rules/git-pr.md index 8a9d769c..c43b6644 100644 --- a/.claude/rules/git-pr.md +++ b/.claude/rules/git-pr.md @@ -78,29 +78,18 @@ Closes #N 2. `state == merged` → stop polling 3. Новый review/comment: `mcp__forgejo__list_pr_reviews` / `list_issue_comments`. Парсь marker `` - **SHA guard**: `marker.sha7 == head.sha[:7]` — иначе устаревший approval до fixup-push, игнорируй - - **Scope guard** (см. ниже): если blocked paths → ping user, не auto-merge - - `verdict=approve` + SHA match + scope OK → `mcp__forgejo__merge_pull_request` (squash + delete branch) + - `verdict=approve` + SHA match → `mcp__forgejo__merge_pull_request` (squash + delete branch) - `verdict=changes` → fixup commits + push в `forgejo feat/` + re-poll 4. Нет новых comments → re-schedule 60s -5. **Cap**: 30 iter без resolution → stop, ping user. Blocked-scope cap = 5. +5. **Cap**: 30 iter без resolution → stop, ping user. -## Auto-merge scope +## Auto-merge policy -**✅ Разрешено** (PR diff целиком в этих путях — bot merge без human): -- `CLAUDE.md`, `README.md`, `docs/**` -- `frontend/src/app/**` UI-only без новых endpoints -- `frontend/public/**` -- `.claude/agents/**`, `.claude/rules/**`, `memory/feedback_*.md` +**Любой scope** — bot мержит при `verdict=approve` + SHA match. Blocked-list снят 2026-05-16 ([Auto-merge any scope] memory rule). -**❌ Блокировано** (любой файл из списка → human approval): -- `data/sql/**`, `backend/alembic/versions/**` -- `backend/app/api/v1/**`, `backend/app/services/**`, `backend/app/scrapers/**` -- `docker-compose*.yml`, `Caddyfile`, `.github/workflows/**` -- Любой файл с упоминанием secret / token / password / credential -- PR меняет `Critical workflow rules` или `Auto-merge scope` в CLAUDE.md -- PR меняет `Auto-merge scope` / blocked-list в любом `.claude/rules/*.md` (self-extending rules → нужен human) - -Touches both → more restrictive (block). +**Жёсткие исключения** (даже при APPROVE — НЕ merge, ping user): +- Diff содержит литеральный secret/token/password/credential (40-char hex, API keys, JWT, и т.д.) — security tripwire +- PR меняет блок `## Auto-merge policy` в этом файле или `Critical workflow rules` в CLAUDE.md (self-extending guard — изменение правил всегда через human) ## Sequential PRs