Files
portal/docs/superpowers/plans/2026-05-27-graphify-spike.md
T

35 KiB
Raw Blame History

Graphify Spike Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Получить evidence по экономии input-tokens Graphify на репо Лидерры (5 baseline-задач A/B), принять решение GREEN/YELLOW/RED по формализации в Tooling-канон.

Architecture: Worktree worktree-graphify-spike (от текущего HEAD) → Ollama+qwen2.5:7b сервис → Graphify CLI → индексация app/+docs/+.claude/ (исключая секреты/телеметрию/handoff) → A/B замеры 5 задач → отчёт в docs/discovery/ → branch-handling по exit-ветке.

Tech Stack: Ollama (Windows installer), qwen2.5:7b (4.7 ГБ), Python 3.10+, uv, Graphify v0.8.20.

Spec: docs/superpowers/specs/2026-05-27-graphify-spike-design.md


Файловая структура (что создаётся/меняется)

  • Create: .claude/worktrees/graphify-spike/ — worktree
  • Modify (worktree): .gitignore (+строка .graphify/)
  • Create (worktree): .graphify/ (содержимое — в gitignore)
  • Create (worktree): .graphify/config.toml (или эквивалент, конфиг ignore-списка)
  • Create (worktree): docs/discovery/2026-05-27-graphify-spike.md — отчёт
  • Create (worktree): docs/discovery/2026-05-27-graphify-spike-baseline-A/ — транскрипты A-варианта 5 задач (опционально)
  • Create (worktree): docs/discovery/2026-05-27-graphify-spike-baseline-B/ — транскрипты B-варианта

Машинные изменения (вне репо):

  • Установка Ollama сервиса (Windows)
  • Скачивание qwen2.5:7b в %USERPROFILE%\.ollama\models\
  • Установка graphifyy через uv tool install

Task 0: Worktree setup (обязательно через superpowers:using-git-worktrees)

Files:

  • Create: .claude/worktrees/graphify-spike/ (полная копия репо)

  • Branch: spike/graphify-2026-05-27

  • Step 1: Invoke using-git-worktrees skill

