# ADR-0003: Handoff'ы — одноразовые леса́ в `.scratch/handoffs/`

Принято: 2026-06-06
Статус: accepted

## Решение

Handoff (документ «где остановился и как продолжить» для следующей сессии/агента)
кладём в `.scratch/handoffs/YYYY-MM-DD-<slug>.md` и **коммитим**. Это одноразовые
леса́, а не след решения: durable-рассуждение живёт в спеке (`docs/specs/`), ADR и
истории коммитов, поэтому handoff можно удалять без потери трассы. Уборка —
**best-effort** (`git rm`, когда вспомнил или перед важным мержем), без
обязательной дисциплины и пост-процессов.

## Контекст

Раньше handoff жил в `/tmp` — слишком эфемерно (не переживает ребут/смену машины).
Рассматривали гитигнор `.scratch/handoffs/`, но он отпал по двум причинам
владельца: разработка **на нескольких машинах** (гитигнор не синхронизируется) и
планируемые **git worktrees** (untracked-файл виден только в одном worktree).
Оба требования требуют коммита. «Закоммичено на ветке, но автоматически не в
master» git без машинерии (CI-гейт) не даёт; засорение `.scratch/` считаем мягким,
т.к. это некурируемый «ящик» (читатель туда не ходит — см. ADR-0001).

## Последствия

- Carve-out из ADR-0001 «`.scratch/` коммитим целиком»: гитигнор не вводим, но и не
  обязаны вычищать handoff'ы — они одноразовые. Курируемый скретч (если будет)
  по-прежнему коммитится.
- Расположение зафиксировано в `AGENTS.md`, чтобы скилл `handoff` писал туда.
- Решение проекто-зависимое: для строгих/шаренных проектов без мультимашинности
  допустим opt-in на гитигнор или CI-гейт, блокирующий `.scratch/handoffs/` в PR в
  master. Здесь — коммит + best-effort.
