gendesign/.claude/agents/deep-review-phases/phase-1-scope.md
bot-backend 5fa9588935 chore(agents): bot harness tuning — per-role model, forgejo MCP deferral, vault capture, #893 curl hardening
- start-bot.ps1: --model per-role (sonnet; opus только reviewer); CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60
- .claude/mcp/*.json: forgejo (~90 tools) deferred во всех ролях; postgres-gendesign deferred в backend/reviewer
- auto-analyst.md: knowledge-capture step (status/done → inbox draft → vault-overlord) — закрывает 'волт не обновляется'
- forgejo ops через mcp__forgejo__* вместо сырого curl: auto-code-reviewer/backend/qa workflow + _autonomous_pickup contract
- #893 guard: бан curl→/tmp→python3 (Windows 404+FileNotFoundError); deferred→ToolSearch; stale tool-name cleanup (deep-reviewer phases)
2026-05-31 16:26:17 +03:00

52 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Deep Review — Phase 1: Scope discovery
> Supporting reference for `deep-code-reviewer.md`. Read on demand when scope analysis non-trivial.
## Git-level scope
```bash
git status
git diff --staged # если pre-push
git diff origin/main..HEAD # если post-push, до merge
git log origin/main..HEAD --stat # сколько коммитов, кто author
git rev-parse --abbrev-ref HEAD # не main ли это
```
## Forgejo PR metadata
> Если в окне есть `mcp__forgejo__*` — предпочитай его (см. «Альтернатива» ниже): отдаёт распарсенный
> объект. curl-блок — fallback для Task-spawn без forgejo MCP; всё через `| jq` (без temp-файлов).
> Не `curl -o /tmp/*.json` + `python3 json.load` — на Windows 404 + FileNotFoundError (incident #893).
```bash
# Все вызовы используют $FORGEJO_URL и $FORGEJO_TOKEN
H="Authorization: token $FORGEJO_TOKEN"
REPO="$FORGEJO_URL/api/v1/repos/lekss361/gendesign"
# PR metadata: title, body, labels, base, head SHA, mergeable, state, draft
curl -sH "$H" "$REPO/pulls/<N>" | jq '{title,state,mergeable,draft,head:.head.sha,labels:[.labels[].name]}'
# Full file list (даже большой PR)
curl -sH "$H" "$REPO/pulls/<N>/files?limit=50" | jq '.[] | {filename,status,additions,deletions}'
# Diff целиком
curl -sH "$H" "$REPO/pulls/<N>.diff"
# Reviews (что уже сказали bot / lekss361)
curl -sH "$H" "$REPO/pulls/<N>/reviews" | jq '.[] | {user:.user.login,state,body:.body[0:200]}'
# Commits в ветке PR
curl -sH "$H" "$REPO/pulls/<N>/commits" | jq '.[] | {sha:.sha[0:7],message:.commit.message|split("\n")[0]}'
```
Альтернатива — `mcp__forgejo__get_pull_request_by_index`, `mcp__forgejo__list_pull_request_files`, `mcp__forgejo__get_pull_request_diff`, `mcp__forgejo__list_pull_reviews` (commits PR — через `list_repo_commits` по head-ветке).
## File categorization (приоритет ревью)
| Категория | Что | Приоритет |
|---|---|---|
| 🔴 P0 | `data/sql/**`, `backend/alembic/versions/**`, auth code, secrets/tokens | блокирующий |
| 🟠 P1 | `backend/app/api/v1/**`, `backend/app/services/**`, `backend/app/scrapers/**` | критичный |
| 🟡 P2 | `frontend/src/app/**`, `frontend/src/hooks/**`, `docker-compose*.yml`, `Caddyfile`, `.github/workflows/**`, `.forgejo/workflows/**` | важный |
| 🟢 P3 | `frontend/src/components/**` UI-only, tests, CLAUDE.md | стандартный |
| ⚪ skip | lock-файлы, генеренные TS типы (`api-types.ts`), `*.md` без правил | смотреть только если связано с P0-P2 |