Skill сам делает: git worktree add .claude/worktrees/graphify-spike -b spike/graphify-2026-05-27 (от текущего HEAD). NTFS-junction для node_modules если потребуется (квирк #108).

  • Step 2: Verify worktree

Run from main checkout: git worktree list Expected output contains: .claude/worktrees/graphify-spike <sha> [spike/graphify-2026-05-27]

  • Step 3: cd to worktree for subsequent tasks

Все последующие команды выполняются из .claude/worktrees/graphify-spike/ (worktree-path). Использовать absolute paths в Bash-командах, чтобы не путать checkout'ы (Pravila §15.1 prudence).


Task 1: .gitignore — добавить .graphify/

Files:

  • Modify: .gitignore (worktree)

  • Step 1: Read current .gitignore

Read worktree .gitignore чтобы найти подходящую секцию (обычно есть блок «Tools» или «Cache»).

  • Step 2: Add .graphify/ entry

Edit .gitignore, добавить:

# Graphify spike (2026-05-27)
.graphify/

В конец файла или в существующий «Cache» блок.

  • Step 3: Verify gitignore matches

Run: git check-ignore -v .graphify/test Expected: вывод указывает на новую строку в .gitignore.

  • Step 4: Commit
git -C .claude/worktrees/graphify-spike add .gitignore
git -C .claude/worktrees/graphify-spike commit -m "chore(spike): gitignore .graphify/ before install"

Task 2: Установить Ollama (Windows сервис)

Files: машинные изменения, не репо.

  • Step 1: Check if Ollama already installed

Run: where ollama (PowerShell) или which ollama (Bash) Expected (если установлен): путь к ollama.exe. Если выводит «not found» — переход к Step 2.

  • Step 2: Install via winget

Run: winget install --id Ollama.Ollama -e --accept-source-agreements --accept-package-agreements Expected: «Successfully installed».

Если winget недоступен (квирк #56 на старых Windows): скачать installer вручную с https://ollama.com/download/windows, запустить OllamaSetup.exe.

  • Step 3: Verify Ollama service running

Run (PowerShell): Get-Service -Name Ollama | Select-Object Status, Name Expected: Status: Running, Name: Ollama.

Если Stopped: Start-Service Ollama.

  • Step 4: Verify HTTP endpoint

Run: curl http://localhost:11434/api/tags Expected: JSON {"models":[]} (модели ещё нет).

  • Step 5: Verify CLI

Run: ollama --version Expected: версия вида ollama version 0.X.Y.


Task 3: Скачать модель qwen2.5:7b + проверить русский

Files: машинные изменения.

  • Step 1: Pull model

Run: ollama pull qwen2.5:7b Expected: progress-bar, в конце «success». Размер ~4.7 ГБ. Это занимает 5-20 мин зависит от канала.

  • Step 2: Verify model registered

Run: ollama list Expected: строка qwen2.5:7b ... 4.7 GB.

  • Step 3: Smoke-test русским

Run: ollama run qwen2.5:7b "Извлеки главную концепцию из абзаца: 'Pravila §15.2 — pre-flight sync обязателен перед правкой нормативных файлов чтобы избежать collision параллельных Claude-сессий'. Ответь одной фразой по-русски." Expected: осмысленный русский ответ, упоминающий «pre-flight sync», «параллельные сессии», или «нормативные файлы». Если ответ — мусор/английский/хайку — это ранний RED-сигнал, фиксируем для отчёта.

  • Step 4: Записать время и RAM первого запроса

Run (после Step 3, в отдельном окне): Get-Process ollama* | Select-Object Name, WorkingSet64 Expected: WorkingSet64 ~5-7 ГБ.

Зафиксировать в черновике отчёта: «модель загружена, smoke-test русского: PASS/FAIL, RAM при запросе: X ГБ».


Task 4: Установить uv + Graphify

Files: машинные изменения.

  • Step 1: Check uv installed

Run: uv --version Expected (если установлен): uv X.Y.Z. Если «not found» — переход к Step 2.

  • Step 2: Install uv

Run (PowerShell): powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" Expected: «uv installed successfully». Перезапустить shell для PATH update.

  • Step 3: Install graphifyy package

Run: uv tool install graphifyy Expected: «Installed: graphify». Note: package name graphifyy с двумя y (per разведка).

  • Step 4: Verify graphify CLI

Run: graphify --version Expected: версия 0.8.20 (или новее).

  • Step 5: Register as Claude Code skill

Run: graphify install Expected: создаётся .claude/skills/graphify/ или эквивалент. NB: в spike-worktree это нормально; в main checkout — не делать (out-of-scope spike).

  • Step 6: Verify skill registered (worktree-local)

Run: ls .claude/skills/ | grep -i graphify Expected: запись graphify присутствует.

  • Step 7: Verify Ollama backend configured

Run: graphify config show (или эквивалент, см. graphify --help) Expected: backend = ollama, model = qwen2.5:7b.

Если backend другой: graphify config set backend ollama + graphify config set model qwen2.5:7b.


Task 5: Сконфигурировать ignore-список Graphify

Files:

  • Create (worktree): .graphify/config.toml (или эквивалент per Graphify docs)

  • Step 1: Узнать формат конфига

Run: graphify config init (если поддерживается) или graphify --help для документации. Expected: создаётся файл-шаблон конфигурации (.graphify/config.toml или .graphifyignore или эквивалент).

  • Step 2: Add ignore patterns

В конфиг (формат зависит от Graphify — .graphifyignore gitignore-style или [ignore] секция в TOML):

# Out-of-scope spike (per spec §4.2)
node_modules/
vendor/
bin/
liderra_v8_handoff/
web/
db/schema.sql
db/00_create_roles.sql
.env
.env.*
docs/observer/episodes-*.jsonl
docs/superpowers/audits/
docs/discovery/
  • Step 3: Verify ignore работает

Run: graphify scan --dry-run . (или эквивалент, dry-run/preview команда) Expected: список файлов для индексации не содержит ни одного из ignore-паттернов выше. Особенно важно: episodes-*.jsonl отсутствует (PII-риск).

  • Step 4: Sanity check scope

Manually grep dry-run output: должны быть app/, docs/Pravila_*.md, .claude/skills/*.md. НЕ должно быть liderra_v8_handoff/, node_modules/.

  • Step 5: Commit конфига
git -C .claude/worktrees/graphify-spike add .graphify/config.toml  # или .graphifyignore — что Graphify создал
git -C .claude/worktrees/graphify-spike commit -m "chore(spike): graphify ignore-config (scope app+docs+.claude, exclude secrets/PII/handoff)"

NB: сам .graphify/ директорий в .gitignore per Task 1, но config-файл коммитим явно (опция git add -f если потребуется).


Task 6: Первая сборка графа + измерения

Files:

  • Create (worktree, gitignored): .graphify/graph.* (формат — Graphify-internal)

  • Step 1: Засечь start time

Run: Get-Date -Format "yyyy-MM-dd HH:mm:ss" → сохранить в черновик отчёта как BUILD_START.

  • Step 2: Запустить полную сборку

Run: graphify build . (или graphify index . — точная команда per CLI) Expected: progress-bar по фазам (Tree-sitter parse → Ollama semantic). Tree-sitter — быстро (~1-2 мин), Ollama — главное ожидание (1-3ч).

Если процесс падает / висит >3ч / RAM >12 ГБ: kill, фиксировать как ранний RED, переход к Task 12 RED-протокол.

  • Step 3: Засечь end time

После завершения: Get-Date -Format "yyyy-MM-dd HH:mm:ss"BUILD_END. Дельта = время первой сборки.

  • Step 4: Измерить размер графа

Run: (Get-ChildItem -Recurse .graphify | Measure-Object -Property Length -Sum).Sum / 1MB Expected (прогноз): 50-200 МБ. Зафиксировать фактическое.

  • Step 5: Измерить количество узлов/рёбер

Run: graphify stats (или эквивалент) Expected: Nodes: NNNN, Edges: MMMM. Прогноз 3-4k nodes. Зафиксировать.

  • Step 6: Измерить покрытие docs/

Run: graphify stats --filter "docs/**/*.md" (если поддерживается) или manually считать из логов сборки сколько MD-файлов успешно обработано. Expected: процент успешно обработанных Ollama файлов. Если <70% — ранний YELLOW-сигнал.

  • Step 7: Измерить RAM Ollama в idle (после сборки)

Подождать 5 мин после сборки. Run: Get-Process ollama* | Select-Object Name, @{N='RAM_GB';E={$_.WorkingSet64/1GB}} Expected (порог GREEN): <8 ГБ. Зафиксировать.

  • Step 8: Записать все метрики в черновик отчёта

Edit docs/discovery/2026-05-27-graphify-spike.md (создан в Task 11) заполнить секцию «Базовые метрики» (даже если файл ещё не создан — держать черновик в памяти/scratch).


Task 7: Baseline-задача 1 — «tenant_id в SetTenantContext»

Files:

  • Create (опционально, для prosperity): docs/discovery/2026-05-27-graphify-spike-baseline-A/task1-transcript.md

  • Step 1: A-вариант (baseline без графа) — открыть свежую Claude-сессию

В новой сессии Claude Code (или в текущей, перед загрузкой /graphify), задать промпт:

«Где обрабатывается tenant_id в SetTenantContext? Покажи файл, метод, и как middleware устанавливает app.current_tenant_id в PostgreSQL.»

Дать Claude отработать классически (Read/Grep/Glob).

  • Step 2: Зафиксировать A-метрики

Записать в черновик:

  • Кол-во tool-calls (Read+Grep+Glob): N_A
  • Суммарный размер прочитанных файлов в KB: SIZE_A
  • Время до финального ответа: T_A (грубо)
  • Качество ответа (1-5 субъективно)

Источник tool-calls — посчитать вручную по UI или из episodes JSONL (если включена observer).

  • Step 3: B-вариант (с графом) — загрузить Graphify в той же или новой сессии

В Claude Code: /graphify . (активация skill). Дождаться подтверждения «граф загружен».

  • Step 4: Задать тот же промпт

Тот же текст вопроса. Claude должен сначала запросить граф через graphify-команды, потом отвечать.

  • Step 5: Зафиксировать B-метрики

  • Кол-во tool-calls: N_B

  • Суммарный размер запросов к графу + последующих Read: SIZE_B

  • Время: T_B

  • Качество (1-5)

  • Step 6: Вычислить дельту

Экономия токенов task1: (SIZE_A - SIZE_B) / SIZE_A * 100% Экономия tool-calls task1: (N_A - N_B) / N_A * 100%

Записать в черновик отчёта строкой задачи 1.

  • Step 7: Commit транскрипта (опционально)
git -C .claude/worktrees/graphify-spike add docs/discovery/2026-05-27-graphify-spike-baseline-A/task1-transcript.md
git -C .claude/worktrees/graphify-spike commit -m "spike: baseline task 1 A-transcript (tenant_id setter)"

Task 8: Baseline-задача 2 — «Pravila про параллельные сессии»

Files: аналогично Task 7.

  • Step 1: A-вариант — свежая сессия, без /graphify

Промпт:

«Что говорит Pravila про параллельные Claude-сессии? Перечисли подсекции §15 с кратким смыслом каждой.»

  • Step 2: A-метрики (N_A, SIZE_A, T_A, quality_A)

  • Step 3: B-вариант — /graphify .

  • Step 4: Тот же промпт

  • Step 5: B-метрики (N_B, SIZE_B, T_B, quality_B)

  • Step 6: Дельта task 2

  • Step 7: Commit транскрипта (опционально)

git -C .claude/worktrees/graphify-spike add docs/discovery/2026-05-27-graphify-spike-baseline-A/task2-transcript.md
git -C .claude/worktrees/graphify-spike commit -m "spike: baseline task 2 A-transcript (Pravila §15 parallel sessions)"

Task 9: Baseline-задача 3 — «Job-классы, трогающие LedgerService»

Files: аналогично.

  • Step 1: A-вариант

Промпт:

«Покажи все Job-классы (app/Jobs/), которые вызывают методы LedgerService. Перечисли имя джоба и какой метод сервиса зовётся.»

  • Step 2-7: повтор паттерна Task 7-8

Code-graph навигация — здесь Graphify должен сиять (function-call graph). Если экономии нет здесь — это серьёзный RED-сигнал.

  • Step 8: Commit транскрипта

Task 10: Baseline-задача 4 — «ADR Universal Icons MCP граница»

  • Step 1: A-вариант

Промпт:

«В каком ADR решение про границу Universal Icons MCP против Lucide icons? Покажи Decision-item и Consequences.»

  • Step 2-7: повтор паттерна

Кросс-доковая навигация. Graphify должен найти ADR-006 Decision-4 без чтения 12 ADR-файлов.

  • Step 8: Commit

Task 11: Baseline-задача 5 — «DEFERRED узлы Tooling»

  • Step 1: A-вариант

Промпт:

«Какие узлы в Tooling Прил.Н помечены как DEFERRED (статус pending install / pending Б-1 / нет нужного окружения)? Перечисли номера и причину defer.»

  • Step 2-7: повтор

Структурный запрос по нормативке. Если Graphify не извлёк attribute-блоки из Tooling — это YELLOW-сигнал для русско-язычной семантики.

  • Step 8: Commit

Task 12: Инкрементальная пере-сборка — измерить время

Files:

  • Modify (worktree, throwaway): любой markdown в docs/ (вернуть после)

  • Step 1: Сделать throwaway-правку

Edit docs/Pravila_raboty_Claude_v1_1.md — добавить в конец строку <!-- spike-test 2026-05-27 -->. Сохранить.

  • Step 2: Засечь время инкремента

Run: Get-Date -Format "HH:mm:ss" → start. Run: graphify update . (или эквивалент инкрементальной команды). Run: Get-Date -Format "HH:mm:ss" → end. Дельта = время инкремента.

Expected (порог GREEN): <2 мин. Зафиксировать фактическое.

  • Step 3: Откатить правку

Run (worktree): git checkout docs/Pravila_raboty_Claude_v1_1.md Verify: правка ушла, файл чистый.

  • Step 4: Записать метрику инкремента в отчёт

Task 13: Написать отчёт docs/discovery/2026-05-27-graphify-spike.md

Files:

  • Create (worktree): docs/discovery/2026-05-27-graphify-spike.md

  • Step 1: Создать файл по шаблону

# Graphify Spike — Results Report

**Дата:** 2026-05-27
**Spec:** [../superpowers/specs/2026-05-27-graphify-spike-design.md](../superpowers/specs/2026-05-27-graphify-spike-design.md)
**Plan:** [../superpowers/plans/2026-05-27-graphify-spike.md](../superpowers/plans/2026-05-27-graphify-spike.md)
**Вердикт:** GREEN / YELLOW / RED (заполнить по итогам)

## 1. Окружение

- Ollama: vX.Y.Z, qwen2.5:7b (4.7 ГБ)
- Graphify: vX.Y.Z
- Worktree: `.claude/worktrees/graphify-spike`
- OS: Windows Server 2022

## 2. Базовые метрики

| Метрика | Значение | Порог GREEN |
|---|---|---|
| Время первой сборки | XX мин | <3ч |
| Размер `.graphify/` | XX МБ | (прогноз 50-200) |
| Узлов графа | XXXX | (прогноз 3-4k) |
| Покрытие docs/ (% MD успешно обработано) | XX% | ≥70% |
| RAM Ollama idle (после сборки, 5 мин позже) | X.X ГБ | <8 ГБ |
| Время инкрементальной пере-сборки 1 файла | X мин | <2 мин |

## 3. Smoke-test русского

Запрос: «Извлеки концепцию из абзаца про Pravila §15.2».
Ответ Ollama qwen2.5:7b: [вставить дословно]
Оценка: PASS / FAIL.

## 4. A/B замеры 5 задач

| # | Задача | N_A | SIZE_A KB | T_A | qual_A | N_B | SIZE_B KB | T_B | qual_B | Экономия KB | Экономия calls |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | tenant_id setter | | | | | | | | | XX% | XX% |
| 2 | Pravila §15 | | | | | | | | | XX% | XX% |
| 3 | LedgerService jobs | | | | | | | | | XX% | XX% |
| 4 | ADR Universal Icons | | | | | | | | | XX% | XX% |
| 5 | DEFERRED Tooling | | | | | | | | | XX% | XX% |
| **Среднее** | | | | | | | | | | **XX%** | **XX%** |

## 5. Qualitative observations

- Качество русского markdown семантики: (описание)
- Поведение Graphify на code-graph задачах: (описание)
- Поведение на кросс-доковых задачах: (описание)
- Stability / crashes / quirks Windows: (описание)

## 6. Exit decision

Применяя exit criteria spec §6:

- [ ] GREEN: все 4 условия GREEN → формализация Approach B следующей задачей
- [ ] YELLOW: одно из YELLOW-условий → личный инструмент контроллера, без Tooling-канона
- [ ] RED: одно из RED-условий → полный откат

**Вердикт:** ...

**Обоснование:** ...

## 7. Next steps (по вердикту)

(заполнить из spec §6 для выбранной ветки)
  • Step 2: Заполнить метрики собранные в Tasks 6-12

Все числовые ячейки таблиц заполнить фактическими.

  • Step 3: Заполнить qualitative observations

Чёрные субъективные впечатления — особенно про русский Ollama и поведение на нашем markdown-стиле.

  • Step 4: Commit отчёта (без вердикта)
git -C .claude/worktrees/graphify-spike add docs/discovery/2026-05-27-graphify-spike.md
git -C .claude/worktrees/graphify-spike commit -m "docs(spike): graphify spike metrics report (pre-verdict)"

Task 14: Принять решение GREEN/YELLOW/RED

Files:

  • Modify (worktree): docs/discovery/2026-05-27-graphify-spike.md (заполнить вердикт)

  • Step 1: Применить exit criteria spec §6

Проверить по таблице:

GREEN (все 4):
  avg_savings >= 30%  AND
  min 3 of 5 tasks >= 20%  AND
  incremental_time < 2min  AND
  ram_idle < 8GB

YELLOW (хотя бы одно):
  avg_savings 15-30%  OR
  works only on code (not markdown)  OR
  ram 8-12 GB

RED (хотя бы одно):
  avg_savings < 15%  OR
  Russian semantics = mess  OR
  build_time > 3h  OR
  ram > 12GB  OR
  Windows crashes
  • Step 2: Заполнить §6 «Exit decision» в отчёте

Поставить чекбокс на выбранной ветке. Обоснование с цифрами.

  • Step 3: Заполнить §7 «Next steps»

Скопировать соответствующие действия из spec §6 для выбранной ветки.

  • Step 4: Commit вердикта
git -C .claude/worktrees/graphify-spike add docs/discovery/2026-05-27-graphify-spike.md
git -C .claude/worktrees/graphify-spike commit -m "docs(spike): graphify spike verdict <GREEN|YELLOW|RED> + next steps"
  • Step 5: Show user the verdict + ask for next-step confirmation

Пользователю — короткое summary вердикта + предложить переход к Task 15 (один из 15-GREEN / 15-YELLOW / 15-RED).


Task 15-GREEN: Branch handling — merge to main, оставить Graphify установленным

Только если verdict = GREEN.

Files:

  • Modify: .gitignore (main)

  • Add: docs/discovery/2026-05-27-graphify-spike.md (main)

  • Step 1: cd to main checkout

cd c:/моя/проекты/портал crm/Документация

  • Step 2: Pre-flight sync per Pravila §15.2

Хотя spike не трогал 8 нормативных файлов, перед merge — стандартный sync:

git fetch origin
git log HEAD..origin/main --oneline

Если есть unmerged commits на origin/main — rebase спайк-ветки.

  • Step 3: Merge spike branch
git merge --no-ff spike/graphify-2026-05-27 -m "merge: graphify spike GREEN — verdict + .gitignore"

Expected: merge без конфликтов (только .gitignore +отчёт), оба файла новые/не пересекаются с main.

  • Step 4: Push
git push origin main
  • Step 5: Memory entry

Создать memory/project_graphify_spike_green.md:

---
name: project-graphify-spike-green
description: Graphify spike 2026-05-27 — GREEN verdict, awaiting Approach B (full integration as 19th off-phase)
metadata:
  type: project
---

Graphify spike (2026-05-27) показал GREEN: avg экономия XX%, RAM XX ГБ, build XX мин.

**Why:** evidence-driven решение перед формализацией; spec [[../specs/2026-05-27-graphify-spike-design.md]] выбрал spike-first.

**How to apply:** при следующей сессии — предложить Approach B (ADR-017 + #89 Tooling + 19-я off-phase подкатегория `knowledge-graph-tooling` + IS9 vet + lefthook + observer integration). До тех пор Graphify установлен и работает локально, но не в Tooling-каноне.

См. отчёт `docs/discovery/2026-05-27-graphify-spike.md`.

Добавить запись в MEMORY.md index:

- [Graphify spike GREEN](project_graphify_spike_green.md) — verdict GREEN 2026-05-27, awaiting Approach B
  • Step 6: Worktree cleanup

Worktree оставить активным (можно использовать дальше) ИЛИ удалить если уже не нужен:

git worktree remove .claude/worktrees/graphify-spike  # optional

Branch не удаляем — merge зафиксирован в истории main.

  • Step 7: Доложить пользователю

«GREEN — мерж в main <commit-sha>, push'нуто. Approach B (формализация) — отдельной задачей. Memory обновлён.»


Task 15-YELLOW: Branch handling — merge to main, личный инструмент без формализации

Только если verdict = YELLOW.

Files:

  • Same as 15-GREEN (.gitignore + отчёт)

  • Memory: memory/feedback_graphify_yellow.md

  • Step 1-4: same as 15-GREEN (cd main, pre-flight, merge, push)

  • Step 5: Memory entry с правилами использования

Создать memory/feedback_graphify_yellow.md:

---
name: feedback-graphify-yellow
description: Graphify spike 2026-05-27 — YELLOW verdict, личный инструмент контроллера без формализации в Tooling
metadata:
  type: feedback
---

Graphify работает частично (avg экономия XX%, [причина частичной]).

**Why:** spike 2026-05-27 показал YELLOW per exit criteria spec §6.

**How to apply:**
- Звать Graphify на: [конкретные классы задач где экономия была — например только код-граф, не markdown]
- НЕ звать на: [классы где экономии не было — например русский markdown семантика]
- Graphify установлен локально, в Tooling-каноне НЕ зарегистрирован (без #89, без ADR, без §3.3 row).
- Пересмотр при выходе Graphify v1.0 ИЛИ если появится более качественная локальная LLM для русского.

См. отчёт `docs/discovery/2026-05-27-graphify-spike.md`.

Добавить в MEMORY.md index аналогично GREEN.

  • Step 6: Worktree остаётся (для дальнейших вызовов graphify)

  • Step 7: Доложить пользователю

«YELLOW — мерж в main, Graphify работает частично, правила использования зафиксированы в memory.»


Task 15-RED: Branch handling — cherry-pick report, полный откат всего

Только если verdict = RED.

Files:

  • Cherry-pick to main: docs/discovery/2026-05-27-graphify-spike.md

  • Memory: memory/project_graphify_spike_negative.md

  • Step 1: cd to main checkout

cd c:/моя/проекты/портал crm/Документация

  • Step 2: Pre-flight sync per Pravila §15.2
git fetch origin
git log HEAD..origin/main --oneline
  • Step 3: Cherry-pick только отчёт (без .gitignore)

Найти SHA коммита отчёта (Task 13 Step 4 + Task 14 Step 4):

git log spike/graphify-2026-05-27 --oneline | grep "spike): graphify"

Cherry-pick последний (с вердиктом):

git cherry-pick <verdict-commit-sha>

Если конфликт (например файл docs/discovery/ оба ветки трогали) — git checkout --theirs <file> для версии из спайк-ветки.

  • Step 4: Push отчёт
git push origin main
  • Step 5: Memory entry (negative result)

Создать memory/project_graphify_spike_negative.md:

---
name: project-graphify-spike-negative
description: Graphify spike 2026-05-27 — RED verdict, полный откат; не пробовать снова без [условие]
metadata:
  type: project
---

Graphify v0.8.20 + Ollama qwen2.5:7b на Лидерре — RED.

**Why:** [конкретная RED-причина из вердикта — экономия <15% / Ollama-семантика мусор / RAM >12GB / crashes].

**How to apply:**
- НЕ предлагать Graphify-аналогичные инструменты до тех пор пока не изменилось [условие — например выйдет v1.0, или появится локальная LLM лучше qwen2.5:7b на русском].
- Альтернатива codegraph (colbymchenry) — не пробована, может быть пересмотрена отдельно если RED-причина была не в semantic-качестве.

См. отчёт `docs/discovery/2026-05-27-graphify-spike.md` (cherry-pick'нутый на main).

Добавить в MEMORY.md index.

  • Step 6: Удалить worktree
git worktree remove --force .claude/worktrees/graphify-spike

Expected: директория удалена.

  • Step 7: Удалить branch
git branch -D spike/graphify-2026-05-27
  • Step 8: Uninstall Graphify
uv tool uninstall graphifyy
  • Step 9: Удалить Ollama-модель
ollama rm qwen2.5:7b

Expected: освобождено ~4.7 ГБ диска.

  • Step 10: Uninstall Ollama сервис

Run (PowerShell): winget uninstall Ollama.Ollama -e Expected: «Successfully uninstalled».

Альтернативно — через Control Panel → Programs.

  • Step 11: Verify cleanup
where ollama  # should fail with "not found"
where graphify  # should fail with "not found"
Get-ChildItem $env:USERPROFILE\.ollama  # should not exist or be empty
  • Step 12: Доложить пользователю

«RED — откат завершён. Worktree/branch удалены, Graphify+Ollama+model снесены, отчёт cherry-pick'нут на main <sha>. Memory обновлён negative result. Освобождено ~5 ГБ диска.»


Self-Review (выполнено)

Spec coverage:

  • §1 Контекст → Tasks выполняют spike с реальными измерениями.
  • §2 Цель → Task 14 принимает решение по данным Tasks 7-12.
  • §3 Решения (7 штук) → Task 2 (Ollama), 3 (qwen2.5:7b), 4 (Graphify+install), 5 (ignore+scope), 6 (build).
  • §4.1 Окружение → Tasks 0+2+3+4.
  • §4.2 Scope → Task 5 ignore-конфиг.
  • §4.3 Хранение артефактов → Task 1 (.gitignore) + Task 13 (отчёт).
  • §5.1 Базовые метрики → Task 6 Steps 3-7 + Task 12.
  • §5.2 5 baseline-задач → Tasks 7-11.
  • §5.3 Не меряем → не нужны task'и (negative scope).
  • §6 Exit criteria → Task 14 + Tasks 15-GREEN/YELLOW/RED.
  • §7 Timeline → распределено по task'ам.
  • §8 Out-of-scope → не делается ни в одном task'е (явные пропуски нормативки/lefthook/observer).
  • §9 Что коммитим → .gitignore (Task 1) + отчёт (Tasks 13, 14) + опционально config (Task 5) + опционально транскрипты A (Tasks 7-11).
  • §10 Отложенное до Approach B → не делается.
  • §11 Связанные артефакты → ссылки в отчёте.

Placeholder scan:

  • Все «Step N» содержат конкретные команды.
  • ⚠️ Качество ответа A/B — субъективная оценка (1-5), это OK для спайка но не «implement later».
  • Нет «TODO», «TBD», «implement later».
  • ⚠️ Точные команды Graphify CLI могут отличаться от реальных — fallback через graphify --help явно указан в Tasks 5+6.

Type consistency:

  • qwen2.5:7b — везде с двоеточием.
  • graphifyy (double y) — npm-name, везде одинаково.
  • spike/graphify-2026-05-27 ветка — везде одинаково.
  • .claude/worktrees/graphify-spike путь — везде одинаково.

Self-review закрыт. Issues найденные — fix'ить inline по ходу исполнения если реальная CLI отличается.


Execution Handoff

Plan complete and saved to docs/superpowers/plans/2026-05-27-graphify-spike.md.

Two execution options:

1. Subagent-Driven (recommended) — я диспатчу свежий subagent на каждую task, ревьюю между задачами, быстрая итерация. Особенно подходит здесь — Task 6 (сборка графа 1-3ч) и Tasks 7-11 (по 30 мин каждая) — естественные точки чекпойнтов.

2. Inline Execution — выполняю tasks в этой сессии через executing-plans, batch-исполнение с чекпойнтами для ревью.

Какой подход?