Skip to content

feat: обрабатывать весь template/ как source payload при init, update и push #29

Description

@dapi

Контекст

Шаблон в dapi/memory-bank задаётся всем деревом template/, а не фиксированным набором известных файлов. Сейчас memory-bank-cli init и update рассматривают payload только в template/memory-bank/ и игнорируют остальные элементы template/.

Цель

Сделать template/ полным каноническим source payload: CLI должен согласованно учитывать, планировать и безопасно переносить все отслеживаемые файлы и вложенные каталоги из него при init и update; будущая команда push должна использовать ту же модель в обратном направлении.

Основной инвариант

Логика не должна содержать allowlist, denylist или перечисление конкретных имён файлов/директорий в template/. Любой новый отслеживаемый обычный файл, добавленный в это дерево (включая dotfiles и файлы в dot-directories), автоматически становится частью template payload без изменения кода CLI.

Требования

  • Явно определить общее, детерминированное отображение путей из всего template/ в downstream-репозиторий; для template/memory-bank/** сохранить совместимое назначение memory-bank/**.
  • Рекурсивно обрабатывать все обычные отслеживаемые Git-файлы template/, включая скрытые имена, без специальных правил для отдельных путей.
  • Сохранять режимы 100644/100755; отклонять symlink и другие неподдерживаемые Git entries с понятной диагностикой.
  • Включить все managed template-файлы в ownership lock, digest и план обновления, чтобы drift обнаруживался и обновления были идемпотентны.
  • Не создавать и не считать значимыми пустые директории (Git их не версионирует).
  • Сохранить безопасную обработку конфликтов и пользовательских изменений: managed-файл с локальным drift не должен молча перезаписываться.
  • Определить миграцию для существующих downstream locks, созданных при старой модели payload, без ложного удаления или перезаписи файлов.
  • Изменить будущий push из feat: добавить команду push для публикации изменений Memory Bank в upstream через PR #23 так, чтобы он отбирал и публиковал всё canonical-дерево template/; добавление/удаление файлов в нём не должно требовать изменения push-логики.
  • Обновить help/README и добавить тесты: init, update, dry-run, lock/drift, dotfiles, executable files, динамически добавленные template-пути, legacy source roots и отказные сценарии.

Вне scope

  • Автоматическое включение неотслеживаемых или ignored файлов.
  • Поддержка symlink без отдельной модели безопасности.
  • Изменение поведения для произвольных файлов вне template/.

Зависимость

Реализация этой задачи заблокирована #23: сначала должна появиться команда push и её базовая модель публикации upstream-изменений.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions