Skip to content

feat: добавить команду push для публикации изменений Memory Bank в upstream через PR #23

Description

@dapi

Контекст

Memory Bank сначала устанавливается в репозиторий проекта, где развиваются как проектные артефакты, так и общие flow, процессы и шаблоны. Когда общие изменения отлажены, их нужно перенести в upstream-шаблон. Сейчас этот цикл требует ручной работы с отдельным checkout и GitHub PR.

Нужна команда memory-bank-cli push, которая разумно публикует пригодные для upstream изменения из банка проекта.

Целевое поведение

  • Источником служит memory-bank/ текущего репозитория проекта.
  • Локальный checkout целевого upstream находится в memory-bank/.repo; для стандартного сценария это dapi/memory-bank, но репозиторий может быть собственным upstream конкретного банка.
  • Команда определяет изменения, релевантные шаблону/upstream, и не переносит проектно-зависимые артефакты и локальные состояния.
  • Перед любой мутацией выполняются предсказуемые проверки: запуск из Git-репозитория, корректность и безопасность пути memory-bank/.repo, валидность upstream remote/identity, чистота checkout и отсутствие неразрешённых конфликтов.
  • По умолчанию команда создаёт отдельную ветку в upstream checkout, применяет отобранные изменения, коммитит их с понятным сообщением, push-ит ветку и создаёт GitHub PR в upstream-репозиторий. Прямой push в основную ветку по умолчанию запрещён.
  • Команда выводит ясный план и ссылку на созданный PR; режим --dry-run не меняет локальный checkout, GitHub или remotes.
  • Неинтерактивный запуск должен быть безопасным: при неоднозначном отборе, грязном состоянии или невозможности создать PR команда завершится с диагностикой и не оставит частично применённых изменений.

Предлагаемый интерфейс

memory-bank-cli push
memory-bank-cli push --dry-run

Дополнительные флаги следует добавлять только там, где они явно нужны для выбора upstream/ветки/PR-метаданных или для безопасного явного override.

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

  • push документирован в справке CLI и README.
  • Для downstream-репозитория с memory-bank/.repo, настроенным на dapi/memory-bank, команда по умолчанию создаёт PR в dapi/memory-bank.
  • Поддержан upstream, отличный от dapi/memory-bank, если он задан в .repo; стандартный upstream не захардкожен как единственный вариант.
  • В PR попадают только изменения, пригодные для канонического Memory Bank; проектно-зависимые файлы, lock/state и содержимое .repo не публикуются.
  • Грязный или небезопасный upstream checkout, невалидный remote, конфликты и неоднозначная классификация останавливают операцию без необратимых действий.
  • --dry-run показывает план/исключения и не создаёт веток, коммитов, push или PR.
  • Покрыты тестами успешный сценарий, dry-run и ключевые отказные сценарии.
  • Ошибки пригодны для исправления пользователем: содержат причину и следующий шаг.

Вне scope

  • Автоматическое слияние PR.
  • Прямой push в default branch upstream без явного отдельного безопасного механизма.
  • Перенос произвольных проектно-зависимых файлов.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions