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
2 changes: 1 addition & 1 deletion dependency-tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ template/memory-bank/dna/principles.md
### Feature-related Docs

- [`template/memory-bank/flows/feature-artifact-catalog.md`](template/memory-bank/flows/feature-artifact-catalog.md) зависит от [`template/memory-bank/flows/feature.md`](template/memory-bank/flows/feature.md) и [`template/memory-bank/flows/feature-requirements.md`](template/memory-bank/flows/feature-requirements.md).
- [`template/memory-bank/flows/testing-policy.md`](template/memory-bank/flows/testing-policy.md) зависит от [`template/memory-bank/dna/governance.md`](template/memory-bank/dna/governance.md), [`template/memory-bank/flows/behavior-specification.md`](template/memory-bank/flows/behavior-specification.md), [`template/memory-bank/flows/feature.md`](template/memory-bank/flows/feature.md), [`template/memory-bank/flows/feature-requirements.md`](template/memory-bank/flows/feature-requirements.md) и validation profiles.
- [`template/memory-bank/flows/testing-policy.md`](template/memory-bank/flows/testing-policy.md) зависит от [`template/memory-bank/dna/governance.md`](template/memory-bank/dna/governance.md), [`template/memory-bank/flows/behavior-specification.md`](template/memory-bank/flows/behavior-specification.md), [`template/memory-bank/flows/feature.md`](template/memory-bank/flows/feature.md), [`template/memory-bank/flows/feature-requirements.md`](template/memory-bank/flows/feature-requirements.md), validation profiles, autonomy boundaries и routing: контракт сходимости берёт из них Structured Decision Protocol и путь повторной маршрутизации.
- [`template/memory-bank/features/README.md`](template/memory-bank/features/README.md) зависит от [`template/memory-bank/dna/governance.md`](template/memory-bank/dna/governance.md) и [`template/memory-bank/flows/feature.md`](template/memory-bank/flows/feature.md).
- [`template/memory-bank/flows/templates/feature/README.md`](template/memory-bank/flows/templates/feature/README.md) зависит от [`template/memory-bank/flows/feature.md`](template/memory-bank/flows/feature.md) и [`template/memory-bank/dna/frontmatter.md`](template/memory-bank/dna/frontmatter.md).
- [`template/memory-bank/flows/templates/feature/brief.md`](template/memory-bank/flows/templates/feature/brief.md) зависит от [`template/memory-bank/flows/feature.md`](template/memory-bank/flows/feature.md), [`template/memory-bank/flows/feature-requirements.md`](template/memory-bank/flows/feature-requirements.md), [`template/memory-bank/flows/behavior-specification.md`](template/memory-bank/flows/behavior-specification.md), [`template/memory-bank/dna/frontmatter.md`](template/memory-bank/dna/frontmatter.md) и [`template/memory-bank/flows/testing-policy.md`](template/memory-bank/flows/testing-policy.md).
Expand Down
2 changes: 1 addition & 1 deletion template/memory-bank/flows/bug-fix.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ report → triage → reproduction → analysis → fix
- [ ] simplify review выполнен
- [ ] PR содержит ссылку на report, root cause summary и evidence
- [ ] required local tests и CI зелёные
- [ ] проверка реализации сошлась по [`Review Convergence`](testing-policy.md#review-convergence)

Если analysis показывает, что observed behavior соответствует текущему contract, а требуется изменить expected behavior, это не bug fix: повтори Task Routing и выбери `Small Change` или Feature Flow.

Expand All @@ -98,7 +99,6 @@ report → triage → reproduction → analysis → fix
- подтверждённая root cause summary;
- regression test или обоснованный альтернативный carrier;
- результаты required tests;
- последний review cycle завершён без открытых замечаний;
- все изменения закоммичены и отправлены в remote branch, required CI полностью зелёный.

### Terminal State
Expand Down
5 changes: 4 additions & 1 deletion template/memory-bank/flows/feature.md
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,9 @@ flowchart LR
### Upstream Ready → Plan Ready

Plan Ready artifact-review convergence допускает не более пяти review-improve
итераций. Последняя итерация с исправлениями не считается clean verdict без
итераций. Это artifact review до gate, а не проверка реализации: контракт
[`Review Convergence`](testing-policy.md#review-convergence) к нему не
применяется. Последняя итерация с исправлениями не считается clean verdict без
последующего re-review; исчерпание budget оставляет gate непройденным. Примени
[`Structured Decision Protocol`](autonomy-boundaries.md#structured-decision-protocol),
пересмотри hypothesis, upstream facts, plan и review scope; продолжай через
Expand Down Expand Up @@ -399,6 +401,7 @@ Plan Ready artifact-review convergence допускает не более пят
- [ ] minimum validation/evidence contract выбранного profile закрыт concrete evidence
- [ ] каждый manual-only gap явно approved человеком (approval ref в `AG-*`)
- [ ] required implementation/code review проверил delivered repository diff против active `brief.md`, полного optional design pack, referenced finalized external dependencies и execution plan; его verdict/evidence не подменяются Plan Ready artifact review
- [ ] проверка реализации сошлась по [`Review Convergence`](testing-policy.md#review-convergence)
- [ ] simplify review выполнен: код минимально сложен или complexity обоснована ссылкой на `CON-*`, `FM-*`, `SD-*` или accepted ADR
- [ ] если feature добавляет новый stable flow или materially changes существующий project-level scenario, соответствующий `UC-*` создан или обновлен и зарегистрирован в `memory-bank/use-cases/README.md`
- [ ] `brief.md` → `delivery_status: done`
Expand Down
2 changes: 2 additions & 0 deletions template/memory-bank/flows/priming/refactoring.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ stages:
- memory-bank/use-cases/*.md
- memory-bank/domain/*.md
- memory-bank/engineering/architecture.md
- memory-bank/flows/autonomy-boundaries.md
- memory-bank/flows/routing.md
- memory-bank/flows/validation-profiles.md
- memory-bank/flows/testing-policy.md
- memory-bank/engineering/testing-conventions.md
Expand Down
2 changes: 2 additions & 0 deletions template/memory-bank/flows/priming/small-change.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ version: 1
process: small_change
stages:
entry_execution:
- memory-bank/flows/autonomy-boundaries.md
- memory-bank/flows/routing.md
- memory-bank/flows/validation-profiles.md
- memory-bank/engineering/coding-style.md
- memory-bank/flows/testing-policy.md
Expand Down
2 changes: 1 addition & 1 deletion template/memory-bank/flows/refactoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ task → baseline → characterization coverage → plan + checkpoints
- [ ] simplify review подтверждает уменьшение или обоснование complexity
- [ ] rollback или остановка на последнем checkpoint понятны
- [ ] PR содержит before/after structure summary и evidence
- [ ] последний review cycle завершён без открытых замечаний; для production change проверка сошлась по [`Review Convergence`](testing-policy.md#review-convergence)

## Outcome / Exit Contract

Expand All @@ -85,7 +86,6 @@ task → baseline → characterization coverage → plan + checkpoints
- validation profile decision и evidence его minimum contract;
- результаты regression checks по checkpoints;
- before/after summary либо research artifact с источниками и выводом;
- последний review cycle завершён без открытых замечаний;
- все изменения закоммичены и отправлены в remote branch, required CI полностью зелёный для production change.

### Terminal State
Expand Down
2 changes: 1 addition & 1 deletion template/memory-bank/flows/small-change.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ issue/task → routing record → implementation → automated checks
- [ ] simplify review выполнен отдельным проходом
- [ ] PR ссылается на issue/task и содержит concrete evidence
- [ ] required CI зелёный до merge
- [ ] проверка реализации сошлась по [`Review Convergence`](testing-policy.md#review-convergence)

## Delivery Trace

Expand All @@ -104,7 +105,6 @@ Acceptance из issue/task выполнен одним локальным change
- validation profile decision и evidence его minimum contract;
- изменённый код и automated coverage для changed behavior;
- результаты проверок из `Verify`;
- последний review cycle завершён без открытых замечаний;
- все изменения закоммичены и отправлены в remote branch, required CI полностью зелёный.

### Terminal State
Expand Down
59 changes: 57 additions & 2 deletions template/memory-bank/flows/testing-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@
title: Testing Policy
doc_kind: governance
doc_function: canonical
purpose: "Описывает testing policy delivery-процесса: обязательность test case design, требования к automated regression coverage и допустимые manual-only gaps."
purpose: "Описывает testing policy delivery-процесса: обязательность test case design, требования к automated regression coverage, допустимые manual-only gaps и сходимость проверки после реализации."
derived_from:
- ../dna/governance.md
- autonomy-boundaries.md
- behavior-specification.md
- feature.md
- feature-requirements.md
- routing.md
- validation-profiles.md
status: active
canonical_for:
Expand All @@ -18,6 +20,7 @@ canonical_for:
- manual_only_verification_exceptions
- simplify_review_discipline
- verification_context_separation
- review_convergence_contract
- bdd_automation_policy
must_not_define:
- feature_acceptance_criteria
Expand Down Expand Up @@ -72,7 +75,7 @@ Canonical lifecycle gates живут в [feature.md](feature.md):
- к `Problem Ready` `brief.md` уже фиксирует validation profile decision и test case inventory;
- к `Solution Ready` весь required design pack готов по relation, ownership, publication/lifecycle и consistency rules из Feature Flow;
- к `Plan Ready` `implementation-plan.md` содержит `Test Strategy` с planned automated coverage и manual-only gaps;
- к `Done` required tests добавлены, локальные команды зелёные и CI не противоречит локальному verify.
- к `Done` required tests добавлены, локальные команды зелёные, CI не противоречит локальному verify, а проверка сошлась по [`Review Convergence`](#review-convergence).

## Что Считается Sufficient Coverage

Expand Down Expand Up @@ -113,6 +116,58 @@ Artifact review и implementation review имеют разные объекты

Artifact review не является доказательством качества реализации, а implementation review не исправляет задним числом непройденный artifact gate. Для compact feature packages проходы допустимы в одной сессии, если их объекты, verdicts и evidence зафиксированы раздельно; обязательный review или simplify review не пропускается.

## Review Convergence

Проверка после реализации доводится ровно до одного из двух состояний.

**Сошлась.** Clean verdict обязательного review и зелёный обязательный CI
относятся к одной repository revision — одному commit SHA. Изменение кода после
verdict создаёт новую revision и аннулирует его. До выполнения этих условий
работа не переходит в терминальное состояние flow.

**Не сошлась.** Исчерпан бюджет в десять циклов на delivery-единицу. Один цикл —
`несошедшаяся проверка → исправления → повторная проверка`; несошедшейся
считается verdict с блокирующими замечаниями либо красный обязательный CI по
причине в коде. Повторный запуск CI без изменения revision циклом не является.

Исчерпание бюджета не разрешает принять работу и само по себе не создаёт Human
Gate. Зафиксируй вне проверяемой revision — в issue, PR или routing record
выбранного flow, чтобы запись не меняла проверенный код:

```text
Not converged: cycle <N>/10, revisions <SHA…>
Repeated findings: <что повторялось; какие проверки остаются красными>
Cause class: <строка таблицы ниже>
Decision: return to <владелец фактов> | continue, scope <суженный объём>
```

Новый бюджет открывается только после обновления владельца исходных фактов. При
дефекте реализации допускается одно продолжение в текущем flow с явно суженным
объёмом; дальше применяется
[`Structured Decision Protocol`](autonomy-boundaries.md#structured-decision-protocol),
и эскалация нужна только при outcome `escalate`.

| Причина | Куда вернуть работу |
| --- | --- |
| Дефект реализации или необоснованная сложность | Ограничить объём исправления и повторить его в рамках текущего flow |
| Недостаточное изучение кода или ошибочная последовательность исполнения | Этап планирования исполнения выбранного flow (в Feature Flow — Plan Ready) |
| Пробел или противоречие в решении, контракте, инварианте, failure handling или release rules | Владелец design pack либо ADR (в Feature Flow — Solution Ready) |
| Пробел или противоречие в границах, требовании, acceptance criterion или составе evidence | Канонический problem-owner: `brief.md`, bug report, refactoring task (в Feature Flow — Problem Ready) |
| Недостаточно определены проблема, результат или границы | Повторить брифование или первичный разбор |
| Неверно определён тип задачи или её объём | Повторить [`Task Routing`](routing.md); при необходимости выбрать Research, Feature или Epic Flow |
| Внешняя блокировка, недоступная инфраструктура или нестабильный CI без причины в коде | Зафиксировать ожидание или блокировку с evidence, не меняя исходные факты без основания |

Правая колонка называет владельца фактов; gates в скобках относятся к Feature
Flow. Flow без такого этапа возвращает работу к соответствующему месту своего
lifecycle, а если этапа нет вовсе — повторяет [`Task Routing`](routing.md).
После изменения владельца зависящие документы и проверки проходят заново.

Контракт применяется к Feature, Small Change, Bug Fix и Refactoring Flow, не
относится к artifact review до gate (включая Plan Ready) и механизм-нейтрален.
Обязательств выбранного [`validation profile`](validation-profiles.md) он не
изменяет. Incident Flow закрывает containment по своим правилам; permanent
remediation попадает под контракт после отдельного [`Task Routing`](routing.md).

## Project Execution Layer

Как именно исполняется эта policy в конкретном репозитории — framework, тестовые данные, CI jobs, размещение тестов и helper patterns — задаёт [`../engineering/testing-conventions.md`](../engineering/testing-conventions.md), а canonical локальные команды — [`../ops/development.md`](../ops/development.md). Project-специфичный слой может усиливать требования этой policy, но не может их ослаблять.
Loading