Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ jobs:
"$RUNNER_TEMP/memory-bank" lint --json > "$RUNNER_TEMP/memory-bank.json"
"$RUNNER_TEMP/memory-bank-lint" --json > "$RUNNER_TEMP/memory-bank-lint.json"
cmp "$RUNNER_TEMP/memory-bank.json" "$RUNNER_TEMP/memory-bank-lint.json"
"$RUNNER_TEMP/memory-bank" doctor --profile template --json > "$RUNNER_TEMP/memory-bank-doctor.json"
working-directory: tools

release-config:
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Структура проекта и организация модулей

Корневой `README.md` объясняет устройство репозитория и правила использования шаблона.
Перед substantial delivery work начните с [`memory-bank/README.md`](memory-bank/README.md), затем прочитайте governance-ядро и подходящий flow.

- `memory-bank/` — переносимый шаблон, который должен оставаться generic.
- `memory-bank/dna/` — governance-ядро шаблона.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ problem space solution space execution space
| [Managed-блок инструкций агента](docs/agent-instructions.md) | Для marker contract, doctor и выбора единственного agent instruction target |
| [Разработка репозитория](docs/development.md) | Для разработчиков шаблона и CLI |

`memory-bank lint` проверяет broken links, orphan-документы, достижимость через индексную навигацию и contract ожидаемых `README.md`-индексов. Прежний `memory-bank-lint` временно остаётся совместимым entrypoint для существующей автоматизации.
`memory-bank lint` проверяет broken links, orphan-документы, достижимость через индексную навигацию и contract ожидаемых `README.md`-индексов. `memory-bank doctor` добавляет read-only диагностику внедрения, governance, managed drift и CI. Прежний `memory-bank-lint` временно остаётся совместимым entrypoint для существующей автоматизации.

## Развитие шаблона

Expand Down
34 changes: 33 additions & 1 deletion docs/adoption.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,37 @@ codex --search \

Команда передаёт prompt при запуске интерактивной Codex-сессии и использует sandbox и approval policy из пользовательской конфигурации. Для воспроизводимого запуска замените `main` в URL на immutable commit SHA.

## Подключить агента

Используйте managed-блок, который устанавливает `memory-bank init`: он направляет агента к `memory-bank/README.md`, `memory-bank/dna/README.md` и `memory-bank/flows/routing.md`, не копируя governance. Не редактируйте содержимое между markers вручную; project-specific инструкции размещайте снаружи. Полный marker, update, doctor и alternative-target contract описан в [managed-блоках agent instructions](agent-instructions.md).

Для первой адаптации можно использовать запрос:

```text
Прочитай ./memory-bank/README.md и governance-ядро в ./memory-bank/dna/.
Помоги адаптировать product, domain, engineering и ops под этот проект.
Не переноси project-specific детали обратно в generic-шаблон.
```

После внедрения используйте [инструкцию по повседневной работе](usage.md): она описывает связь Memory Bank с task tracker и agent runner, рабочий цикл и стартовые запросы.

## Установить локальную проверку

Для локального аудита установите `memory-bank` как внешний бинарник:

```bash
go install github.com/dapi/memory-bank/tools/cmd/memory-bank@latest
```

После этого из любого места внутри downstream Git-репозитория:

```bash
memory-bank lint
memory-bank doctor
```

Подробности по флагам, migration path и установке: [`memory-bank.md`](memory-bank.md).

## Подключить CI

CI-проверка Memory Bank должна быть opt-in в downstream-проекте. Не копируйте `.github/workflows/ci.yml` из этого репозитория: он предназначен для разработки самого шаблона и собирает локальный Go CLI из `tools/cmd/memory-bank`.
Expand Down Expand Up @@ -119,7 +150,7 @@ jobs:
run: go install "github.com/dapi/memory-bank/tools/cmd/memory-bank@${MEMORY_BANK_VERSION}"

- name: Audit Memory Bank
run: memory-bank lint
run: memory-bank doctor
```

Если в проекте уже есть Go toolchain setup, можно переиспользовать существующий шаг `actions/setup-go`. Если Go в проекте не используется, он нужен только для установки CLI через `go install`; после публикации release binaries или Homebrew formula CI можно заменить на установку готового бинарника.
Expand All @@ -132,4 +163,5 @@ Memory Bank считается внедрённым, когда:
- постоянный контекст `product/`, `domain/`, `engineering/` и `ops/` отражает фактические правила проекта или явно помечает пробелы;
- агентские инструкции указывают читать `memory-bank/README.md` и governance-ядро;
- первая реальная задача прошла через выбранный flow или `Small Change` routing record;
- `memory-bank doctor` проходит локально (и включает navigation checks `lint`);
- CI-проверка подключена, если команда хочет блокировать PR при broken links или нарушенной индексной навигации.
2 changes: 1 addition & 1 deletion docs/agent-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ memory-bank doctor
memory-bank doctor --json
```

