# Issue tracker: GitHub

Задачи этого репозитория живут в GitHub Issues. Все операции — через CLI `gh`;
репозиторий `gh` определяет сам по `git remote`.

- **Создать issue**: `gh issue create --title "..." --body "..."` (многострочное
  тело — heredoc'ом).
- **Прочитать issue**: `gh issue view <номер> --comments`.
- **Список**: `gh issue list --state open --json number,title,labels` с нужными
  фильтрами `--label` / `--state`.
- **Комментарий**: `gh issue comment <номер> --body "..."`.
- **Метки**: `gh issue edit <номер> --add-label "..."` / `--remove-label "..."`.
- **Закрыть**: `gh issue close <номер> --comment "..."`.

## Спека — источник истины

- Спецификация фичи — файл в `docs/specs/`, версионируется с кодом.
- Корневой issue фичи — **тонкий**: ссылка на спеку + чек-лист дочерних issues
  (`- [ ] #NN`). Содержание спеки в issue не дублируется — истина одна, в git.
- Дочерние issues — полноценные самодостаточные постановки: цель, критерии
  приёмки чекбоксами, границы («что трогать нельзя»), «сначала прочитать»,
  команды проверки.
- Итоговые резолюции и решения — в спеку/ADR тем же PR; issue — рабочая
  переписка, она не обязана переживать фичу.

## Когда скилл говорит «опубликовать в issue tracker»

Создать GitHub issue.

## Когда скилл говорит «достать тикет»

`gh issue view <номер> --comments`.

## PR как поверхность триажа

**Нет** — одиночный учебный репозиторий, внешних PR не ждём. (Если включить —
`/triage` начнёт гонять PR через те же метки и состояния командами `gh pr ...`.)

## Wayfinding-операции

Используются `/wayfinder`. Карта — один issue, тикеты — дочерние issues.

- **Карта**: issue с меткой `wayfinder:map` (Notes / Decisions-so-far / Fog в теле).
- **Дочерний тикет**: sub-issue карты (`gh api` на endpoint sub-issues); если
  sub-issues недоступны — пункт task-list в теле карты + `Part of #<map>` в
  начале тела тикета. Метки: `wayfinder:<type>` (`research`/`prototype`/
  `grilling`/`task`).
- **Блокировки**: нативные issue dependencies —
  `gh api --method POST repos/<owner>/<repo>/issues/<child>/dependencies/blocked_by -F issue_id=<db-id блокера>`
  (`<db-id>` — числовой database id: `gh api repos/<owner>/<repo>/issues/<n> --jq .id`,
  не `#номер`). Fallback — строка `Blocked by: #<n>` в начале тела. Тикет
  разблокирован, когда все блокеры закрыты.
- **Фронтир**: открытые дети карты минус заблокированные и назначенные; первый
  в порядке карты.
- **Взять в работу**: `gh issue edit <n> --add-assignee @me`.
- **Закрыть**: комментарий с ответом, `gh issue close`, указатель на контекст —
  в Decisions-so-far карты.

## Архив

До 2026-07-19 задачи велись markdown-файлами в `.scratch/<feature>/issues/`
(фичи `data-generator` и `generator-model-time-startup-history`, задачи 01–21).
Не мигрированы; доступны в истории git — срез `0e312b3`.
