@dzhechkov/keysarium 1.2.0 → 1.4.0
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.
- package/README.md +29 -11
- package/package.json +2 -2
- package/src/utils.js +1 -1
- package/templates/.claude/commands/brain-export.md +99 -20
- package/templates/.claude/commands/brain-import.md +75 -4
- package/templates/.claude/commands/bto-benchmark.md +302 -0
- package/templates/.claude/commands/harvest.md +28 -46
- package/templates/.claude/rules/trust-tiers.md +1 -0
- package/templates/.claude/skills/knowledge-extractor/SKILL.md +254 -0
- package/templates/.claude/skills/knowledge-extractor/modules/01-extract.md +188 -0
- package/templates/.claude/skills/knowledge-extractor/modules/02-classify.md +99 -0
- package/templates/.claude/skills/knowledge-extractor/modules/03-gate.md +150 -0
- package/templates/.claude/skills/knowledge-extractor/modules/04-integrate.md +159 -0
- package/templates/.claude/skills/knowledge-extractor/references/artifact-categories.md +100 -0
- package/templates/.claude/skills/knowledge-extractor/references/maturity-model.md +94 -0
- package/templates/.claude/skills/knowledge-extractor/references/quality-gates.md +98 -0
- package/templates/.claude/skills/knowledge-extractor/templates/artifact-card.md +63 -0
- package/templates/.claude/skills/knowledge-extractor/templates/harvest-report.md +102 -0
- package/templates/CLAUDE.md +42 -22
- package/templates/docs/continuous-learning-guide.md +622 -0
- package/templates/docs/feature-adr/01-architecture.md +750 -0
- package/templates/docs/feature-adr/02-functionality.md +712 -0
- package/templates/docs/feature-adr/03-deployment-guide.md +614 -0
- package/templates/docs/feature-adr/04-admin-guide.md +564 -0
- package/templates/docs/feature-adr/05-user-guide.md +508 -0
- package/templates/docs/feature-adr/06-user-flows.md +1101 -0
- package/templates/docs/improvement-directions.md +8 -4
- package/templates/docs/keysarium-core/01-architecture.md +559 -0
- package/templates/docs/keysarium-core/02-functionality.md +955 -0
- package/templates/docs/keysarium-core/03-deployment-guide.md +625 -0
- package/templates/docs/keysarium-core/04-admin-guide.md +529 -0
- package/templates/docs/keysarium-core/05-user-guide.md +599 -0
- package/templates/docs/keysarium-core/06-user-flows.md +804 -0
- package/templates/docs/skills-bto/01-deployment-guide.md +1 -1
- package/templates/docs/skills-bto/02-admin-guide.md +4 -1
- package/templates/docs/skills-bto/03-user-guide.md +4 -3
- package/templates/docs/skills-bto/04-infrastructure-requirements.md +2 -1
- package/templates/docs/skills-bto/05-architecture.md +11 -11
- package/templates/docs/skills-bto/06-user-flows.md +2 -1
- package/templates/lib/dream-engine.md +1 -1
- package/templates/lib/memory-protocol.md +131 -22
- package/templates/lib/reward-tracker.md +6 -3
|
@@ -0,0 +1,804 @@
|
|
|
1
|
+
# Пользовательские сценарии @dzhechkov/keysarium-core
|
|
2
|
+
|
|
3
|
+
## Содержание
|
|
4
|
+
|
|
5
|
+
1. [Обзор сценариев](#1-обзор-сценариев)
|
|
6
|
+
2. [Сценарий: Запуск нового пайплайна](#2-сценарий-запуск-нового-пайплайна)
|
|
7
|
+
3. [Сценарий: Checkpoint взаимодействие](#3-сценарий-checkpoint-взаимодействие)
|
|
8
|
+
4. [Сценарий: Мульти-агентная оценка (Judge Panel)](#4-сценарий-мульти-агентная-оценка-judge-panel)
|
|
9
|
+
5. [Сценарий: Dream Cycle](#5-сценарий-dream-cycle)
|
|
10
|
+
6. [Сценарий: Background Worker запуск](#6-сценарий-background-worker-запуск)
|
|
11
|
+
7. [Сценарий: Witness Chain верификация](#7-сценарий-witness-chain-верификация)
|
|
12
|
+
8. [Сценарий: Промоция скилла (Tier 0 -> Tier 3)](#8-сценарий-промоция-скилла-tier-0--tier-3)
|
|
13
|
+
9. [Сценарий: Создание пайплайна с нуля](#9-сценарий-создание-пайплайна-с-нуля)
|
|
14
|
+
10. [Диаграммы потоков](#10-диаграммы-потоков)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Обзор сценариев
|
|
19
|
+
|
|
20
|
+
keysarium-core предоставляет набор протоколов для построения мульти-агентных пайплайнов. Каждый сценарий ниже описывает конкретный поток взаимодействия с фреймворком.
|
|
21
|
+
|
|
22
|
+
| Сценарий | Когда применяется | Модули core |
|
|
23
|
+
|----------|-------------------|-------------|
|
|
24
|
+
| Запуск нового пайплайна | Начало любого проекта | queen-protocol, memory-protocol, shard-protocol |
|
|
25
|
+
| Checkpoint взаимодействие | После каждой стадии пайплайна | checkpoint-protocol, memory-protocol |
|
|
26
|
+
| Мульти-агентная оценка | Оценка качества артефакта панелью судей | judge-attestation, topology-selection |
|
|
27
|
+
| Dream Cycle | Накопилось достаточно данных для анализа | dream-engine, reward-tracker |
|
|
28
|
+
| Background Worker | Фоновые задачи без блокировки сессии | background-workers, model-routing |
|
|
29
|
+
| Witness Chain верификация | Проверка целостности артефактов | witness-chain, audit-trail |
|
|
30
|
+
| Промоция скилла | Повышение уровня доверия к скиллу | promotion-protocol, tier-system, judge-attestation |
|
|
31
|
+
| Создание пайплайна с нуля | Построение собственного мульти-агентного пайплайна | все модули |
|
|
32
|
+
|
|
33
|
+
### Карта зависимостей сценариев
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Создание пайплайна с нуля
|
|
37
|
+
|
|
|
38
|
+
v
|
|
39
|
+
Запуск нового пайплайна ──> Checkpoint взаимодействие ──> Dream Cycle
|
|
40
|
+
| | |
|
|
41
|
+
v v v
|
|
42
|
+
Background Worker Witness Chain верификация Промоция скилла
|
|
43
|
+
|
|
|
44
|
+
v
|
|
45
|
+
Мульти-агентная оценка
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 2. Сценарий: Запуск нового пайплайна
|
|
51
|
+
|
|
52
|
+
Queen Coordinator выполняет 10-шаговый протокол. Ниже -- полный поток с точками принятия решений и ветвлением при ошибках.
|
|
53
|
+
|
|
54
|
+
### Пошаговый поток
|
|
55
|
+
|
|
56
|
+
**Шаг 1. INIT -- создание рабочей директории**
|
|
57
|
+
```
|
|
58
|
+
1. Определить slug проекта из входных данных
|
|
59
|
+
2. Создать директорию: projects/{slug}/
|
|
60
|
+
3. Создать поддиректории: prototype/, diagrams/
|
|
61
|
+
4. Инициализировать метаданные проекта
|
|
62
|
+
```
|
|
63
|
+
- Если создание директории не удалось -- ABORT с диагностикой.
|
|
64
|
+
|
|
65
|
+
**Шаг 2. HEALTH -- проверка ресурсов**
|
|
66
|
+
```
|
|
67
|
+
1. Проверить наличие всех скиллов (SKILL.md для каждого)
|
|
68
|
+
2. Проверить governance shards для всех активных стадий
|
|
69
|
+
3. Проверить доступность файла конституции
|
|
70
|
+
4. Проверить внешние зависимости (sha256sum и т.д.)
|
|
71
|
+
```
|
|
72
|
+
- Если критический ресурс отсутствует -- ABORT с указанием отсутствующего файла.
|
|
73
|
+
- Если некритический ресурс отсутствует -- WARN и продолжить.
|
|
74
|
+
|
|
75
|
+
**Шаг 3. LOAD -- загрузка исторических знаний**
|
|
76
|
+
```
|
|
77
|
+
1. Вызвать memory_query() с текущим доменом и первой стадией
|
|
78
|
+
2. Загрузить последние dream insights из {insights-root}/
|
|
79
|
+
3. Загрузить brain файл (если есть предыдущий экспорт)
|
|
80
|
+
4. Лог: "Loaded {N} historical patterns" или "No historical data (first run)"
|
|
81
|
+
```
|
|
82
|
+
- Если `.keysarium/memory/` не существует -- graceful degradation, продолжить без данных.
|
|
83
|
+
|
|
84
|
+
**Шаг 4. DETECT -- классификация домена**
|
|
85
|
+
```
|
|
86
|
+
1. Проанализировать входные данные на ключевые слова домена
|
|
87
|
+
2. Определить характеристики: регуляторика, latency, deployment model
|
|
88
|
+
3. Установить переменные: {DOMAIN}, {PRIMARY_USER}, {AHA_MOMENT}
|
|
89
|
+
4. Активировать доменные правила (banking -> on-premise, retail -> A/B тесты)
|
|
90
|
+
```
|
|
91
|
+
- Если домен не определён -- использовать "general" по умолчанию.
|
|
92
|
+
|
|
93
|
+
**Шаг 5-7. Цикл стадий: SHARD -> ORCHESTRATE -> MONITOR**
|
|
94
|
+
|
|
95
|
+
Для каждой стадии пайплайна:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
5. SHARD: Загрузить governance shard для текущей стадии
|
|
99
|
+
- Проверить upstream promises (downstream не стартует без upstream)
|
|
100
|
+
- Применить доменные правила к стадии
|
|
101
|
+
|
|
102
|
+
6. ORCHESTRATE: Выбрать топологию и выполнить
|
|
103
|
+
- Определить топологию (Star / Mesh / Hierarchical / Ring / Hybrid / Adaptive)
|
|
104
|
+
- Назначить модель: haiku для простых, sonnet для аналитики, opus для творческих
|
|
105
|
+
- Запустить агентов по выбранной топологии
|
|
106
|
+
- Собрать результаты, синтезировать (если параллельные агенты)
|
|
107
|
+
|
|
108
|
+
7. MONITOR: Checkpoint + контроль
|
|
109
|
+
- Отобразить checkpoint баннер (формат из раздела 3)
|
|
110
|
+
- Ожидать подтверждения человека
|
|
111
|
+
- Записать reward (0.0-1.0) через memory_store()
|
|
112
|
+
- Проверить бюджет времени vs. фактическое время
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Шаг 8. COLLECT -- сбор артефактов**
|
|
116
|
+
```
|
|
117
|
+
1. Перечислить все файлы, созданные в директории проекта
|
|
118
|
+
2. Проверить каждый артефакт на соответствие quality gates
|
|
119
|
+
3. Составить манифест артефактов
|
|
120
|
+
```
|
|
121
|
+
- Если обязательный артефакт отсутствует -- HALT с отчётом.
|
|
122
|
+
|
|
123
|
+
**Шаг 9. STORE -- сохранение знаний**
|
|
124
|
+
```
|
|
125
|
+
1. Вызвать memory_store() для финального результата
|
|
126
|
+
2. Обновить trigger-state.json для dream engine
|
|
127
|
+
3. При значимом выполнении -- инициировать извлечение знаний
|
|
128
|
+
```
|
|
129
|
+
- Если сохранение не удалось -- лог ошибки, продолжить (не блокировать выход пайплайна).
|
|
130
|
+
|
|
131
|
+
**Шаг 10. REPORT -- финальный отчёт**
|
|
132
|
+
```
|
|
133
|
+
1. Сформировать сводку по всем стадиям и их результатам
|
|
134
|
+
2. Перечислить все созданные артефакты
|
|
135
|
+
3. Отчёт: время по стадиям (факт vs. бюджет)
|
|
136
|
+
4. Отчёт: предупреждения и инциденты
|
|
137
|
+
5. Emit финальный promise tag
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Точки принятия решений
|
|
141
|
+
|
|
142
|
+
| Точка | Условие | Ветка "Да" | Ветка "Нет" |
|
|
143
|
+
|-------|---------|------------|-------------|
|
|
144
|
+
| HEALTH: ресурс найден? | Все скиллы/shards доступны | Продолжить | ABORT |
|
|
145
|
+
| LOAD: память существует? | `.keysarium/memory/` есть | Загрузить паттерны | Первый запуск, продолжить без |
|
|
146
|
+
| DETECT: домен определён? | Ключевые слова совпали | Применить доменные правила | Использовать "general" |
|
|
147
|
+
| SHARD: upstream promise? | Upstream promise emitted | Начать стадию | Вернуться к незавершённой стадии |
|
|
148
|
+
| MONITOR: checkpoint "ok"? | Пользователь подтвердил | Следующая стадия | Корректировка и повторный checkpoint |
|
|
149
|
+
| COLLECT: артефакт есть? | Файл создан | Добавить в манифест | HALT: обязательный артефакт отсутствует |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 3. Сценарий: Checkpoint взаимодействие
|
|
154
|
+
|
|
155
|
+
Checkpoint -- это обязательная точка синхронизации между пайплайном и человеком. INV-003 запрещает автоматический переход без подтверждения.
|
|
156
|
+
|
|
157
|
+
### Формат баннера
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
=====================================================
|
|
161
|
+
CHECKPOINT {N}: {Название стадии} Complete
|
|
162
|
+
<promise>{PROMISE_TAG}</promise>
|
|
163
|
+
Witness: sha256:{hash} (chain link #{N})
|
|
164
|
+
|
|
165
|
+
{2-3 строки о том, что было сделано}
|
|
166
|
+
Артефакты: {список файлов}
|
|
167
|
+
Время: {факт}m / {бюджет}m ({процент}%)
|
|
168
|
+
|
|
169
|
+
* "ok" -- следующая стадия
|
|
170
|
+
* "углуби {раздел}" -- доработать раздел
|
|
171
|
+
* "{обратная связь}" -- скорректировать
|
|
172
|
+
=====================================================
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Три пути обработки
|
|
176
|
+
|
|
177
|
+
**Путь 1: "ok" -- немедленное подтверждение**
|
|
178
|
+
```
|
|
179
|
+
1. Классифицировать reward = 1.0 (excellent)
|
|
180
|
+
2. Вызвать memory_store() с reward 1.0
|
|
181
|
+
3. Emit promise tag: <promise>{TAG}_COMPLETE</promise>
|
|
182
|
+
4. Добавить witness record в .witness-chain.json
|
|
183
|
+
5. Перейти к следующей стадии
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Путь 2: "углуби X" -- незначительная корректировка**
|
|
187
|
+
```
|
|
188
|
+
1. Классифицировать reward = 0.7 (good)
|
|
189
|
+
2. Разобрать обратную связь: определить область доработки
|
|
190
|
+
3. Выполнить доработку указанного раздела
|
|
191
|
+
4. Обновить артефакт
|
|
192
|
+
5. Если witness chain существует -- chain repair (пересчёт хешей)
|
|
193
|
+
6. Повторно отобразить checkpoint
|
|
194
|
+
7. Вызвать memory_store() с reward 0.7 после ответа
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Путь 3: "переделай" -- полный перезапуск стадии**
|
|
198
|
+
```
|
|
199
|
+
1. Классифицировать reward = 0.0 (failed)
|
|
200
|
+
2. Вызвать memory_store() с reward 0.0
|
|
201
|
+
3. Удалить/перезаписать артефакт текущей стадии
|
|
202
|
+
4. Перезапустить стадию с нуля (reload shard, re-orchestrate)
|
|
203
|
+
5. По завершению -- новый checkpoint
|
|
204
|
+
6. Emit promise НЕ происходит до следующего подтверждения
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Правила классификации reward
|
|
208
|
+
|
|
209
|
+
| Реакция пользователя | Reward | Label | Сигнал |
|
|
210
|
+
|----------------------|--------|-------|--------|
|
|
211
|
+
| Одно слово одобрения: "ok", "next" | 1.0 | excellent | 0 областей фидбека |
|
|
212
|
+
| Корректировка 1 области | 0.7 | good | 1 область фидбека |
|
|
213
|
+
| Корректировка 2+ областей | 0.3 | needs_work | 2+ областей фидбека |
|
|
214
|
+
| Полный перезапуск | 0.0 | failed | Перезапуск стадии |
|
|
215
|
+
|
|
216
|
+
Если пользователь даёт фидбек более 2 раз на одной стадии, reward ограничивается 0.3. Если сессия завершается без ответа -- запись не создаётся.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 4. Сценарий: Мульти-агентная оценка (Judge Panel)
|
|
221
|
+
|
|
222
|
+
Панель судей используется для независимой оценки артефактов. Судьи работают в Star-топологии с обязательной изоляцией (INV-004).
|
|
223
|
+
|
|
224
|
+
### Пошаговый поток
|
|
225
|
+
|
|
226
|
+
**Шаг 1. Подготовка**
|
|
227
|
+
```
|
|
228
|
+
1. Определить артефакт для оценки
|
|
229
|
+
2. Вычислить artifact_hash = SHA-256(содержимое файла)
|
|
230
|
+
3. Определить размер панели: 3 (стандарт) или 5 (high-stakes)
|
|
231
|
+
4. Определить веса: Domain Expert 0.4 / Critic 0.3 / Auditor 0.3
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Шаг 2. Запуск судей (параллельно, Star-топология)**
|
|
235
|
+
```
|
|
236
|
+
Координатор порождает 3 агента (model: sonnet):
|
|
237
|
+
- Judge 1 (Domain Expert): оценивает доменную точность и глубину
|
|
238
|
+
- Judge 2 (Critic): ищет слабые места и edge cases
|
|
239
|
+
- Judge 3 (Completeness Auditor): проверяет структурную полноту
|
|
240
|
+
|
|
241
|
+
Каждый судья:
|
|
242
|
+
1. Получает artifact_hash (все оценивают один и тот же артефакт)
|
|
243
|
+
2. Читает артефакт независимо
|
|
244
|
+
3. Выставляет оценку (0-10) с обоснованием
|
|
245
|
+
4. НЕ видит оценки других судей
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Шаг 3. Сбор и проверка расхождений**
|
|
249
|
+
```
|
|
250
|
+
1. Собрать оценки от всех судей
|
|
251
|
+
2. Вычислить: max_score - min_score
|
|
252
|
+
3. Если расхождение > 3:
|
|
253
|
+
a. Верифицировать аттестации (подтвердить изоляцию)
|
|
254
|
+
b. Если изоляция подтверждена -- эскалация к мета-судье (sonnet)
|
|
255
|
+
c. Если изоляция нарушена -- флаг conformity collapse
|
|
256
|
+
4. Если расхождение <= 3: принять оценки
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Шаг 4. Вычисление итогового балла**
|
|
260
|
+
```
|
|
261
|
+
final_score = (expert * 0.4) + (critic * 0.3) + (auditor * 0.3)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Шаг 5. Создание аттестаций**
|
|
265
|
+
```
|
|
266
|
+
Для каждого судьи (в порядке завершения):
|
|
267
|
+
evaluation_hash = SHA-256(judge_id | artifact_hash | score | rationale_summary)
|
|
268
|
+
previous_attestation_hash = предыдущий evaluation_hash (NULL_HASH для первого)
|
|
269
|
+
Записать в .judge-attestations.json
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Шаг 6. Запись в audit trail**
|
|
273
|
+
```
|
|
274
|
+
1. Записать результаты оценки с финальным баллом
|
|
275
|
+
2. Если был мета-судья -- добавить его аттестацию в цепочку
|
|
276
|
+
3. Если финальный балл >= 7.0 -- артефакт прошёл оценку
|
|
277
|
+
4. Если финальный балл < 7.0 -- предоставить фидбек для улучшения
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Точки принятия решений
|
|
281
|
+
|
|
282
|
+
| Точка | Условие | Действие |
|
|
283
|
+
|-------|---------|----------|
|
|
284
|
+
| Расхождение > 3? | max - min > 3.0 | Эскалация к мета-судье |
|
|
285
|
+
| Изоляция нарушена? | Аттестации не валидны | Флаг conformity collapse |
|
|
286
|
+
| Балл >= 7.0? | Взвешенное среднее >= 7.0 | Артефакт прошёл оценку |
|
|
287
|
+
| Балл < 5.0 у одного судьи? | Любой judge score < 5.0 | Блокировка промоции даже при среднем >= 7.0 |
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 5. Сценарий: Dream Cycle
|
|
292
|
+
|
|
293
|
+
Dream Cycle -- фоновый процесс, который строит граф концепций из накопленных reward-записей и генерирует кросс-доменные инсайты.
|
|
294
|
+
|
|
295
|
+
### Пошаговый поток
|
|
296
|
+
|
|
297
|
+
**Шаг 1. Проверка триггеров**
|
|
298
|
+
```
|
|
299
|
+
1. Прочитать trigger-state.json
|
|
300
|
+
2. Проверить time trigger: elapsed > threshold (по умолчанию 60 мин)
|
|
301
|
+
3. Проверить volume trigger: records_since_last_dream >= 20
|
|
302
|
+
4. Проверить event trigger: pending_events не пуст
|
|
303
|
+
5. Если хотя бы один триггер сработал -- предложить запуск
|
|
304
|
+
6. Ожидать подтверждения пользователя (никогда не запускать автоматически)
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**Шаг 2. Загрузка данных**
|
|
308
|
+
```
|
|
309
|
+
1. Проверить существование {memory-root}/
|
|
310
|
+
- Если нет -> exit со статусом no_data
|
|
311
|
+
2. Прочитать reward-summary.json и domain-patterns.json (если есть)
|
|
312
|
+
3. Рекурсивно просканировать все reward-записи
|
|
313
|
+
4. Исключить просроченные записи
|
|
314
|
+
5. Отсортировать по reward DESC, затем timestamp DESC
|
|
315
|
+
6. Взять топ-200 записей
|
|
316
|
+
7. Если валидных записей < 5 -> exit со статусом insufficient_data
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Шаг 3. Построение графа концепций**
|
|
320
|
+
```
|
|
321
|
+
1. Инициализировать пустой граф: { nodes: [], edges: [] }
|
|
322
|
+
2. Для каждой записи создать/обновить узлы:
|
|
323
|
+
- domain (домен)
|
|
324
|
+
- stage (стадия)
|
|
325
|
+
- skill (скилл)
|
|
326
|
+
- outcome (результат)
|
|
327
|
+
3. Создать/обновить рёбра:
|
|
328
|
+
- domain -> stage
|
|
329
|
+
- stage -> skill
|
|
330
|
+
- skill -> outcome
|
|
331
|
+
(весом служит reward)
|
|
332
|
+
4. Вычислить агрегаты по узлам: avg_reward, record_count, trend
|
|
333
|
+
5. Вычислить агрегаты по рёбрам: weight (средний reward), record_count
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Шаг 4. Обнаружение ассоциаций (4 типа)**
|
|
337
|
+
|
|
338
|
+
| Тип | Описание | Порог |
|
|
339
|
+
|-----|----------|-------|
|
|
340
|
+
| Cross-Domain Stage Comparison | Сравнение производительности стадий между доменами | gap > 0.15 |
|
|
341
|
+
| Skill-Domain Mismatch | Сравнение эффективности скиллов в разных доменах | gap > 0.15 |
|
|
342
|
+
| Stage Correlation | Стадии, где низкие reward коррелируют | co-occurrence >= 3 |
|
|
343
|
+
| Temporal Trends | Систематические изменения reward во времени | статистическая значимость |
|
|
344
|
+
|
|
345
|
+
**Шаг 5. Генерация инсайтов**
|
|
346
|
+
```
|
|
347
|
+
1. Для каждой ассоциации сформировать инсайт:
|
|
348
|
+
- type: performance | effectiveness | anti_pattern
|
|
349
|
+
- confidence: min(1.0, evidence_count / 10)
|
|
350
|
+
- impact: high | medium | low
|
|
351
|
+
- rank_score: confidence * impact_weight
|
|
352
|
+
2. Отсортировать по rank_score DESC
|
|
353
|
+
3. Взять топ-20 инсайтов
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Шаг 6. Сохранение и ретенция**
|
|
357
|
+
```
|
|
358
|
+
1. Записать результат: {insights-root}/dream-{YYYYMMDD}-{HHmmss}.json
|
|
359
|
+
2. Применить ретенцию: максимум 10 файлов dream-*, удалить старейшие
|
|
360
|
+
3. Сбросить триггеры: records_since_last_dream = 0, pending_events = []
|
|
361
|
+
4. trigger-state.json НИКОГДА не удаляется ретенцией
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## 6. Сценарий: Background Worker запуск
|
|
367
|
+
|
|
368
|
+
Background workers выполняют длительные операции без блокировки основной сессии. Каждый воркер изолирован и пишет результаты в свою директорию.
|
|
369
|
+
|
|
370
|
+
### Пошаговый поток
|
|
371
|
+
|
|
372
|
+
**Шаг 1. Валидация**
|
|
373
|
+
```
|
|
374
|
+
1. Проверить тип воркера (consolidate / export-brain / health-check / dream-cycle)
|
|
375
|
+
2. Прочитать registry.json
|
|
376
|
+
3. Подсчитать активные воркеры (status = running | starting)
|
|
377
|
+
4. Если активных >= 3 -> REJECT: "Max concurrent workers reached (3/3)"
|
|
378
|
+
5. Определить модель по таблице маршрутизации:
|
|
379
|
+
- consolidate -> sonnet
|
|
380
|
+
- export-brain -> haiku
|
|
381
|
+
- health-check -> haiku
|
|
382
|
+
- dream-cycle -> sonnet
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**Шаг 2. Создание директории**
|
|
386
|
+
```
|
|
387
|
+
1. Сгенерировать worker_id: wkr-{YYYYMMDD}-{HHmmss}-{type}
|
|
388
|
+
2. Создать директорию: {workers-root}/{worker_id}/output/
|
|
389
|
+
3. Инициализировать status.json:
|
|
390
|
+
{ "worker_id": "...", "status": "starting", "progress": null }
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Шаг 3. Обновление реестра**
|
|
394
|
+
```
|
|
395
|
+
1. Добавить запись в registry.json:
|
|
396
|
+
{ "worker_id": "...", "type": "...", "status": "starting", "model": "..." }
|
|
397
|
+
2. Только оркестратор модифицирует registry.json (не сам воркер)
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
**Шаг 4. Загрузка шаблона и запуск**
|
|
401
|
+
```
|
|
402
|
+
1. Прочитать шаблон воркера из lib/worker-templates/{type}.md
|
|
403
|
+
2. Породить агента в фоновом режиме с указанной моделью
|
|
404
|
+
3. Передать воркеру: worker_id, output_dir, instructions
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Шаг 5. Выполнение воркера**
|
|
408
|
+
```
|
|
409
|
+
Воркер:
|
|
410
|
+
1. Обновляет status.json: status = "running"
|
|
411
|
+
2. Выполняет задачу (читает файлы проекта, анализирует)
|
|
412
|
+
3. Периодически обновляет status.json с прогрессом
|
|
413
|
+
4. Пишет результаты в {worker_dir}/output/
|
|
414
|
+
5. НИКОГДА не модифицирует файлы вне {worker_dir}/
|
|
415
|
+
6. НИКОГДА не порождает суб-агентов
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
**Шаг 6. Проверка флага остановки**
|
|
419
|
+
```
|
|
420
|
+
Между операциями воркер проверяет:
|
|
421
|
+
- Существует ли файл {worker_dir}/stop-requested?
|
|
422
|
+
- Если да -> обновить status.json: status = "stopped", завершить
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
**Шаг 7. Завершение**
|
|
426
|
+
```
|
|
427
|
+
1. Воркер записывает финальный status.json: status = "completed"
|
|
428
|
+
2. Оркестратор (при следующем /workers status) обновляет registry.json
|
|
429
|
+
3. Записи старше 24 часов (completed/failed/stopped) удаляются из реестра
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Правила изоляции воркеров
|
|
433
|
+
|
|
434
|
+
| Разрешено | Запрещено |
|
|
435
|
+
|-----------|-----------|
|
|
436
|
+
| Читать любые файлы проекта | Модифицировать файлы в researches/ |
|
|
437
|
+
| Писать в {worker_dir}/output/ | Модифицировать файлы в features/ |
|
|
438
|
+
| Обновлять свой status.json | Модифицировать .claude/ (commands, rules, skills) |
|
|
439
|
+
| | Модифицировать root-level файлы (CLAUDE.md и т.д.) |
|
|
440
|
+
| | Порождать суб-агентов |
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## 7. Сценарий: Witness Chain верификация
|
|
445
|
+
|
|
446
|
+
Witness Chain обеспечивает целостность артефактов через цепочку SHA-256 хешей. Каждый хеш артефакта включает хеш предыдущего, делая цепочку tamper-evident.
|
|
447
|
+
|
|
448
|
+
### Пошаговый поток верификации
|
|
449
|
+
|
|
450
|
+
**Шаг 1. Загрузка цепочки**
|
|
451
|
+
```
|
|
452
|
+
1. Прочитать .witness-chain.json из директории проекта
|
|
453
|
+
2. Если файл не найден -> отчёт: NOT_FOUND
|
|
454
|
+
3. Извлечь массив chain[] из JSON
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
**Шаг 2. Проверка каждой записи**
|
|
458
|
+
```
|
|
459
|
+
Для каждой записи chain[i] (i = 0, 1, ..., N-1):
|
|
460
|
+
1. Прочитать файл артефакта (chain[i].artifact)
|
|
461
|
+
- Если файл не найден -> записать MISSING_ARTIFACT
|
|
462
|
+
2. Определить previous_hash:
|
|
463
|
+
- Если i == 0: previous_hash = NULL_HASH (64 нуля)
|
|
464
|
+
- Иначе: previous_hash = chain[i-1].hash
|
|
465
|
+
3. Вычислить expected = SHA-256(file_content + previous_hash)
|
|
466
|
+
4. Сравнить expected с chain[i].hash
|
|
467
|
+
- Совпадает -> VALID
|
|
468
|
+
- Не совпадает -> BROKEN_LINK
|
|
469
|
+
5. Проверить монотонность timestamp (каждый >= предыдущего)
|
|
470
|
+
6. Проверить монотонность sequence (строго возрастает)
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
**Шаг 3. Формирование отчёта**
|
|
474
|
+
```
|
|
475
|
+
Если все записи VALID:
|
|
476
|
+
"Chain integrity: OK ({N} records verified)"
|
|
477
|
+
|
|
478
|
+
Если обнаружены BROKEN_LINK:
|
|
479
|
+
"Chain integrity: BROKEN at record {i}"
|
|
480
|
+
" Artifact: {filename}"
|
|
481
|
+
" Expected: sha256:{expected}"
|
|
482
|
+
" Stored: sha256:{stored}"
|
|
483
|
+
" Possible cause: artifact modified after checkpoint"
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
**Шаг 4. Chain repair (при легитимной правке)**
|
|
487
|
+
```
|
|
488
|
+
Если артефакт был изменён по запросу пользователя (feedback на checkpoint):
|
|
489
|
+
1. Пересчитать хеш модифицированного артефакта с тем же previous_hash
|
|
490
|
+
2. Обновить hash записи в .witness-chain.json
|
|
491
|
+
3. КАСКАД: пересчитать ВСЕ последующие записи
|
|
492
|
+
4. Обновить last_updated
|
|
493
|
+
5. Записать в массив chain_repairs:
|
|
494
|
+
{ "repaired_at": "...", "sequence": i, "reason": "User feedback" }
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Специальные случаи
|
|
498
|
+
|
|
499
|
+
| Ситуация | Поведение |
|
|
500
|
+
|----------|-----------|
|
|
501
|
+
| sha256sum недоступна | WARN, не блокировать пайплайн |
|
|
502
|
+
| Банковский домен + ошибка chain | Эскалация WARNING на checkpoint (ФЗ-152) |
|
|
503
|
+
| Feature ADR пайплайн | Witness chain не требуется |
|
|
504
|
+
| Genesis record (первый артефакт) | previous_hash = NULL_HASH |
|
|
505
|
+
|
|
506
|
+
---
|
|
507
|
+
|
|
508
|
+
## 8. Сценарий: Промоция скилла (Tier 0 -> Tier 3)
|
|
509
|
+
|
|
510
|
+
Система доверия из 4 уровней определяет надёжность скилла. Каждый переход требует выполнения конкретных условий.
|
|
511
|
+
|
|
512
|
+
### Переход Tier 0 -> Tier 1 (Advisory -> Structured)
|
|
513
|
+
|
|
514
|
+
```
|
|
515
|
+
Требования:
|
|
516
|
+
1. SKILL.md содержит полную документацию (не заглушка)
|
|
517
|
+
2. Хотя бы ОДНО из:
|
|
518
|
+
- references/ с 2+ файлами
|
|
519
|
+
- modules/ с подкомпонентами
|
|
520
|
+
- Документированный формат вывода (JSON schema / шаблон)
|
|
521
|
+
|
|
522
|
+
Процесс:
|
|
523
|
+
1. Ревью SKILL.md на полноту
|
|
524
|
+
2. Проверить наличие вспомогательных материалов
|
|
525
|
+
3. Обновить метаданные: trust_tier: 1, trust_tier_label: "Structured"
|
|
526
|
+
|
|
527
|
+
Формальная оценка НЕ требуется -- это структурная проверка.
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Переход Tier 1 -> Tier 2 (Structured -> Validated)
|
|
531
|
+
|
|
532
|
+
```
|
|
533
|
+
Требования:
|
|
534
|
+
1. Все требования Tier 1 выполнены
|
|
535
|
+
2. Панель из 3 судей (мульти-агентная оценка)
|
|
536
|
+
3. Средний взвешенный балл >= 7.0
|
|
537
|
+
4. Ни один судья не поставил < 5.0
|
|
538
|
+
|
|
539
|
+
Процесс:
|
|
540
|
+
1. Отправить скилл на мульти-агентную оценку (см. раздел 4)
|
|
541
|
+
2. Панель из 3 судей (sonnet):
|
|
542
|
+
- Domain Expert (0.4): доменная точность и глубина
|
|
543
|
+
- Critic (0.3): слабые места и edge cases
|
|
544
|
+
- Completeness Auditor (0.3): структурная полнота
|
|
545
|
+
3. Вычислить weighted average
|
|
546
|
+
4. Если score >= 7.0:
|
|
547
|
+
- Обновить: trust_tier: 2, bto_score: {score}, bto_date: "{date}"
|
|
548
|
+
- Записать полные результаты оценки
|
|
549
|
+
5. Если score < 7.0:
|
|
550
|
+
- Предоставить фидбек от судей для улучшения
|
|
551
|
+
- Скилл остаётся на Tier 1
|
|
552
|
+
- Повторная оценка возможна после доработки
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### Переход Tier 2 -> Tier 3 (Validated -> Verified)
|
|
556
|
+
|
|
557
|
+
```
|
|
558
|
+
Требования:
|
|
559
|
+
1. Все требования Tier 2 выполнены
|
|
560
|
+
2. Панельная оценка >= 8.5
|
|
561
|
+
3. Набор детерминистических eval-тестов (минимум 5)
|
|
562
|
+
4. Все eval-тесты проходят стабильно
|
|
563
|
+
|
|
564
|
+
Процесс:
|
|
565
|
+
1. Создать eval test suite:
|
|
566
|
+
- Определить тест-кейсы с известными входными и ожидаемыми выходными данными
|
|
567
|
+
- Тесты детерминистичны (один вход -> один результат pass/fail)
|
|
568
|
+
- Минимум 5 тест-кейсов
|
|
569
|
+
2. Запустить eval-тесты, убедиться что все проходят
|
|
570
|
+
3. Пройти панельную оценку с баллом >= 8.5
|
|
571
|
+
4. Обновить: trust_tier: 3, eval_tests: {count}, eval_tests_passing: {count}
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### Демоция
|
|
575
|
+
|
|
576
|
+
| Событие | Переход | Причина |
|
|
577
|
+
|---------|---------|---------|
|
|
578
|
+
| Eval-тесты начинают падать | Tier 3 -> Tier 2 | Регрессия функциональности |
|
|
579
|
+
| Балл при переоценке < 7.0 | Tier 2 -> Tier 1 | Деградация качества |
|
|
580
|
+
| Удалены вспомогательные материалы | Tier 1 -> Tier 0 | Утрата структуры |
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
## 9. Сценарий: Создание пайплайна с нуля
|
|
585
|
+
|
|
586
|
+
Полный walkthrough для построения собственного 4-стадийного мульти-агентного пайплайна на базе keysarium-core.
|
|
587
|
+
|
|
588
|
+
### Шаг 1. Определение стадий и временных бюджетов
|
|
589
|
+
|
|
590
|
+
```
|
|
591
|
+
Пример: пайплайн для технического аудита
|
|
592
|
+
|
|
593
|
+
| Стадия | Название | Бюджет | Описание |
|
|
594
|
+
|----------|-----------------|--------|-----------------------------------|
|
|
595
|
+
| stage-0 | Scope | 15% | Определение области аудита |
|
|
596
|
+
| stage-1 | Investigation | 35% | Техническое исследование |
|
|
597
|
+
| stage-2 | Assessment | 30% | Оценка и рекомендации |
|
|
598
|
+
| stage-3 | Report | 20% | Финальный отчёт |
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Шаг 2. Написание конституции (инварианты)
|
|
602
|
+
|
|
603
|
+
Создать `governance/constitution.md`:
|
|
604
|
+
|
|
605
|
+
```markdown
|
|
606
|
+
### INV-001: Artifact Integrity
|
|
607
|
+
Rule: Каждый артефакт стадии проверяется через witness chain hash.
|
|
608
|
+
Enforcement: SHA-256 проверка на каждом checkpoint.
|
|
609
|
+
On violation: HALT
|
|
610
|
+
|
|
611
|
+
### INV-002: Stage Completion Signal
|
|
612
|
+
Rule: Стадия не завершена без promise tag.
|
|
613
|
+
On violation: HALT
|
|
614
|
+
|
|
615
|
+
### INV-003: Human Checkpoint Required
|
|
616
|
+
Rule: Автоматический переход между стадиями запрещён.
|
|
617
|
+
On violation: HALT
|
|
618
|
+
|
|
619
|
+
### INV-100: No Production Data in Report (доменный)
|
|
620
|
+
Rule: Отчёт не содержит production credentials или PII.
|
|
621
|
+
On violation: HALT
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
### Шаг 3. Создание governance shards
|
|
625
|
+
|
|
626
|
+
Для каждой стадии создать shard:
|
|
627
|
+
|
|
628
|
+
```markdown
|
|
629
|
+
# Shard: stage-0-scope
|
|
630
|
+
|
|
631
|
+
time_budget_pct: 15
|
|
632
|
+
skill: scope-analyzer
|
|
633
|
+
prerequisites: none
|
|
634
|
+
quality_gates:
|
|
635
|
+
- scope document created
|
|
636
|
+
- domain identified
|
|
637
|
+
promise_tag: AUDIT_SCOPE_DEFINED
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
### Шаг 4. Настройка памяти
|
|
641
|
+
|
|
642
|
+
Создать `{memory-root}/config.json`:
|
|
643
|
+
|
|
644
|
+
```json
|
|
645
|
+
{
|
|
646
|
+
"version": "1.0",
|
|
647
|
+
"retention_days": 90,
|
|
648
|
+
"max_results_per_query": 10,
|
|
649
|
+
"enabled": true,
|
|
650
|
+
"known_domains": ["infrastructure", "security", "performance"],
|
|
651
|
+
"reward_levels": {
|
|
652
|
+
"excellent": 1.0,
|
|
653
|
+
"good": 0.7,
|
|
654
|
+
"needs_work": 0.3,
|
|
655
|
+
"failed": 0.0
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
### Шаг 5. Выбор топологий для каждой стадии
|
|
661
|
+
|
|
662
|
+
| Стадия | Топология | Агенты | Модель | Обоснование |
|
|
663
|
+
|--------|-----------|--------|--------|-------------|
|
|
664
|
+
| stage-0 | Single | 1 | sonnet | Линейная задача, не нужен параллелизм |
|
|
665
|
+
| stage-1 | Star | 3 | sonnet | 3 независимых направления исследования |
|
|
666
|
+
| stage-2 | Ring | 2 | opus | Итеративная оценка: draft -> review |
|
|
667
|
+
| stage-3 | Single | 1 | opus | Творческая генерация финального отчёта |
|
|
668
|
+
|
|
669
|
+
### Шаг 6. Настройка маршрутизации моделей
|
|
670
|
+
|
|
671
|
+
```markdown
|
|
672
|
+
| Задача | Tier | Модель | Обоснование |
|
|
673
|
+
|-------------------------------|------|--------|--------------------------------|
|
|
674
|
+
| Scope analysis | 2 | sonnet | Аналитическая работа |
|
|
675
|
+
| Investigation agents | 2 | sonnet | Исследовательский синтез |
|
|
676
|
+
| Assessment draft | 3 | opus | Сложная оценка |
|
|
677
|
+
| Assessment review | 3 | opus | Экспертная ревизия |
|
|
678
|
+
| Report generation | 3 | opus | Творческая генерация |
|
|
679
|
+
| File formatting, slug gen | 1 | haiku | Простые трансформации |
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
### Шаг 7. Первое выполнение
|
|
683
|
+
|
|
684
|
+
```
|
|
685
|
+
1. Запустить Queen Coordinator с входными данными
|
|
686
|
+
2. Координатор проходит все 10 шагов (INIT -> REPORT)
|
|
687
|
+
3. На каждом checkpoint -- подтверждение пользователя
|
|
688
|
+
4. После завершения -- ревью артефактов и таймингов
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
### Шаг 8. Ревью learning stats
|
|
692
|
+
|
|
693
|
+
```
|
|
694
|
+
После первого выполнения:
|
|
695
|
+
1. Проверить .keysarium/memory/{domain}/ -- reward записи созданы
|
|
696
|
+
2. Просмотреть reward для каждой стадии
|
|
697
|
+
3. Если reward < 0.7 для стадии -- проанализировать и скорректировать shard
|
|
698
|
+
4. После 3+ выполнений -- запустить Dream Cycle для паттернов
|
|
699
|
+
5. Использовать инсайты для итеративного улучшения пайплайна
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
---
|
|
703
|
+
|
|
704
|
+
## 10. Диаграммы потоков
|
|
705
|
+
|
|
706
|
+
### Диаграмма: Queen Coordinator -- полный жизненный цикл
|
|
707
|
+
|
|
708
|
+
```mermaid
|
|
709
|
+
flowchart TD
|
|
710
|
+
START([Вход: данные проекта]) --> INIT["1. INIT<br/>Создать директорию проекта"]
|
|
711
|
+
INIT --> HEALTH{"2. HEALTH<br/>Ресурсы доступны?"}
|
|
712
|
+
HEALTH -->|Все на месте| LOAD["3. LOAD<br/>memory_query() + dream insights + brain"]
|
|
713
|
+
HEALTH -->|Критический ресурс<br/>отсутствует| ABORT([ABORT])
|
|
714
|
+
LOAD --> DETECT["4. DETECT<br/>Классификация домена"]
|
|
715
|
+
DETECT --> STAGE_LOOP
|
|
716
|
+
|
|
717
|
+
subgraph STAGE_LOOP["Цикл по стадиям"]
|
|
718
|
+
SHARD["5. SHARD<br/>Загрузить governance shard"] --> UP_CHECK{"Upstream<br/>promise OK?"}
|
|
719
|
+
UP_CHECK -->|Да| ORCH["6. ORCHESTRATE<br/>Выбрать топологию, запустить агентов"]
|
|
720
|
+
UP_CHECK -->|Нет| BACK_TO_PREV["Вернуться к<br/>незавершённой стадии"]
|
|
721
|
+
ORCH --> MONITOR["7. MONITOR<br/>Checkpoint"]
|
|
722
|
+
MONITOR --> USER_RESP{"Ответ пользователя"}
|
|
723
|
+
USER_RESP -->|"ok"| REWARD_OK["reward = 1.0<br/>emit promise"]
|
|
724
|
+
USER_RESP -->|"углуби X"| REWARD_GOOD["reward = 0.7<br/>доработать"]
|
|
725
|
+
USER_RESP -->|"переделай"| REWARD_FAIL["reward = 0.0<br/>перезапуск стадии"]
|
|
726
|
+
REWARD_GOOD --> MONITOR
|
|
727
|
+
REWARD_FAIL --> SHARD
|
|
728
|
+
REWARD_OK --> NEXT{"Есть ещё стадии?"}
|
|
729
|
+
NEXT -->|Да| SHARD
|
|
730
|
+
end
|
|
731
|
+
|
|
732
|
+
NEXT -->|Нет| COLLECT["8. COLLECT<br/>Собрать артефакты"]
|
|
733
|
+
COLLECT --> MISSING{"Обязательные<br/>артефакты есть?"}
|
|
734
|
+
MISSING -->|Да| STORE["9. STORE<br/>memory_store() + trigger update"]
|
|
735
|
+
MISSING -->|Нет| HALT([HALT: артефакт отсутствует])
|
|
736
|
+
STORE --> REPORT["10. REPORT<br/>Финальная сводка"]
|
|
737
|
+
REPORT --> FINISH([Завершение])
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
### Диаграмма: Judge Panel -- мульти-агентная оценка
|
|
741
|
+
|
|
742
|
+
```mermaid
|
|
743
|
+
flowchart TD
|
|
744
|
+
START([Артефакт для оценки]) --> HASH["Вычислить<br/>artifact_hash"]
|
|
745
|
+
HASH --> SPAWN["Породить 3 судей<br/>(Star, isolated)"]
|
|
746
|
+
|
|
747
|
+
SPAWN --> J1["Judge 1: Domain Expert<br/>(sonnet, вес 0.4)"]
|
|
748
|
+
SPAWN --> J2["Judge 2: Critic<br/>(sonnet, вес 0.3)"]
|
|
749
|
+
SPAWN --> J3["Judge 3: Auditor<br/>(sonnet, вес 0.3)"]
|
|
750
|
+
|
|
751
|
+
J1 --> COLLECT["Собрать оценки"]
|
|
752
|
+
J2 --> COLLECT
|
|
753
|
+
J3 --> COLLECT
|
|
754
|
+
|
|
755
|
+
COLLECT --> DISAGREE{"max - min > 3?"}
|
|
756
|
+
DISAGREE -->|Нет| WEIGHTED["Вычислить<br/>weighted average"]
|
|
757
|
+
DISAGREE -->|Да| VERIFY{"Изоляция<br/>подтверждена?"}
|
|
758
|
+
VERIFY -->|Да| META["Мета-судья<br/>(sonnet)"]
|
|
759
|
+
VERIFY -->|Нет| COLLAPSE([Conformity collapse<br/>WARNING])
|
|
760
|
+
META --> WEIGHTED
|
|
761
|
+
|
|
762
|
+
WEIGHTED --> ATTEST["Создать<br/>.judge-attestations.json"]
|
|
763
|
+
ATTEST --> THRESHOLD{"Score >= 7.0?"}
|
|
764
|
+
THRESHOLD -->|Да| PASS([Оценка пройдена])
|
|
765
|
+
THRESHOLD -->|Нет| FEEDBACK([Фидбек для улучшения])
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
### Диаграмма: Dream Cycle
|
|
769
|
+
|
|
770
|
+
```mermaid
|
|
771
|
+
flowchart TD
|
|
772
|
+
START([Запрос /dream run]) --> TRIGGER["Проверить триггеры:<br/>time / volume / event"]
|
|
773
|
+
TRIGGER --> FIRED{"Триггер<br/>сработал?"}
|
|
774
|
+
FIRED -->|Нет| SKIP([Нет необходимости,<br/>пропуск])
|
|
775
|
+
FIRED -->|Да| CONFIRM{"Пользователь<br/>подтвердил?"}
|
|
776
|
+
CONFIRM -->|Нет| SKIP
|
|
777
|
+
CONFIRM -->|Да| DATA["Загрузить reward записи<br/>(top 200)"]
|
|
778
|
+
|
|
779
|
+
DATA --> ENOUGH{">= 5 записей?"}
|
|
780
|
+
ENOUGH -->|Нет| INSUFFICIENT([insufficient_data])
|
|
781
|
+
ENOUGH -->|Да| GRAPH["Построить concept graph:<br/>nodes + edges"]
|
|
782
|
+
|
|
783
|
+
GRAPH --> ASSOC["Обнаружить ассоциации:<br/>4 типа"]
|
|
784
|
+
ASSOC --> INSIGHTS["Сгенерировать инсайты<br/>(top 20, sorted by rank)"]
|
|
785
|
+
INSIGHTS --> STORE["Записать dream result<br/>dream-{timestamp}.json"]
|
|
786
|
+
STORE --> RETAIN{"Файлов > 10?"}
|
|
787
|
+
RETAIN -->|Да| PURGE["Удалить старейшие"]
|
|
788
|
+
RETAIN -->|Нет| RESET
|
|
789
|
+
PURGE --> RESET["Сбросить триггеры:<br/>records = 0, events = []"]
|
|
790
|
+
RESET --> DONE([Dream cycle завершён])
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
### Диаграмма: Промоция скилла
|
|
794
|
+
|
|
795
|
+
```mermaid
|
|
796
|
+
flowchart LR
|
|
797
|
+
T0["Tier 0<br/>Advisory"] -->|"+ references/<br/>или modules/"| T1["Tier 1<br/>Structured"]
|
|
798
|
+
T1 -->|"Panel score<br/>>= 7.0"| T2["Tier 2<br/>Validated"]
|
|
799
|
+
T2 -->|"Eval tests +<br/>score >= 8.5"| T3["Tier 3<br/>Verified"]
|
|
800
|
+
|
|
801
|
+
T3 -.->|"Eval tests<br/>падают"| T2
|
|
802
|
+
T2 -.->|"Score < 7.0<br/>при переоценке"| T1
|
|
803
|
+
T1 -.->|"Материалы<br/>удалены"| T0
|
|
804
|
+
```
|