code-ai-installer 4.0.1-a → 4.0.1-c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -5
  3. package/dist/catalog.js +1 -1
  4. package/dist/contentTransformer.d.ts +1 -1
  5. package/dist/contentTransformer.js +39 -0
  6. package/dist/index.js +10 -5
  7. package/dist/mcp/cli.js +4 -4
  8. package/dist/mcp/config.js +8 -6
  9. package/dist/mcp/scorecard.d.ts +2 -2
  10. package/dist/mcp/task_state.d.ts +2 -2
  11. package/dist/mcp/tools/advance_gate.js +1 -1
  12. package/dist/mcp/tools/classify_gate.d.ts +2 -2
  13. package/dist/mcp/tools/classify_gate.js +2 -2
  14. package/dist/mcp/tools/load_role.d.ts +2 -2
  15. package/dist/mcp/tools/load_role.js +2 -2
  16. package/dist/mcp/tools/report_exception.d.ts +3 -3
  17. package/dist/mcp/tools/report_exception.js +4 -4
  18. package/dist/mcp/tools/request_decision.d.ts +3 -3
  19. package/dist/mcp/tools/request_decision.js +5 -5
  20. package/dist/mcp/tools/review_proposal.d.ts +1 -1
  21. package/dist/mcp/tools/review_proposal.js +6 -6
  22. package/dist/mcp/tools/sign_off.d.ts +2 -2
  23. package/dist/mcp/tools/sign_off.js +7 -7
  24. package/dist/mcp/tools/verify_claim.d.ts +1 -1
  25. package/dist/mcp/tools/verify_claim.js +1 -1
  26. package/dist/mcp_setup.d.ts +85 -29
  27. package/dist/mcp_setup.js +184 -62
  28. package/dist/platforms/adapters.js +54 -19
  29. package/dist/shared/frontmatter.js +1 -1
  30. package/dist/shared/persona.d.ts +1 -1
  31. package/dist/shared/persona.js +1 -1
  32. package/dist/shared/pipeline.d.ts +10 -10
  33. package/dist/shared/pipeline.js +7 -7
  34. package/dist/shared/tools.d.ts +15 -15
  35. package/dist/shared/tools.js +3 -3
  36. package/dist/shared/vocabulary.d.ts +4 -4
  37. package/dist/shared/vocabulary.js +4 -4
  38. package/dist/types.d.ts +1 -1
  39. package/domains/analytics/.agents/workflows/analytics-pipeline-rules.md +13 -3
  40. package/domains/analytics/.agents/workflows/analyze.md +1 -0
  41. package/domains/analytics/.agents/workflows/quick-insight.md +1 -0
  42. package/domains/analytics/locales/en/.agents/workflows/analytics-pipeline-rules.md +13 -3
  43. package/domains/analytics/locales/en/.agents/workflows/analyze.md +1 -0
  44. package/domains/analytics/locales/en/.agents/workflows/quick-insight.md +1 -0
  45. package/domains/analytics/locales/en/agents/interviewer.md +2 -1
  46. package/domains/analytics/locales/en/agents/layouter.md +2 -1
  47. package/domains/analytics/locales/en/agents/mediator.md +2 -1
  48. package/domains/analytics/locales/en/agents/researcher.md +2 -1
  49. package/domains/analytics/locales/en/agents/strategist.md +2 -1
  50. package/domains/analytics/pipeline.yaml +10 -10
  51. package/domains/content/.agents/skills/content-release-gate/SKILL.md +3 -5
  52. package/domains/content/.agents/workflows/content-pipeline-rules.md +14 -11
  53. package/domains/content/.agents/workflows/edit-content.md +0 -1
  54. package/domains/content/.agents/workflows/quick-post.md +0 -1
  55. package/domains/content/.agents/workflows/start-content.md +0 -1
  56. package/domains/content/agents/conductor.md +1 -2
  57. package/domains/content/locales/en/.agents/skills/content-release-gate/SKILL.md +3 -5
  58. package/domains/content/locales/en/.agents/workflows/content-pipeline-rules.md +14 -11
  59. package/domains/content/locales/en/.agents/workflows/edit-content.md +0 -1
  60. package/domains/content/locales/en/.agents/workflows/quick-post.md +0 -1
  61. package/domains/content/locales/en/.agents/workflows/start-content.md +0 -1
  62. package/domains/content/locales/en/agents/conductor.md +1 -2
  63. package/domains/content/pipeline.yaml +8 -8
  64. package/domains/development/.agents/skills/handoff/SKILL.md +276 -276
  65. package/domains/development/.agents/skills/lava-flow-legacy-detection/SKILL.md +197 -197
  66. package/domains/development/.agents/skills/mcp-integration/SKILL.md +211 -211
  67. package/domains/development/.agents/skills/qa-test-data-management/SKILL.md +250 -250
  68. package/domains/development/.agents/workflows/bugfix.md +16 -82
  69. package/domains/development/.agents/workflows/hotfix.md +16 -66
  70. package/domains/development/.agents/workflows/pipeline-rules.md +49 -132
  71. package/domains/development/.agents/workflows/start-task.md +17 -121
  72. package/domains/development/AGENTS.md +8 -3
  73. package/domains/development/agents/architect.md +247 -247
  74. package/domains/development/agents/conductor.md +363 -363
  75. package/domains/development/agents/devops.md +297 -297
  76. package/domains/development/agents/reviewer.md +293 -293
  77. package/domains/development/agents/senior_full_stack.md +295 -295
  78. package/domains/development/agents/tester.md +395 -395
  79. package/domains/development/locales/en/.agents/skills/handoff/SKILL.md +276 -276
  80. package/domains/development/locales/en/.agents/skills/lava-flow-legacy-detection/SKILL.md +197 -197
  81. package/domains/development/locales/en/.agents/skills/mcp-integration/SKILL.md +211 -211
  82. package/domains/development/locales/en/.agents/skills/qa-test-data-management/SKILL.md +250 -250
  83. package/domains/development/locales/en/.agents/workflows/bugfix.md +16 -82
  84. package/domains/development/locales/en/.agents/workflows/hotfix.md +15 -65
  85. package/domains/development/locales/en/.agents/workflows/pipeline-rules.md +48 -131
  86. package/domains/development/locales/en/.agents/workflows/start-task.md +17 -121
  87. package/domains/development/locales/en/AGENTS.md +15 -0
  88. package/domains/development/locales/en/agents/architect.md +247 -247
  89. package/domains/development/locales/en/agents/conductor.md +363 -363
  90. package/domains/development/locales/en/agents/devops.md +297 -297
  91. package/domains/development/locales/en/agents/reviewer.md +293 -293
  92. package/domains/development/locales/en/agents/senior_full_stack.md +295 -295
  93. package/domains/development/locales/en/agents/tester.md +395 -395
  94. package/domains/development/locales/en/prompt-examples.md +34 -120
  95. package/domains/development/pipeline.yaml +150 -135
  96. package/domains/development/prompt-examples.md +33 -119
  97. package/domains/product/.agents/workflows/product-pipeline-rules.md +13 -2
  98. package/domains/product/.agents/workflows/quick-pm.md +1 -1
  99. package/domains/product/.agents/workflows/shape-prioritize.md +1 -0
  100. package/domains/product/.agents/workflows/ship-right-thing.md +1 -0
  101. package/domains/product/.agents/workflows/spec.md +1 -0
  102. package/domains/product/agents/tech_lead.md +1 -1
  103. package/domains/product/locales/en/.agents/workflows/product-pipeline-rules.md +13 -2
  104. package/domains/product/locales/en/.agents/workflows/quick-pm.md +1 -1
  105. package/domains/product/locales/en/.agents/workflows/shape-prioritize.md +1 -0
  106. package/domains/product/locales/en/.agents/workflows/ship-right-thing.md +1 -0
  107. package/domains/product/locales/en/.agents/workflows/spec.md +1 -0
  108. package/domains/product/locales/en/agents/conductor.md +2 -2
  109. package/domains/product/locales/en/agents/data_analyst.md +2 -1
  110. package/domains/product/locales/en/agents/designer.md +2 -1
  111. package/domains/product/locales/en/agents/discovery.md +2 -1
  112. package/domains/product/locales/en/agents/layouter.md +2 -1
  113. package/domains/product/locales/en/agents/mediator.md +2 -1
  114. package/domains/product/locales/en/agents/pm.md +2 -1
  115. package/domains/product/locales/en/agents/product_strategist.md +2 -1
  116. package/domains/product/locales/en/agents/tech_lead.md +3 -2
  117. package/domains/product/locales/en/agents/ux_designer.md +2 -1
  118. package/domains/product/pipeline.yaml +12 -12
  119. package/package.json +5 -5
  120. package/domains/analytics/CONTEXT.md +0 -25
  121. package/domains/analytics/locales/en/CONTEXT.md +0 -25
  122. package/domains/content/CONTEXT.md +0 -19
  123. package/domains/content/locales/en/CONTEXT.md +0 -19
  124. package/domains/development/.agents/workflows/auto-restart-containers.md +0 -56
  125. package/domains/development/CONTEXT.md +0 -62
  126. package/domains/development/locales/en/.agents/workflows/auto-restart-containers.md +0 -24
  127. package/domains/development/locales/en/CONTEXT.md +0 -62
  128. package/domains/product/CONTEXT.md +0 -40
  129. package/domains/product/locales/en/CONTEXT.md +0 -40
