Fix structural causes of autonomous-window underperformance vs single-window
orchestration — persona prompts were thin pointers that deferred conventions
to unread files and dead-ended every imperfect PR into human review.
- Inline-load conventions: каждый work-тик MANDATORY-читает полный
backend/frontend-engineer.md + rules (был optional pointer, который cost-rule
отучал читать). Cost-saving "не строй контекст" сужен до idle-тиков явно.
- Auto-fix loop: reviewer FIX -> status/needs-fix (assignee остаётся worker),
worker сам подхватывает свой PR и пушит fixup в ту же ветку. blocked+needs-human
зарезервирован под BLOCK (security/data-loss) или 3x fix-fail (+ fix-attempt cap).
QA feature_regression -> needs-fix аналогично. FSM-таблица обновлена.
- Fat issue template: auto-analyst делает mandatory code archeology (Grep/Read)
и пишет Files/сигнатуры/Acceptance/Risk (формат tech-analyst) — issue это
единственный канал к worker'у.
- Model resolution doc: model: frontmatter мёртв в standalone /loop-окне
(модель = модель окна); reviewer-окно запускать в Opus 4.8 осознанно.
- Drift fix: stale-claim cleanup помечен implemented (cron stale-claims.yml в
проде, #610-612); отмечен gap pause-bots vs cleanup.
Новый label status/needs-fix создать в Forgejo до первого запуска auto-fix loop.
#11: slash-commands и _autonomous_pickup.md теперь читают persistent User-scope
env vars напрямую (FORGEJO_TOKEN_<ROLE>) вместо file-based из ~/.claude/secrets/.
Один раз: scripts/setup-bot-env.ps1 (запускается user'ом локально, кладёт
токены из vault в Windows User registry). После этого окна grab credentials
через [System.Environment]::GetEnvironmentVariable() — никаких файлов.
Все 5 work-as-*.md обновлены (analyst/backend/frontend/reviewer/qa).
#12: stale-claim cleanup — cron каждые 30 минут.
- scripts/cleanup-stale-claims.sh — bash, parses Forgejo API + Python для JSON
- .forgejo/workflows/stale-claims.yml — cron schedule `*/30 * * * *`
Освобождает issues застрявшие в status/wip >4h:
- assignees=[]
- +status/ready -status/wip
- comment "stale claim released, worker likely crashed"
Использует secret FORGEJO_BOT_QA_TOKEN (минимум прав = write:issue).
Setup: secret нужно завести в Forgejo Actions UI после merge —
git.gendsgn.ru/lekss361/gendesign/-/settings/actions/secrets.
Refs: PRs #608, #609. Closes TODO с PR #608 (stale-claim cron).
Phase 2 prep для autonomous multi-window workflow (Phase 1 — PR #608).
Изменения:
1. `.claude/agents/_autonomous_pickup.md` — добавлена Pre-flight checklist:
- Шаг 1: где взять PAT из vault meta/00_credentials.md
- Шаг 2: env vars + git identity (GIT_AUTHOR_NAME/EMAIL — критично!)
- Шаг 3: bot-remote setup (отдельный remote с bot's PAT для audit log)
- Шаг 4: sanity check identity (curl /user → должен вернуть bot-<role>)
Без этого commits писались бы под lekss361, не под ботом.
2. `.claude/commands/work-as-*.md` (5 файлов) — slash-commands для запуска окон:
- work-as-analyst (sonnet, /loop 30m)
- work-as-backend (sonnet, /loop dynamic)
- work-as-frontend (sonnet, /loop dynamic)
- work-as-reviewer (opus, /loop 5m)
- work-as-qa (sonnet, /loop 10m)
Каждый command:
- Описывает pre-flight для конкретной роли
- Ссылается на соответствующий .claude/agents/auto-*.md
- Перечисляет hard rules для роли
- Объясняет per-tick workflow
3. Forgejo labels (16 шт, созданы через REST API — не в этом diff):
scope/{backend,frontend,db,qa,devops}
status/{ready,wip,review,qa,done,blocked}
priority/{p0,p1,p2}
pause-bots, needs-human
Что осталось для активации:
- 5 Forgejo bot-users + PATs (уже созданы 2026-05-27, см. vault)
- ~/.claude/secrets/forgejo-bot-*.token — выгрузка PAT'ов из vault user'ом вручную
- Stale-claim cron (отдельный PR)
- Optional: multi-window launcher через tmux/wezterm
Refs: PR #608 (Phase 1), runbooks/multi_agent_autonomous_workflow.md