# Прун тест-слоя мозга из текущего репозитория (v2)

> Floor-safe прун: precondition-gate → dry-run → Edit + `git rm` (удаление git-tracked, обратимо `git restore`). Финальный `git commit` — вне плана (за owner'ом, минует criterion-gate).

**Goal:** Убрать из текущего репозитория `Документация` тест-слой управляющего слоя — `tools/*.test.mjs` + `app/vitest.config.tools.mjs` + скрипт `test:tools` — не читаемый ни одним рабочим процессом (settings.json-хуки + lefthook проверены) и уже автономно живущий в `claude-brain`. Рабочая копия рантайма (`tools/*.mjs`, observer, registry, квинтет) и Лидерра не затрагиваются.

**Architecture:** Минимальное удаление по {#D4} п.2. Самодостаточность: перед удалением шаг-gate подтверждает, что цели уже сохранены в `claude-brain` (защита от потери файла). `git rm --dry-run` показывает точный перечень захватываемых glob'ом файлов до реального удаления. `git rm` стейджит обратимо; коммит — отдельно.

## Файлы

- Verify (precondition): `claude-brain/vitest.config.tools.mjs` + `claude-brain/tools/*.test.mjs` существуют
- Modify: `package.json` (удалить скрипт `test:tools`)
- Delete (git rm): `tools/*.test.mjs`, `app/vitest.config.tools.mjs`

## Цель

Выполнить floor-safe часть пруна ({#D4} п.2) самодостаточно и безопасно: (1) подтвердить наличие целей в `claude-brain`; (2) превью glob'а через dry-run; (3) убрать `test:tools` из `package.json` и `git rm` тест-файлы + тест-конфиг. Рабочие входы ({#D4} «не трогаются») не затрагиваются. Финальный коммит — owner в терминале.

## Шаги

```skills-json
[]
```

```steps-json
[
  {"op": "Bash", "object": "ls \"C:/моя/проекты/claude-brain/vitest.config.tools.mjs\" \"C:/моя/проекты/claude-brain/tools/enforce-supreme-gate.test.mjs\"", "ref": "D4"},
  {"op": "Bash", "object": "git rm --dry-run tools/*.test.mjs", "ref": "D4"},
  {"op": "Edit", "object": "package.json", "ref": "D4"},
  {"op": "Bash", "object": "git rm tools/*.test.mjs", "ref": "D4"},
  {"op": "Bash", "object": "git rm app/vitest.config.tools.mjs", "ref": "D4"}
]
```

### Шаг 1 — precondition gate (read-only)

`ls` двух якорных целей в `claude-brain`: тест-конфиг (`vitest.config.tools.mjs`) + образец тест-файла (`tools/enforce-supreme-gate.test.mjs`). Если хоть один отсутствует — `ls` ошибётся, прун **не продолжать** (цели не сохранены → удаление потеряет файлы). Контекст: owner-прогон `npx vitest run` в `claude-brain` уже дал 3931 passed → тест-файлы там есть; конфиг авторён в `claude-brain` ранее.

### Шаг 2 — dry-run превью (read-only)

`git rm --dry-run tools/*.test.mjs` печатает точный перечень файлов, которые захватит glob, **без удаления**. Если в списке есть незапланированный (не `*.test.mjs`) файл — прун не продолжать.

### Шаг 3 — Edit `package.json`

Удалить последний скрипт `test:tools` и запятую после `brain:dashboard`. Было:

```json
    "brain:dashboard": "node tools/brain-dashboard-server.mjs",
    "test:tools": "cd app && npx vitest run --config vitest.config.tools.mjs"
```

Стало:

```json
    "brain:dashboard": "node tools/brain-dashboard-server.mjs"
```

### Шаг 4 — `git rm tools/*.test.mjs`

Стейджит удаление тест-файлов управляющего слоя. Обратимо `git restore --staged` + `git checkout`.

### Шаг 5 — `git rm app/vitest.config.tools.mjs`

Стейджит удаление тест-конфига (использовался только скриптом `test:tools`; в `claude-brain` есть собственная версия с исправленными путями).

## Крайние случаи

- НЕ трогать `tools/*.mjs` (рабочая копия рантайма), `docs/observer`, `docs/registry`, квинтет — {#D4} «не трогаются».
- brain specs/plans + brain-retro notes в этот прун НЕ входят (отдельный заход: пофайловая проверка чтения + копия в claude-brain).
- Финальный `git commit` — owner в терминале (criterion-gate блокирует прун-коммит через Claude by-design).

## Критерий

- Шаг 1 `ls` успешен (цели есть в claude-brain); шаг 2 dry-run перечисляет только `*.test.mjs`.
- `package.json` без скрипта `test:tools`; `git status` — staged-удаление `tools/*.test.mjs` + `app/vitest.config.tools.mjs`.
- Рабочие входы (`tools/*.mjs`, observer, registry, квинтет) и `app/` (кроме vitest-конфига) без изменений.

```verified-context-json
[
  {"id": "vc-tools-data", "kind": "EXTRACTED", "ref": "tools/cost-pricing.mjs", "anchor": "export const PRICING = Object.freeze("},
  {"id": "vc-test-tools", "kind": "EXTRACTED", "ref": "package.json", "anchor": "\"test:tools\": \"cd app && npx vitest run"},
  {"id": "vc-vitest-config", "kind": "EXTRACTED", "ref": "app/vitest.config.tools.mjs", "anchor": "include: ['../tools/*.test.mjs']"}
]
```
