- 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)
52 lines
2.7 KiB
Markdown
52 lines
2.7 KiB
Markdown
# 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 |
|