`doctor` проверяет блок без мутаций. Missing и outdated block дают planned `create/update`, ambiguous markers — `conflict`, актуальный блок — `preserve`. Любой drift возвращает exit code `1`; актуальное состояние — `0`. JSON дополнительно содержит `drift_count` и `conflict_count`.
`doctor` проверяет блок без мутаций как часть общего adoption-аудита. Missing, outdated или ambiguous managed block становятся finding `agent.managed_block_drift` уровня `error`; актуальный блок finding не создаёт. Полный versioned JSON contract и остальные диагностические группы описаны в [`memory-bank.md`](memory-bank.md).

## Альтернативный target

Expand Down
24 changes: 19 additions & 5 deletions docs/memory-bank.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# CLI memory-bank

`memory-bank` безопасно устанавливает и обновляет template, а также проверяет навигационную целостность `memory-bank/`.
`memory-bank` безопасно устанавливает и обновляет template, а также диагностирует его внедрение и целостность.

Ownership-контракт, классы файлов и atomic update policy описаны в [отдельном документе](ownership.md). Основные команды:

- `memory-bank init` создаёт служебный `memory-bank/.lock` и устанавливает только отсутствующие файлы;
- `memory-bank update` строит ownership-aware mutation plan и применяет его только целиком;
- `memory-bank doctor` проверяет актуальность managed-блока agent instructions;
- `memory-bank doctor` выполняет read-only диагностику adoption, governance, managed drift, CI и навигации;
- `memory-bank lint` проверяет документацию.

`memory-bank lint` обнаруживает:
Expand All @@ -17,6 +17,15 @@ Ownership-контракт, классы файлов и atomic update policy о
- документы, которые достижимы только глубже порога навигации;
- contract ожидаемых `README.md`-индексов.

`memory-bank doctor` переиспользует этот lint engine и добавляет проверки:

- template identity из `memory-bank/.lock` и drift managed/generated payloads;
- routing из `AGENTS.md` (или выбранного `--agent-file`) и managed-блока;
- YAML frontmatter, допустимых lifecycle enum, ацикличности `derived_from` и feature stage gates;
- наличия doctor-gate в GitHub Actions и плавающего `@latest` в downstream CI.

Команды решают разные задачи: `lint` — быстрый аудит навигации, `doctor` — полный read-only health check текущей установки, `update --dry-run` — read-only preview конкретного обновления из явно переданного template source. Только обычный `update` применяет изменения.

## Установка

Для регулярных проверок установите CLI один раз. Требуется Go версии `1.21` или новее:
Expand Down Expand Up @@ -47,6 +56,7 @@ command -v memory-bank

```bash
memory-bank lint
memory-bank doctor
```

По умолчанию `memory-bank lint` ищет ближайший родительский `.git` и использует найденный каталог как repo root. Если запуск идёт вне Git-репозитория или нужно проверить другой checkout, передайте корень явно:
Expand All @@ -71,6 +81,10 @@ memory-bank lint --repo-root /path/to/repository
- `--version` — печатает версию бинарника и завершает работу;
- `--help` — печатает справку по запуску и параметрам.

Для `doctor` также доступны `--profile auto|template|downstream` (по умолчанию `auto`) и `--agent-file PATH`. Auto-profile считает репозиторий downstream при наличии `memory-bank/.lock`; исходный репозиторий шаблона распознаётся по локальному Go module. `--scope-root` и `--max-depth` передаются встроенной navigation-проверке.

Exit code `0` означает отсутствие blocking findings уровня `error`; одни warnings не блокируют. `doctor --json` печатает публичный report format `2`: profile, template identity, summary, findings со стабильными `code`, `severity`, `group`, `path/subject`, explanation и remediation, а также исходный lint-report в поле `navigation`. Версия `2` сигнализирует несовместимое изменение схемы aggregate doctor report.

## Примеры