@@ -1,197 +1,197 @@
1
- ---
2
- name: lava-flow-legacy-detection
3
- description: Чек-лист признаков "лава-флоу" в legacy/brownfield коде — мёртвый код вокруг живого, не убранные feature flags, окаменевшие workarounds, дубликаты после миграций. Используй при анализе текущего состояния репозитория, перед рефакторингом и при ревью PR в зрелой кодовой базе. Активируй при упоминаниях "legacy", "технический долг", "brownfield", "почему этот код здесь".
4
- type: reference
5
- domain: development
6
- owners:
7
- - architect
8
- - reviewer
9
- - senior_full_stack
10
- gates:
11
- - ARCH
12
- - DEV
13
- - REV
14
- tech: []
15
- topic:
16
- - architecture
17
- - refactoring
18
- - legacy
19
- triggers:
20
- - легаси код
21
- - мёртвый код
22
- - лава-флоу
23
- - неубранный feature flag
24
- - brownfield рефакторинг
25
- - окаменевший workaround
26
- - неиспользуемый код
27
- related:
28
- - current-state-analysis
29
- - architecture-compliance-review
30
- - architecture-doc-reference
31
- - design-patterns-reference
32
- - adr-log
33
- - adr-log-reference
34
- - threat-model-baseline
35
- - security-baseline-dev
36
- - code-review-checklist
37
- - system-design-checklist
38
- budget_lines: 250
39
- schema_version: 1
40
- ---
41
-
42
-
43
- # Skill: Lava Flow Legacy Detection
44
-
45
- Анти-паттерн «лава-флоу» (Brown et al., *AntiPatterns*, 1998) — застывшая масса кода, попавшая в продакшен без должного контроля. Никто не помнит, зачем она тут, удалить страшно (нет тестов), переписать дорого. С каждым релизом слой утолщается.
46
-
47
- > **Когда применять:** ARCH (current-state analysis), DEV (перед изменением старого модуля), REV (ревью PR в зрелой кодовой базе). Reference-скил — активация через триггеры фронтматтера; см. § MCP integration ниже для cross-gate потребления.
48
-
49
- **Разделы:**
50
- 1. [Признаки лава-флоу](#1-признаки)
51
- 2. [Чек-лист проверки](#2-чеклист)
52
- 3. [Что делать с находкой](#3-что-делать)
53
- 4. [Что НЕ делать](#4-чего-избегать)
54
- 5. [Шаблон отчёта](#5-отчёт)
55
-
56
- ---
57
-
58
- ## 1. Признаки
59
-
60
- ### 1.1 Структурные
61
-
62
- | # | Признак | Как обнаружить |
63
- |---|---------|----------------|
64
- | LF-01 | Закомментированные блоки кода в продакшен-файлах | grep по `//` / `/*` блокам >5 строк |
65
- | LF-02 | Ветки кода, которые никогда не выполняются | покрытие тестами / coverage report 0% на ветке |
66
- | LF-03 | Функции/классы без входящих ссылок | static analysis (ts-prune, knip, unimport) |
67
- | LF-04 | Параллельные «версии» одной логики (v1/v2/legacy/new) | grep по суффиксам имён |
68
- | LF-05 | Дубликаты после неоконченных миграций | сравнить директории `old/`, `legacy/`, `deprecated/` |
69
- | LF-06 | Файлы без изменений дольше половины возраста репозитория | `git log -1 --format=%cd -- <file>` или `find <dir> -name '*.ts' -mtime +<дней>` |
70
-
71
- ### 1.2 Конфигурационные
72
-
73
- | # | Признак | Как обнаружить |
74
- |---|---------|----------------|
75
- | LF-07 | Feature flags, которые всегда `false` (или всегда `true`) | grep по `flag.*= false`, проверить usage в коде |
76
- | LF-08 | Конфиг-ключи, которые никто не читает | grep значения ключа по кодовой базе |
77
- | LF-09 | Env-переменные, которые не упомянуты в `.env.example` | diff между `process.env.X` и `.env.example` |
78
- | LF-10 | Захардкоженные mock/stub данные на продакшен-пути | grep по `MOCK_`, `STUB_`, `fake_`, `dummy_` |
79
-
80
- ### 1.3 Поведенческие
81
-
82
- | # | Признак | Как обнаружить |
83
- |---|---------|----------------|
84
- | LF-11 | Воркараунды, ставшие постоянными | grep по `TODO`, `FIXME`, `HACK`, `XXX` старше 6 мес |
85
- | LF-12 | Захардкоженные version/environment checks на мёртвое окружение | grep по `if.*IE`, `if.*v1`, `if.*LEGACY` где правая сторона больше не существует |
86
- | LF-13 | Неактивные cron jobs / scheduled tasks | `crontab -l` + grep логов за 3 мес; `systemctl list-timers --all`; `kubectl get cronjob -o wide` (lastScheduleTime) |
87
- | LF-14 | Endpoints без вызовов из фронта/других сервисов | grep route paths по всему монорепо |
88
- | LF-15 | Маршруты в роутере, ведущие на 404 или пустые компоненты | unit test обходом всех routes |
89
-
90
- ### 1.4 Примеры в коде
91
-
92
- **Лава** — закомментированный fallback на удалённую систему:
93
-
94
- ```ts
95
- // Старый auth flow до миграции на Auth0 (2024)
96
- // if (legacyAuth.enabled) {
97
- // const session = await legacyAuth.login(creds);
98
- // return mapLegacySession(session);
99
- // }
100
- const session = await auth0.login(creds);
101
- ```
102
- > `legacyAuth` модуль удалён 18 мес назад. Комментарий — окаменелость, история уже в git. **Решение:** удалить.
103
-
104
- **Не лава** — комментарий объясняет неочевидное (Chesterton's fence):
105
-
106
- ```ts
107
- // +1 потому что Date.getMonth() возвращает 0-11.
108
- // Если кто-то «поправит» на getMonth() — поломает отчёты по январю.
109
- const month = date.getMonth() + 1;
110
- ```
111
- > Комментарий несёт смысл, защищает код от ложно-очевидной правки. **Решение:** оставить.
112
-
113
- ---
114
-
115
- ## 2. Чеклист
116
-
117
- Применять перед рефакторингом модуля или при первом погружении в legacy-репозиторий.
118
-
119
- - [ ] Прогнать `ts-prune` / `knip` / эквивалент → собрать список unreachable
120
- - [ ] Прогнать coverage на затрагиваемых файлах → отметить 0%-ветки
121
- - [ ] `git log --since=24.months.ago -- <file>` → выявить «застывшие» файлы
122
- - [ ] Найти все `TODO/FIXME/HACK` старше 6 месяцев → решить: fix или delete
123
- - [ ] Перечислить feature flags в проекте → для каждого проверить, меняется ли значение
124
- - [ ] Перечислить env-переменные → пометить unused
125
- - [ ] Для каждой подозрительной функции — найти все usages → если 0, помечать к удалению
126
- - [ ] Зафиксировать находки в отчёте (формат ниже) до начала рефакторинга
127
-
128
- ---
129
-
130
- ## 3. Что делать
131
-
132
- **Принцип:** удаление лава-флоу — отдельная задача, не часть фичевого PR. **Перед удалением — `git blame` на блок.** Если автор активен в команде — спросить контекст (часто экономит часы и предотвращает удаление чего-то скрыто-полезного). Если автор ушёл или код старше ~24 мес — `git blame` только археология, ходить дальше по чеклисту.
133
-
134
- 1. **Отчёт ДО изменений.** Перечислить находки в отдельном документе (`docs/reports/architect/lava-flow-<module>.md`). Без согласования архитектора не удалять.
135
- 2. **Тестовое покрытие ПЕРЕД удалением.** Если ветка не покрыта тестами — сначала характеризационные тесты (Working Effectively with Legacy Code, M. Feathers), потом удаление.
136
- 3. **Малыми PR.** Один PR = одна находка. Не «удалить весь deprecated/». Атомарность даёт ясную точку отката.
137
- 4. **Feature flag → удалить «выключенную» сторону.** Если флаг 100% в одном положении дольше 1 релиза — удалять противоположную ветку. **НО:** если флаг переключался хотя бы раз за последний релиз — это live config, не лава; не трогать (Chesterton's fence — кто-то им активно пользуется).
138
- 5. **ADR при сомнениях.** Если непонятно, зачем код существует — `$adr-log` с вариантами «удалить / оставить / переписать», эскалация на Architect.
139
-
140
- ---
141
-
142
- ## 4. Чего избегать
143
-
144
- - ❌ **«Заодно почищу»** — лава-флоу не убирается ad-hoc внутри фичевого PR. Размывает diff, ломает ревью.
145
- - ❌ **Массовое удаление без тестов** — характеризационные тесты обязательны для непокрытых веток.
146
- - ❌ **Переименование вместо удаления** — `_old`, `_deprecated_v2` создают новый слой лавы.
147
- - ❌ **Комментарий «потом разберёмся»** — это та же лава, только в зародыше. Решение сейчас: delete или ADR.
148
- - ❌ **Сохранение «на всякий случай»** — git history — это уже архив.
149
-
150
- ---
151
-
152
- ## 5. Отчёт
153
-
154
- ```markdown
155
- # Lava Flow Report — <module-name>
156
-
157
- **Дата:** <YYYY-MM-DD>
158
- **Автор:** <agent>
159
- **Контекст:** <зачем смотрели — refactor / current-state / review>
160
-
161
- ## Находки
162
-
163
- | # | ID | Файл/строка | Признак | Решение |
164
- |---|----|-------------|---------|---------|
165
- | 1 | LF-01 | src/foo.ts:120-180 | Закомментированный блок 60 строк | DELETE (PR #N) |
166
- | 2 | LF-07 | src/config/flags.ts:42 | Флаг `useNewAuth` = false уже 8 мес | DELETE old branch (PR #N+1) |
167
- | 3 | LF-04 | src/api/users-v1.ts | Дубликат users-v2.ts, никем не используется | DELETE (ADR-DEV-XXX) |
168
-
169
- ## Эскалации
170
- - <если есть случаи, где нужен Architect/DEN sign-off>
171
-
172
- ## План закрытия
173
- - <разбивка на PR с порядком>
174
- ```
175
-
176
- ---
177
- ## Ссылки на смежные навыки
178
-
179
- - `$current-state-analysis` — общий аудит репозитория, лава-флоу — один из его выходов
180
- - `$architecture-compliance-review` — проверка соответствия архитектуре после удаления
181
- - `$design-patterns-reference` — что использовать ВМЕСТО удалённой лавы
182
- - `$code-review-checklist` — на этапе ревью PR с удалением
183
- - `$system-design-checklist` — чтобы новый код не стал следующей лавой
184
-
185
- ---
186
-
187
- ## MCP integration (cross-gate activation)
188
-
189
- Reference-скил с cross-gate потреблением:
190
-
191
- - **ARCH (primary)** — `architect` использует в current-state analysis перед предложением рефакторинга
192
- - **DEV (secondary)** — `senior_full_stack` сверяется перед изменением старого модуля
193
- - **REV (secondary)** — `reviewer` применяет при ревью PR в зрелой кодовой базе
194
-
195
- Активация через триггеры фронтматтера (`legacy код`, `мёртвый код`, `лава-флоу`, `неубранный feature flag`, `brownfield рефакторинг`, и т.д.). См. `$mcp-integration` для общего MCP-flow, gate ritual и recording discipline.
196
-
197
- Section IDs (`LF-01..LF-25`) — стабильные якоря: цитируй их inline в ARCH/REV артефактах вместо копирования содержания. Сохраняет audit trail компактным и обеспечивает обратную ссылку на канонический источник.
1
+ ---
2
+ name: lava-flow-legacy-detection
3
+ description: Чек-лист признаков "лава-флоу" в legacy/brownfield коде — мёртвый код вокруг живого, не убранные feature flags, окаменевшие workarounds, дубликаты после миграций. Используй при анализе текущего состояния репозитория, перед рефакторингом и при ревью PR в зрелой кодовой базе. Активируй при упоминаниях "legacy", "технический долг", "brownfield", "почему этот код здесь".
4
+ type: reference
5
+ domain: development
6
+ owners:
7
+ - architect
8
+ - reviewer
9
+ - senior_full_stack
10
+ gates:
11
+ - ARCH
12
+ - DEV
13
+ - REV
14
+ tech: []
15
+ topic:
16
+ - architecture
17
+ - refactoring
18
+ - legacy
19
+ triggers:
20
+ - легаси код
21
+ - мёртвый код
22
+ - лава-флоу
23
+ - неубранный feature flag
24
+ - brownfield рефакторинг
25
+ - окаменевший workaround
26
+ - неиспользуемый код
27
+ related:
28
+ - current-state-analysis
29
+ - architecture-compliance-review
30
+ - architecture-doc-reference
31
+ - design-patterns-reference
32
+ - adr-log
33
+ - adr-log-reference
34
+ - threat-model-baseline
35
+ - security-baseline-dev
36
+ - code-review-checklist
37
+ - system-design-checklist
38
+ budget_lines: 250
39
+ schema_version: 1
40
+ ---
41
+
42
+
43
+ # Skill: Lava Flow Legacy Detection
44
+
45
+ Анти-паттерн «лава-флоу» (Brown et al., *AntiPatterns*, 1998) — застывшая масса кода, попавшая в продакшен без должного контроля. Никто не помнит, зачем она тут, удалить страшно (нет тестов), переписать дорого. С каждым релизом слой утолщается.
46
+
47
+ > **Когда применять:** ARCH (current-state analysis), DEV (перед изменением старого модуля), REV (ревью PR в зрелой кодовой базе). Reference-скил — активация через триггеры фронтматтера; см. § MCP integration ниже для cross-gate потребления.
48
+
49
+ **Разделы:**
50
+ 1. [Признаки лава-флоу](#1-признаки)
51
+ 2. [Чек-лист проверки](#2-чеклист)
52
+ 3. [Что делать с находкой](#3-что-делать)
53
+ 4. [Что НЕ делать](#4-чего-избегать)
54
+ 5. [Шаблон отчёта](#5-отчёт)
55
+
56
+ ---
57
+
58
+ ## 1. Признаки
59
+
60
+ ### 1.1 Структурные
61
+
62
+ | # | Признак | Как обнаружить |
63
+ |---|---------|----------------|
64
+ | LF-01 | Закомментированные блоки кода в продакшен-файлах | grep по `//` / `/*` блокам >5 строк |
65
+ | LF-02 | Ветки кода, которые никогда не выполняются | покрытие тестами / coverage report 0% на ветке |
66
+ | LF-03 | Функции/классы без входящих ссылок | static analysis (ts-prune, knip, unimport) |
67
+ | LF-04 | Параллельные «версии» одной логики (v1/v2/legacy/new) | grep по суффиксам имён |
68
+ | LF-05 | Дубликаты после неоконченных миграций | сравнить директории `old/`, `legacy/`, `deprecated/` |
69
+ | LF-06 | Файлы без изменений дольше половины возраста репозитория | `git log -1 --format=%cd -- <file>` или `find <dir> -name '*.ts' -mtime +<дней>` |
70
+
71
+ ### 1.2 Конфигурационные
72
+
73
+ | # | Признак | Как обнаружить |
74
+ |---|---------|----------------|
75
+ | LF-07 | Feature flags, которые всегда `false` (или всегда `true`) | grep по `flag.*= false`, проверить usage в коде |
76
+ | LF-08 | Конфиг-ключи, которые никто не читает | grep значения ключа по кодовой базе |
77
+ | LF-09 | Env-переменные, которые не упомянуты в `.env.example` | diff между `process.env.X` и `.env.example` |
78
+ | LF-10 | Захардкоженные mock/stub данные на продакшен-пути | grep по `MOCK_`, `STUB_`, `fake_`, `dummy_` |
79
+
80
+ ### 1.3 Поведенческие
81
+
82
+ | # | Признак | Как обнаружить |
83
+ |---|---------|----------------|
84
+ | LF-11 | Воркараунды, ставшие постоянными | grep по `TODO`, `FIXME`, `HACK`, `XXX` старше 6 мес |
85
+ | LF-12 | Захардкоженные version/environment checks на мёртвое окружение | grep по `if.*IE`, `if.*v1`, `if.*LEGACY` где правая сторона больше не существует |
86
+ | LF-13 | Неактивные cron jobs / scheduled tasks | `crontab -l` + grep логов за 3 мес; `systemctl list-timers --all`; `kubectl get cronjob -o wide` (lastScheduleTime) |
87
+ | LF-14 | Endpoints без вызовов из фронта/других сервисов | grep route paths по всему монорепо |
88
+ | LF-15 | Маршруты в роутере, ведущие на 404 или пустые компоненты | unit test обходом всех routes |
89
+
90
+ ### 1.4 Примеры в коде
91
+
92
+ **Лава** — закомментированный fallback на удалённую систему:
93
+
94
+ ```ts
95
+ // Старый auth flow до миграции на Auth0 (2024)
96
+ // if (legacyAuth.enabled) {
97
+ // const session = await legacyAuth.login(creds);
98
+ // return mapLegacySession(session);
99
+ // }
100
+ const session = await auth0.login(creds);
101
+ ```
102
+ > `legacyAuth` модуль удалён 18 мес назад. Комментарий — окаменелость, история уже в git. **Решение:** удалить.
103
+
104
+ **Не лава** — комментарий объясняет неочевидное (Chesterton's fence):
105
+
106
+ ```ts
107
+ // +1 потому что Date.getMonth() возвращает 0-11.
108
+ // Если кто-то «поправит» на getMonth() — поломает отчёты по январю.
109
+ const month = date.getMonth() + 1;
110
+ ```
111
+ > Комментарий несёт смысл, защищает код от ложно-очевидной правки. **Решение:** оставить.
112
+
113
+ ---
114
+
115
+ ## 2. Чеклист
116
+
117
+ Применять перед рефакторингом модуля или при первом погружении в legacy-репозиторий.
118
+
119
+ - [ ] Прогнать `ts-prune` / `knip` / эквивалент → собрать список unreachable
120
+ - [ ] Прогнать coverage на затрагиваемых файлах → отметить 0%-ветки
121
+ - [ ] `git log --since=24.months.ago -- <file>` → выявить «застывшие» файлы
122
+ - [ ] Найти все `TODO/FIXME/HACK` старше 6 месяцев → решить: fix или delete
123
+ - [ ] Перечислить feature flags в проекте → для каждого проверить, меняется ли значение
124
+ - [ ] Перечислить env-переменные → пометить unused
125
+ - [ ] Для каждой подозрительной функции — найти все usages → если 0, помечать к удалению
126
+ - [ ] Зафиксировать находки в отчёте (формат ниже) до начала рефакторинга
127
+
128
+ ---
129
+
130
+ ## 3. Что делать
131
+
132
+ **Принцип:** удаление лава-флоу — отдельная задача, не часть фичевого PR. **Перед удалением — `git blame` на блок.** Если автор активен в команде — спросить контекст (часто экономит часы и предотвращает удаление чего-то скрыто-полезного). Если автор ушёл или код старше ~24 мес — `git blame` только археология, ходить дальше по чеклисту.
133
+
134
+ 1. **Отчёт ДО изменений.** Перечислить находки в отдельном документе (`docs/reports/architect/lava-flow-<module>.md`). Без согласования архитектора не удалять.
135
+ 2. **Тестовое покрытие ПЕРЕД удалением.** Если ветка не покрыта тестами — сначала характеризационные тесты (Working Effectively with Legacy Code, M. Feathers), потом удаление.
136
+ 3. **Малыми PR.** Один PR = одна находка. Не «удалить весь deprecated/». Атомарность даёт ясную точку отката.
137
+ 4. **Feature flag → удалить «выключенную» сторону.** Если флаг 100% в одном положении дольше 1 релиза — удалять противоположную ветку. **НО:** если флаг переключался хотя бы раз за последний релиз — это live config, не лава; не трогать (Chesterton's fence — кто-то им активно пользуется).
138
+ 5. **ADR при сомнениях.** Если непонятно, зачем код существует — `$adr-log` с вариантами «удалить / оставить / переписать», эскалация на Architect.
139
+
140
+ ---
141
+
142
+ ## 4. Чего избегать
143
+
144
+ - ❌ **«Заодно почищу»** — лава-флоу не убирается ad-hoc внутри фичевого PR. Размывает diff, ломает ревью.
145
+ - ❌ **Массовое удаление без тестов** — характеризационные тесты обязательны для непокрытых веток.
146
+ - ❌ **Переименование вместо удаления** — `_old`, `_deprecated_v2` создают новый слой лавы.
147
+ - ❌ **Комментарий «потом разберёмся»** — это та же лава, только в зародыше. Решение сейчас: delete или ADR.
148
+ - ❌ **Сохранение «на всякий случай»** — git history — это уже архив.
149
+
150
+ ---
151
+
152
+ ## 5. Отчёт
153
+
154
+ ```markdown
155
+ # Lava Flow Report — <module-name>
156
+
157
+ **Дата:** <YYYY-MM-DD>
158
+ **Автор:** <agent>
159
+ **Контекст:** <зачем смотрели — refactor / current-state / review>
160
+
161
+ ## Находки
162
+
163
+ | # | ID | Файл/строка | Признак | Решение |
164
+ |---|----|-------------|---------|---------|
165
+ | 1 | LF-01 | src/foo.ts:120-180 | Закомментированный блок 60 строк | DELETE (PR #N) |
166
+ | 2 | LF-07 | src/config/flags.ts:42 | Флаг `useNewAuth` = false уже 8 мес | DELETE old branch (PR #N+1) |
167
+ | 3 | LF-04 | src/api/users-v1.ts | Дубликат users-v2.ts, никем не используется | DELETE (ADR-DEV-XXX) |
168
+
169
+ ## Эскалации
170
+ - <если есть случаи, где нужен sign-off Architect'а/пользователя>
171
+
172
+ ## План закрытия
173
+ - <разбивка на PR с порядком>
174
+ ```
175
+
176
+ ---
177
+ ## Ссылки на смежные навыки
178
+
179
+ - `$current-state-analysis` — общий аудит репозитория, лава-флоу — один из его выходов
180
+ - `$architecture-compliance-review` — проверка соответствия архитектуре после удаления
181
+ - `$design-patterns-reference` — что использовать ВМЕСТО удалённой лавы
182
+ - `$code-review-checklist` — на этапе ревью PR с удалением
183
+ - `$system-design-checklist` — чтобы новый код не стал следующей лавой
184
+
185
+ ---
186
+
187
+ ## MCP integration (cross-gate activation)
188
+
189
+ Reference-скил с cross-gate потреблением:
190
+
191
+ - **ARCH (primary)** — `architect` использует в current-state analysis перед предложением рефакторинга
192
+ - **DEV (secondary)** — `senior_full_stack` сверяется перед изменением старого модуля
193
+ - **REV (secondary)** — `reviewer` применяет при ревью PR в зрелой кодовой базе
194
+
195
+ Активация через триггеры фронтматтера (`legacy код`, `мёртвый код`, `лава-флоу`, `неубранный feature flag`, `brownfield рефакторинг`, и т.д.). См. `$mcp-integration` для общего MCP-flow, gate ritual и recording discipline.
196
+
197
+ Section IDs (`LF-01..LF-25`) — стабильные якоря: цитируй их inline в ARCH/REV артефактах вместо копирования содержания. Сохраняет audit trail компактным и обеспечивает обратную ссылку на канонический источник.