Исторический документ из исходной ревизии 61e75e9. Этот план реализации сохранён для справки и не является актуальной инструкцией по реализации. Исходный документ.

Техническое задание: CLI okf для OKF v0.2

1. Цель

Сделать все интерфейсы чтения и записи CLI учитывающими версию, показывать сигналы v0.2 и подключить единый планировщик миграции без доменной логики в main.go.

Зависимости: task09.md–task15.md.

2. Архитектура

Оставить cmd/okf/main.go точкой запуска. Вынести координацию команд в internal/okfcli:

Разрешение версии, доверие, устаревание, происхождение, граф и миграция обеспечиваются доменными пакетами. CLI не обходит сырой YAML.

3. Общий селектор

Для команд, работающих с набором:

--spec auto|0.1|0.2

Значение по умолчанию — auto; разрешение версии следует task09. Явный селектор, противоречащий объявленной версии, означает ошибку/несоответствие утверждения, а не незаметное переопределение.

4. Команды

version

Текстовый вывод сообщает версию CLI отдельно от поддерживаемых спецификаций OKF и спецификации по умолчанию. Добавить --json:

{
  "cli_version": "vX.Y.Z",
  "okf_spec_default": "0.2",
  "okf_spec_supported": ["0.1", "0.2"]
}

validate

Сохранить существующие флаги и поля вывода, дополнительно добавить:

Для v0.2 не должно быть ложных срабатываний по timestamp/Citations.

info

Добавить детерминированные счётчики:

parse

Типизированное представление в тексте/JSON:

Одиночная форма verified и список дают одинаковый результат.

fmt

Остаётся разбором и канонической сериализацией:

index

graph

Передаёт явный профиль проекции и параметры пакету graph; stdout содержит только выбранные данные графа. Сохраняется прежний --dot.

migrate

okf migrate <bundle> --to 0.2
  [--from auto|0.1]
  [--actor <actor>]
  [--write]
  [--format text|json]

По умолчанию — пробный запуск без записи. Делегирует планировщику task15 и не выполняет собственных изменений YAML/файлов. Применение использует атомарную фиксацию в хранилище, привязанную к ревизии и дайджесту.

5. stdout/stderr/код завершения

6. Тесты

Все тесты следуют AAA.

7. Критерии приёмки

8. Вне рамок задачи

Среда исполнения/аттестации, преобразование произвольных SQL/текста с помощью LLM и изменение пользовательских relations.