```bash
Expand All @@ -95,12 +109,12 @@ go run github.com/dapi/memory-bank/tools/cmd/memory-bank@latest lint
## Общий command contract

- `memory-bank --help` и `memory-bank --version` относятся ко всему CLI;
- `memory-bank lint [flags]` — read-only команда: она не изменяет проверяемый репозиторий;
- `memory-bank lint [flags]` и `memory-bank doctor [flags]` — read-only команды: они не изменяют файлы, Git index или внешние системы;
- результат и `--json` записываются в stdout, diagnostics и ошибки использования — в stderr;
- exit code `0` означает успешную команду без lint errors, `1` — lint errors или operational failure, `2` — неверный вызов CLI;
- exit code `0` означает успешную команду без blocking errors, `1` — lint/doctor errors или operational failure, `2` — неверный вызов CLI;
- repo root находится по ближайшему родительскому `.git`, а `--repo-root` переопределяет discovery.

`init` и `update` принимают `--source`, `--template-version`, `--source-ref`, `--repo-root`, `--agent-file`, `--dry-run` и `--json`. Они также управляют коротким versioned routing-блоком в `AGENTS.md`; `--agent-file` выбирает один alternative target. `doctor` принимает `--repo-root`, `--agent-file` и `--json` и проверяет этот блок без мутаций. Подробности: [managed-блок инструкций агента](agent-instructions.md). Автоматическая brownfield-адаптация не входит в CLI.
`init` и `update` принимают `--source`, `--template-version`, `--source-ref`, `--repo-root`, `--agent-file`, `--dry-run` и `--json`. Они также управляют коротким versioned routing-блоком в `AGENTS.md`; `--agent-file` выбирает один alternative target. `doctor` проверяет блок как часть агрегированной диагностики без мутаций. Подробности: [managed-блок инструкций агента](agent-instructions.md). Автоматическая brownfield-адаптация не входит в CLI.

## Переход с memory-bank-lint

Expand Down
2 changes: 1 addition & 1 deletion memory-bank/engineering/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Engineering Architecture Patterns
doc_kind: engineering
doc_function: canonical
purpose: Каноничное место для архитектурных правил реализации: code/module boundaries, runtime patterns, concurrency, error handling и configuration ownership.
purpose: "Каноничное место для архитектурных правил реализации: code/module boundaries, runtime patterns, concurrency, error handling и configuration ownership."
derived_from:
- ../dna/governance.md
- ../domain/context-map.md
Expand Down
2 changes: 1 addition & 1 deletion memory-bank/engineering/autonomy-boundaries.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Autonomy Boundaries
doc_kind: engineering
doc_function: canonical
purpose: Границы автономии агента: что можно делать без подтверждения, где нужна супервизия, когда эскалировать.
purpose: "Границы автономии агента: что можно делать без подтверждения, где нужна супервизия, когда эскалировать."
derived_from:
- ../dna/governance.md
canonical_for:
Expand Down
2 changes: 1 addition & 1 deletion memory-bank/engineering/testing-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Testing Policy
doc_kind: engineering
doc_function: canonical
purpose: Описывает testing policy репозитория: обязательность test case design, требования к automated regression coverage и допустимые manual-only gaps.
purpose: "Описывает testing policy репозитория: обязательность test case design, требования к automated regression coverage и допустимые manual-only gaps."
derived_from:
- ../dna/governance.md
- ../flows/feature.md
Expand Down
2 changes: 1 addition & 1 deletion memory-bank/flows/templates/feature/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "FT-XXX: Design Template"
doc_kind: feature
doc_function: template
purpose: Governed wrapper-шаблон для feature-local `design.md`. Фиксирует solution-space слой: выбранный подход, architecture coverage, contracts, design verification и design-pack routing без смешения с problem space или execution contract.
purpose: "Governed wrapper-шаблон для feature-local `design.md`. Фиксирует solution-space слой: выбранный подход, architecture coverage, contracts, design verification и design-pack routing без смешения с problem space или execution contract."
derived_from:
- ../../feature.md
- ../../feature-artifact-catalog.md
Expand Down
5 changes: 4 additions & 1 deletion tools/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@ module github.com/dapi/memory-bank/tools

go 1.21

require golang.org/x/sys v0.17.0
require (
golang.org/x/sys v0.17.0
gopkg.in/yaml.v3 v3.0.1
)
4 changes: 4 additions & 0 deletions tools/go.sum
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Loading
Loading