diff --git a/openspec/changes/add-make-install-android/.openspec.yaml b/openspec/changes/archive/2026-10-13-add-make-install-android/.openspec.yaml similarity index 100% rename from openspec/changes/add-make-install-android/.openspec.yaml rename to openspec/changes/archive/2026-10-13-add-make-install-android/.openspec.yaml diff --git a/openspec/changes/add-make-install-android/proposal.md b/openspec/changes/archive/2026-10-13-add-make-install-android/proposal.md similarity index 100% rename from openspec/changes/add-make-install-android/proposal.md rename to openspec/changes/archive/2026-10-13-add-make-install-android/proposal.md diff --git a/openspec/changes/add-make-install-android/specs/dev-make-workflow/spec.md b/openspec/changes/archive/2026-10-13-add-make-install-android/specs/dev-make-workflow/spec.md similarity index 100% rename from openspec/changes/add-make-install-android/specs/dev-make-workflow/spec.md rename to openspec/changes/archive/2026-10-13-add-make-install-android/specs/dev-make-workflow/spec.md diff --git a/openspec/changes/add-make-install-android/tasks.md b/openspec/changes/archive/2026-10-13-add-make-install-android/tasks.md similarity index 100% rename from openspec/changes/add-make-install-android/tasks.md rename to openspec/changes/archive/2026-10-13-add-make-install-android/tasks.md diff --git a/openspec/specs/dev-make-workflow/spec.md b/openspec/specs/dev-make-workflow/spec.md new file mode 100644 index 0000000..376a808 --- /dev/null +++ b/openspec/specs/dev-make-workflow/spec.md @@ -0,0 +1,55 @@ +# dev-make-workflow Specification + +## Purpose + +Make-интерфейс разработчика: установка Android-клиента на выбранное устройство и обзор +доступных целей сборки. + +## Requirements + +### Requirement: Установка Android-приложения через Make-цель +Проект SHALL предоставлять Make-цель `install-android-app`, которая собирает debug-APK +Android-клиента и устанавливает его на выбранное устройство. Повторный запуск SHALL +переустанавливать приложение без ручного удаления. + +#### Scenario: Установка на устройство +- **WHEN** цель запущена и устройство выбрано +- **THEN** собирается debug-APK и устанавливается на это устройство + +#### Scenario: Повторная установка +- **WHEN** приложение уже установлено и цель запущена снова +- **THEN** установка завершается успешно без ручного удаления приложения + +### Requirement: Выбор устройства для установки +Цель установки SHALL брать устройство из явно заданного серийного номера, а при его +отсутствии — из единственного подключённого устройства. Если подключено несколько +устройств и серийный номер не задан, цель SHALL напечатать список устройств и SHALL не +выполнять установку. + +#### Scenario: Серийный номер задан +- **WHEN** задан серийный номер устройства +- **THEN** приложение устанавливается именно на это устройство + +#### Scenario: Единственное устройство +- **WHEN** серийный номер не задан и подключено ровно одно устройство +- **THEN** приложение устанавливается на него + +#### Scenario: Несколько устройств без выбора +- **WHEN** серийный номер не задан и подключено несколько устройств +- **THEN** цель печатает список устройств, не выполняет установку и завершается ненулевым кодом + +#### Scenario: Нет устройств +- **WHEN** не подключено ни одного устройства +- **THEN** цель сообщает об ошибке и завершается ненулевым кодом + +### Requirement: Обзор доступных Make-целей +Голый `make` (без цели) SHALL печатать список доступных целей и SHALL не запускать +сборку. Любая цель, включая сборку фронтенда, SHALL оставаться доступной по явному имени. + +#### Scenario: Голый make +- **WHEN** `make` запущен без цели +- **THEN** печатается список доступных целей, сборка не запускается + +#### Scenario: Явная цель +- **WHEN** `make` запущен с именем цели, например `make frontend` +- **THEN** выполняется именно эта цель