chore(rules): drop blocked-scope list from git-pr.md — align with any-scope policy

Header line 10 + memory rule [Auto-merge any scope] (2026-05-16)
заявили APPROVE → merge любой scope. Body всё ещё содержал
устаревший blocked-list (data/sql, services, scrapers, и т.д.),
из-за которого session-side classifier'ы ошибочно блокировали
auto-merge approved PR (incident: PRs #501-504 ждали ручного merge).

Заменил Auto-merge scope section на Auto-merge policy:
- Любой scope OK при verdict=approve + SHA match
- Hard exception: secrets в diff + self-extending guard (изменение
  самих правил всегда через human)

Также убрал Scope guard и Blocked-scope cap из Polling loop section.
This commit is contained in:
lekss361 2026-05-24 13:58:01 +03:00
parent 099b8e4b59
commit c9737d26c9

View file

@ -78,29 +78,18 @@ Closes #N
2. `state == merged` → stop polling
3. Новый review/comment: `mcp__forgejo__list_pr_reviews` / `list_issue_comments`. Парсь marker `<!-- gendesign-review-bot: sha=<sha7> verdict=<approve|changes> -->`
- **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/<scope>` + 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