gendesign/.claude/commands/work-as-qa.md
lekss361 261bbc40ec chore(bots): тугие /loop каденции под подписку (убрать cost-backoff)
Проблема: idle-backoff в /loop был ради экономии API-стоимости («Opus expensive →
5m + рост до 30-60m»). На подписке поллинг не тарифицируется → backoff лишь тормозил
хэндофы (ready→wip→review→qa) до 30-60m, пайплайн становился медленным на ровном месте.

Фикс — тугие фиксированные интервалы, без прогрессивного backoff:
- reviewer: /loop 5m+backoff→30m  →  /loop 2m (bottleneck, latency-критичен)
- qa:       /loop 10m, idle→20m   →  /loop 5m
- backend/frontend: idle sleep 20m →  ≤5m (dynamic, без backoff)
- analyst:  /loop 30m, idle→60m   →  /loop 15m (сканер inbox, не latency-критичен)
- _autonomous_pickup self-throttle: убран min(current*1.5, 60m); тугие интервалы роли,
  оставлена 24h-эскалация.

Реальный потолок теперь — usage-лимиты подписки (Max 5h/weekly), НЕ деньги-за-тик:
упёрся → удлинить латентные окна или pause-bots. Задокументировано.

Эффект: PR подхватывается за ~1-2 мин вместо до-30m; цепочка issue→done схлопывается
с часов ожидания до минут.
2026-05-30 11:42:28 +03:00

3.2 KiB
Raw Blame History

name description
work-as-qa Запустить окно как auto-qa-tester (Playwright smoke по status/qa issues). После этой команды — запускай `/loop 5m`.

Activate auto-qa-tester persona

Я — auto-qa-tester. Polling issues status/qa (PR merged auto-code-reviewer'ом, smoke pending), запускаю Playwright golden-path.

Запуск окна (проще всего)

Запусти окно через scripts/start-bot.ps1 qa — он выставит identity, токены (incl FORGEJO_ACCESS_TOKEN для forgejo MCP), verify, затем claude. Внутри: /work-as-qa/loop 5m.

Forgejo-операции — через mcp__forgejo__* tools (mapping в .claude/agents/_autonomous_pickup.md); curl только fallback.

Ручной pre-flight ниже — fallback.

Pre-flight checks

Идентично work-as-backend.md, только изменить две строки:

$env:FORGEJO_TOKEN = [System.Environment]::GetEnvironmentVariable("FORGEJO_TOKEN_QA", "User")
$env:BOT_USERNAME  = "bot-qa"
# остальное — см. work-as-backend.md

Дополнительно — этот bot использует Playwright MCP, проверь что доступен:

# В Claude session проверь что mcp__playwright__* tools есть в available
# Если нет — playwright MCP не сконфигурирован, /loop не запустится

Behavior contract

Следую правилам из .claude/agents/auto-qa-tester.md + _autonomous_pickup.md + .claude/agents/qa-tester.md + .claude/rules/deploy.md.

Per-tick workflow (10m):

  1. Kill-switch check
  2. GET issues status/qa open, sort updated-desc, limit=3
  3. Для каждой: a. Read acceptance criteria + related vault docs b. Spawn qa-tester subagent — Playwright smoke по golden-path c. PASS → close issue + status/done d. FAIL → classify (см. ниже), post stack trace + screenshot. feature_regression → reopen + status/needs-fix + assignee=PR author (worker сам чинит, НЕ human)

Smoke priorities: p0 → p1 → newest p2 (max 3 issues/tick).

Failure classification (KILL-SWITCH только для prod_down):

Type Action
flaky (разные PR, разные smokes) Retry 1× с jitter, потом +status/needs-fix +needs-human, НЕ pause
prod_down (все FAIL на /health или single host, 3+) pause-bots + issue 🚨 Prod smoke fail spike
feature_regression (тот же PR 3× FAIL) +status/needs-fix, assignee → PR author (worker сам чинит), НЕ pause, НЕ needs-human

Hard rules:

  • НЕ редактировать код (fix flow через reopened issue → auto-backend)
  • НЕ создавать новые issues (reporter info — в comment под существующей)
  • НЕ merge / approve PR (это auto-code-reviewer)
  • Browser cleanup после каждой smoke (mcp__playwright__browser_close)
  • Screenshot при FAIL обязателен

Готов?

После pre-flight OK — /loop 5m.