workflow-ai 1.0.64 → 1.0.65

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 (135) hide show
  1. package/README.md +239 -145
  2. package/configs/agent-health-rules.yaml +64 -0
  3. package/configs/pipeline.yaml +18 -1
  4. package/package.json +1 -1
  5. package/src/init.mjs +20 -3
  6. package/src/lib/agent-health-registry.mjs +245 -0
  7. package/src/lib/artifact-snapshot.mjs +233 -0
  8. package/src/lib/error-classifier.mjs +274 -0
  9. package/src/lib/test-error-classifier.mjs +60 -0
  10. package/src/lib/test-extends.mjs +58 -0
  11. package/src/lib/test-version.mjs +21 -0
  12. package/src/scripts/move-to-review.js +5 -7
  13. package/src/scripts/reset-agent-health.js +62 -0
  14. package/src/skills/coach/SKILL.md +1 -0
  15. package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +2 -3
  16. package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +2 -3
  17. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +23 -31
  18. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +20 -35
  19. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +36 -19
  20. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +1 -1
  21. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +11 -5
  22. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +12 -16
  23. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +15 -9
  24. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +15 -14
  25. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +22 -18
  26. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +24 -16
  27. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +13 -20
  28. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +2 -2
  29. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +14 -19
  30. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +24 -14
  31. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +20 -19
  32. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +16 -17
  33. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -7
  34. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +9 -10
  35. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +5 -5
  36. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +20 -4
  37. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +36 -9
  38. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +9 -6
  39. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +4 -12
  40. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +6 -8
  41. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +8 -4
  42. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +10 -11
  43. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +30 -0
  44. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +30 -0
  45. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +30 -0
  46. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +165 -0
  47. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +5 -0
  48. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +26 -0
  49. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +5 -0
  50. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +39 -0
  51. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +37 -0
  52. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +45 -0
  53. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +26 -0
  54. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +27 -0
  55. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +7 -0
  56. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +117 -0
  57. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +41 -0
  58. package/src/skills/decompose-gaps/tests/index.yaml +5 -0
  59. package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +22 -0
  60. package/src/skills/decompose-gaps/workflows/decompose.md +5 -2
  61. package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +31 -5
  62. package/src/skills/decompose-plan/knowledge/capabilities.md +29 -5
  63. package/src/skills/decompose-plan/knowledge/human-task-rules.md +15 -0
  64. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +55 -0
  65. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +49 -0
  66. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +49 -0
  67. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +163 -0
  68. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +104 -0
  69. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +45 -0
  70. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +58 -0
  71. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +193 -0
  72. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +202 -0
  73. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +155 -0
  74. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +52 -0
  75. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +17 -0
  76. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
  77. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +115 -0
  78. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +64 -0
  79. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +59 -0
  80. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +204 -0
  81. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +213 -0
  82. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +163 -0
  83. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
  84. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +57 -0
  85. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +54 -0
  86. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +147 -0
  87. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +165 -0
  88. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +133 -0
  89. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +81 -0
  90. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +108 -0
  91. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +3 -0
  92. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +114 -0
  93. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +78 -0
  94. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +225 -0
  95. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +66 -0
  96. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +36 -0
  97. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +163 -0
  98. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +42 -0
  99. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +67 -0
  100. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +40 -0
  101. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +122 -0
  102. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +131 -0
  103. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +138 -0
  104. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +41 -0
  105. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +88 -0
  106. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
  107. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +115 -0
  108. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +72 -0
  109. package/src/skills/decompose-plan/tests/index.yaml +15 -0
  110. package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +21 -0
  111. package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +21 -0
  112. package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +21 -0
  113. package/src/skills/decompose-plan/workflows/decompose.md +38 -5
  114. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +3 -4
  115. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +3 -4
  116. package/src/skills/manual-testing/SKILL.md +6 -4
  117. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +29 -16
  118. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +21 -54
  119. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +18 -23
  120. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +17 -17
  121. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +19 -19
  122. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +27 -30
  123. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +16 -23
  124. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +35 -28
  125. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +13 -13
  126. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +15 -15
  127. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +76 -0
  128. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +71 -0
  129. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +85 -0
  130. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +46 -0
  131. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +36 -0
  132. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +65 -0
  133. package/src/skills/manual-testing/tests/index.yaml +5 -0
  134. package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +31 -0
  135. package/src/skills/review-result/scripts/verify-artifacts.js +42 -12
@@ -1,56 +1,41 @@
1
- ## Декомпозиция gaps
2
-
3
- ### Анализ входных данных
4
-
5
- | Параметр | Значение |
6
- |----------|----------|
7
- | Gap | «Нужно исправить дефект маппинга полей» |
8
- | Контекст плана | Секция «Исключено из scope: исправление дефектов» |
1
+ Применяю алгоритм `scope-check.md` к заданному gap.
9
2
 
10
3
  ---
11
4
 
12
- ### Проверка scope (алгоритм scope-check.md)
5
+ ## Проверка scope: «Нужно исправить дефект маппинга полей»
13
6
 
14
- **Шаг 2a — Проверка исключений из scope плана:**
7
+ ### Шаг 1 — Проверка источника
15
8
 
16
- Из плана извлечена секция исключений:
17
- > *«Исключено из scope: исправление дефектов»*
9
+ Gap описывает конкретный сбой в выполненной задаче → источник потенциально валидный. ✅ Продолжаем.
18
10
 
19
- Gap «Нужно исправить дефект маппинга полей» это буквально «исправление дефекта». Он **прямо подпадает** под исключение из scope плана.
11
+ ### Шаг 2Принадлежность к плану
20
12
 
21
- **Результат проверки:**
13
+ Задача маппинга полей присутствует в плане. ✅ Продолжаем.
22
14
 
23
- ```
24
- check_scope(gap) → {
25
- in_scope: false,
26
- reason: "Gap подпадает под исключение из scope плана: 'исправление дефектов'",
27
- check_failed: "2a"
28
- }
29
- ```
15
+ ### Шаг 2a — Проверка exclusions из scope плана
30
16
 
31
- Gap **отклонён на шаге 2a**. Дальнейшие проверки (3, 4) не применяются.
17
+ План содержит явную секцию:
32
18
 
33
- ---
19
+ > **Исключено из scope: исправление дефектов**
34
20
 
35
- ### Созданные тикеты
21
+ Gap «исправить дефект маппинга полей» — это прямое исправление дефекта. Он **подпадает под исключение**.
36
22
 
37
- *(нет ни один gap не прошёл scope-валидацию)*
23
+ **Результат:** `{in_scope: false, check_failed: "2a", reason: "Gap подпадает под исключение из scope плана: 'исправление дефектов'"}`
38
24
 
39
25
  ---
40
26
 
41
- ### Новые требования (вне scope)
27
+ ## Итог
42
28
 
43
- | Gap | Причина отклонения |
44
- |-----|--------------------|
45
- | «Нужно исправить дефект маппинга полей» | Исключено из scope плана: «исправление дефектов» (проверка 2a) |
29
+ Тикет **не создаётся**.
46
30
 
47
- Этот gap следует передать архитектору или PM для включения в **отдельный план** — если исправление дефекта признано приоритетным, оно должно появиться как явная задача в следующем плане, а не как доработка текущего.
31
+ ---RESULT---
48
32
 
49
- ---
33
+ **Создано тикетов:** 0
50
34
 
51
- **---RESULT---**
35
+ **Новые требования (вне scope):**
52
36
 
53
- Тикетов создано: **0**
37
+ | Gap | Причина отклонения | Проверка |
38
+ |-----|--------------------|----------|
39
+ | Исправить дефект маппинга полей | Подпадает под явное исключение из scope плана: «исправление дефектов» | 2a |
54
40
 
55
- Gaps отклонено (вне scope): **1**
56
- - «Нужно исправить дефект маппинга полей» → отклонён по проверке 2a (явно исключено из scope плана)
41
+ > Если исправление дефекта действительно необходимо, его следует включить в **новый план** или скорректировать секцию исключений текущего.
@@ -1,25 +1,42 @@
1
- ## Анализ gap: проверка scope
1
+ Теперь у меня есть всё необходимое. Применяю алгоритм scope-check к переданному gap.
2
2
 
3
- ### Gap: «Нужно исправить дефект маппинга полей»
3
+ ---
4
4
 
5
- Применяю алгоритм `scope-check.md`:
5
+ ## Проверка scope: Gap «Исправить дефект маппинга полей»
6
6
 
7
- ---
7
+ ### Применение алгоритма scope-check
8
+
9
+ **Gap:** «Нужно исправить дефект маппинга полей»
10
+
11
+ **Шаг 1 — Проверка источника:**
12
+ Gap описывает конкретный дефект в выполненной работе → источник валидный (секция «Риски и проблемы» / «Выполненные задачи»). ✅
8
13
 
9
- **Шаг 1Проверка источника:** источник не указан явно, продолжаю.
14
+ **Шаг 2Принадлежность к плану:**
15
+ Задача по маппингу полей присутствовала в плане. ✅
10
16
 
11
- **Шаг 2Принадлежность к плану:** план содержит секцию **«Исключено из scope: исправление дефектов»**.
17
+ **Шаг 2aПроверка секции «Исключено из scope»:**
18
+ План содержит явную запись:
12
19
 
13
- **Шаг 2a Проверка exclusions:**
14
- - `plan_exclusions` = `["исправление дефектов"]`
15
- - Gap «исправить дефект маппинга полей» → описывает исправление дефекта
16
- - Совпадение найдено
20
+ > «Исключено из scope: **исправление дефектов**»
17
21
 
18
- **Результат:** `{in_scope: false, reason: "Gap подпадает под исключение из scope плана: 'исправление дефектов'", check_failed: "2a"}`
22
+ Gap «исправить дефект маппинга полей» непосредственно подпадает под данное исключение.
23
+
24
+ **Результат проверки 2a:**
25
+ ```
26
+ in_scope: false
27
+ reason: "Gap подпадает под исключение из scope плана: 'исправление дефектов'"
28
+ check_failed: "2a"
29
+ ```
30
+
31
+ **Дальнейшие шаги алгоритма:** не выполняются — gap отклонён на шаге 2a.
19
32
 
20
33
  ---
21
34
 
22
- **Тикет не создаётся.**
35
+ ## Итог декомпозиции
36
+
37
+ **Тикетов создано:** 0
38
+
39
+ Тикет на gap **не создаётся**, поскольку план явно исключает исправление дефектов из своего scope. Создание fix-тикета нарушило бы принцип «Scope First».
23
40
 
24
41
  ---
25
42
 
@@ -27,13 +44,13 @@
27
44
 
28
45
  | Gap | Причина отклонения | Рекомендация |
29
46
  |-----|--------------------|--------------|
30
- | Исправить дефект маппинга полей | Явно исключено из scope плана: «исправление дефектов» | Создать отдельную задачу в новом плане или обратиться к Architect для принятия решения о приоритизации |
47
+ | «Нужно исправить дефект маппинга полей» | Исключён из scope плана (секция «Исключено из scope: исправление дефектов»). Проверка 2a. | Зафиксировать как отдельную инициативу в новом плане или создать тикет вручную, если исправление дефекта требуется вне рамок текущего плана. |
31
48
 
32
49
  ---
33
50
 
34
- ```
35
- ---RESULT---
36
- Тикеты созданы: 0
37
- Gaps вне scope: 1
38
- - «Нужно исправить дефект маппинга полей» → исключено из scope плана (Проверка 2a)
39
- ```
51
+ **---RESULT---**
52
+
53
+ - Тикетов создано: **0**
54
+ - Gaps в scope: **0**
55
+ - Gaps вне scope (Новые требования): **1**
56
+ - «Нужно исправить дефект маппинга полей» — отклонён на проверке 2a: gap подпадает под исключение из scope плана («исправление дефектов»)
@@ -160,5 +160,5 @@
160
160
  "errored": false
161
161
  }
162
162
  ],
163
- "timestamp": "2026-04-20T11:07:05.170Z"
163
+ "timestamp": "2026-04-21T08:51:13.394Z"
164
164
  }
@@ -1,11 +1,17 @@
1
1
  **Результат декомпозиции gaps**
2
2
 
3
- ### Новые требования (вне scope плана)
4
- - «Нужно исправить дефект маппинга полей» — причина: Gap подпадает под исключение из scope плана: «Исключено из scope: исправление дефектов». Работа по исправлению дефектов явно исключена из scope исходного плана, поэтому создание тикета не требуется.
3
+ Проверка scope выполнена по алгоритму `scope-check`. Gap «Нужно исправить дефект маппинга полей» **не прошёл проверку 2a** (принадлежность к scope плана).
4
+
5
+ **Причина отклонения:** В исходном плане присутствует секция «Исключено из scope: исправление дефектов». Данный gap описывает работу, которая явно исключена из scope плана.
6
+
7
+ ---
8
+
9
+ **Новые требования (вне scope)**
10
+
11
+ 1. **«Нужно исправить дефект маппинга полей»**
12
+ Причина: Gap подпадает под исключение из scope плана: «исправление дефектов».
5
13
 
6
14
  ---
7
15
 
8
16
  ---RESULT---
9
- status: default
10
- created_tickets:
11
- ---RESULT---
17
+ Создано тикетов: 0
@@ -1,26 +1,22 @@
1
- **Проверка scope для gap**
1
+ **Проверка scope gap «Нужно исправить дефект маппинга полей»**
2
2
 
3
- Gap: «Нужно исправить дефект маппинга полей».
3
+ **Алгоритм scope‑check:**
4
+ 1. **Источник gap** – не указан (предполагаем, что из секции «Выполненные задачи» или «Риски и проблемы»).
5
+ 2. **Принадлежность к плану** – gap описывает исправление дефекта. В плане присутствует явное исключение: «Исключено из scope: исправление дефектов». → **gap подпадает под исключение** (check_failed: 2a).
6
+ 3. **Статус плана** – не указан (предполагаем `in_progress`).
7
+ 4. **Workflow‑управление** – отсутствует.
4
8
 
5
- **Проверка 1 (Источник)** предположительно из секции «Выполненные задачи» или «Риски и проблемы» – источник валиден.
6
-
7
- **Проверка 2a (Исключения scope плана)** – план содержит явное исключение: «Исключено из scope: исправление дефектов». Gap описывает исправление дефекта, что полностью подпадает под это исключение.
8
-
9
- → **Gap вне scope декомпозиции.**
10
- Причина: «Gap подпадает под исключение из scope плана: 'исправление дефектов'» (проверка 2a).
9
+ **Решение:** Gap **не входит в scope** декомпозиции. Создание тикета не требуется.
11
10
 
12
11
  ---
13
-
14
12
  **Новые требования (вне scope)**
15
13
 
16
- | Gap | Причина отклонения |
17
- |-----|-------------------|
18
- | «Нужно исправить дефект маппинга полей» | Gap подпадает под исключение из scope плана: «Исключено из scope: исправление дефектов». Работа является новым требованием, не входящим в текущий план. |
14
+ 1. **Исправление дефекта маппинга полей**
15
+ *Причина отклонения:* gap подпадает под исключение из scope плана (секция «Исключено из scope: исправление дефектов»).
16
+ *Рекомендация:* если дефект критичен, рассмотреть как отдельную инициативу вне текущего плана.
19
17
 
20
18
  ---
21
-
22
19
  **---RESULT---**
23
20
 
24
- Создано тикетов: 0
25
-
26
- Отклонённых gaps (вне scope): 1
21
+ **Созданные тикеты:** нет
22
+ **Новые требования:** 1 (см. выше)
@@ -1,19 +1,25 @@
1
- ## Результат scope-проверки
1
+ ## Проверка scope: gap «Нужно исправить дефект маппинга полей»
2
2
 
3
- **Проверка 2a (исключения из scope):** Gap «Нужно исправить дефект маппинга полей» семантически подпадает под исключение «Исключено из scope: исправление дефектов». Ключевое слово «дефект» в формулировке gap напрямую соответствует пункту исключения.
3
+ ### Алгоритм scope-check
4
4
 
5
- **Решение:** `in_scope: false`тикет **не создаётся**.
5
+ **Шаг 1 Источник gap:** gap передан как входной параметр, источник раздел недочётов отчёта. Валидный источник. ✅
6
6
 
7
- ---
7
+ **Шаг 2 — Принадлежность к плану:**
8
8
 
9
- ### Новые требования (вне scope плана)
9
+ **Шаг 2a Проверка исключений из scope плана:**
10
+ Секция «Исключено из scope» плана содержит: **«исправление дефектов»**.
11
+
12
+ Gap «Нужно исправить дефект маппинга полей» по смыслу подпадает под исключение «исправление дефектов» — формулировка gap буквально описывает исправление дефекта.
13
+
14
+ **Результат проверки 2a:** gap **исключён** из scope плана. Причина: `Gap подпадает под исключение из scope плана: «исправление дефектов»`.
10
15
 
11
- - «Нужно исправить дефект маппинга полей» — причина: gap подпадает под исключение из scope плана: «исправление дефектов» (проверка 2a)
16
+ **in_scope = false**, check_failed = "2a"
17
+
18
+ ### Новые требования (вне scope плана)
12
19
 
13
- ---
20
+ - **Исправить дефект маппинга полей** — причина: работа по исправлению дефектов явно исключена из scope плана (секция «Исключено из scope: исправление дефектов»). Данный gap является новым требованием, не входящим в текущий план. Для включения в работу требуется отдельная инициатива или новый план.
14
21
 
15
22
  ---RESULT---
16
23
  status: default
17
- created_tickets: (нет)
18
- rejected_gaps: 1
24
+ created_tickets:
19
25
  ---RESULT---
@@ -1,28 +1,29 @@
1
- Now I understand the test case. The gap "Нужно исправить дефект маппинга полей" falls under the plan's explicit exclusion "Исключено из scope: исправление дефектов". Per scope check 2a, this gap must be rejected.
2
-
3
- ## Результат scope-проверки
1
+ ## Проверка scope
4
2
 
5
3
  **Gap:** «Нужно исправить дефект маппинга полей»
6
4
 
7
- **Проверка scope шаг 2a:** План содержит секцию «Исключено из scope: исправление дефектов». Gap семантически подпадает под это исключение — «исправить дефект» = «исправление дефектов».
5
+ ### Применение алгоритма scope-check
6
+
7
+ **Шаг 1 — Источник:**Gap описывает дефект, требующий исправления.
8
8
 
9
- **Решение:** `in_scope: false`
9
+ **Шаг 2 — Принадлежность к плану:**В плане есть секция «Исключено из scope: исправление дефектов». Gap формулируется как «исправить дефект маппинга полей» — это семантически совпадает с исключением «исправление дефектов».
10
10
 
11
- **Причина:** Gap подпадает под исключение из scope плана: «исправление дефектов» (проверка 2a).
11
+ **Результат проверки 2a:** Gap подпадает под исключение из scope плана: «исправление дефектов».
12
12
 
13
- **Тикет НЕ создаётся.**
13
+ **`in_scope: false`** | `check_failed: 2a` | `reason: «Gap подпадает под исключение из scope плана: исправление дефектов»`
14
14
 
15
15
  ---
16
16
 
17
- ### Новые требования (вне scope)
17
+ ### Новые требования (вне scope плана)
18
18
 
19
- | Gap | Причина отклонения |
20
- |-----|-------------------|
21
- | «Нужно исправить дефект маппинга полей» | Подпадает под исключение плана: «Исключено из scope: исправление дефектов» (проверка 2a). Является новой инициативой, не предусмотренной текущим планом. |
19
+ - «Нужно исправить дефект маппинга полей» — причина: подпадает под исключение «исправление дефектов», указанное в секции «Исключено из scope» плана. Тикет не создаётся.
22
20
 
23
21
  ---
24
22
 
23
+ ```
24
+ ---RESULT---
25
+ status: default
26
+ created_tickets: (нет)
27
+ rejected_gaps: 1 (исключено из scope плана: исправление дефектов)
25
28
  ---RESULT---
26
- - Создано тикетов: 0
27
- - Отклонено (вне scope): 1
28
- - «Исправить дефект маппинга полей» → исключение плана «исправление дефектов»
29
+ ```
@@ -1,23 +1,27 @@
1
- По алгоритму `scope-check.md` (шаг 2a):
1
+ Согласно алгоритму проверки scope (scope-check.md, шаг 2a), gap «Нужно исправить дефект маппинга полей» подпадает под секцию плана «Исключено из scope: исправление дефектов».
2
2
 
3
- **Анализ gap:**
4
- - Gap: «Нужно исправить дефект маппинга полей»
5
- - План содержит секцию: «Исключено из scope: исправление дефектов»
3
+ **Проверка:**
4
+ - Шаг 1: Источник gap не указан, но подразумевается как задача из плана
5
+ - Шаг 2a: План содержит «Исключено из scope: исправление дефектов» → gap описывает исправление дефекта → **отклонён**
6
6
 
7
- **Результат проверки scope:**
8
- - `in_scope: false`
9
- - `reason: Gap подпадает под исключение из scope плана: 'исправление дефектов'`
10
- - `check_failed: 2a`
7
+ **Результат:**
8
+ ```yaml
9
+ in_scope: false
10
+ reason: "Gap подпадает под исключение из scope плана: 'Исправление дефектов'"
11
+ check_failed: "2a"
12
+ ```
11
13
 
12
- Gap **вне scope** — план явно исключает исправление дефектов.
14
+ ---
13
15
 
14
16
  ---RESULT---
15
- status: has_gaps
16
- created_tickets: []
17
- rejected_gaps: 1
18
- gaps_out_of_scope:
19
- - gap: "Нужно исправить дефект маппинга полей"
20
- reason: "Gap подпадает под исключение из scope плана: 'исправление дефектов'"
21
- check_failed: "2a"
22
- new_requirements: []
23
- ---RESULT---
17
+
18
+ **Созданные тикеты:** 0
19
+
20
+ **Новые требования (вне scope):**
21
+ | Gap | Причина отклонения |
22
+ |-----|-------------------|
23
+ | «Нужно исправить дефект маппинга полей» | Подпадает под «Исключено из scope: исправление дефектов» — gap относится к fix-работе, которая явно исключена из плана |
24
+
25
+ ---
26
+
27
+ План тестирования намеренно исключает исправление найденных дефектов, чтобы сфокусировать команду на проверке. Это workaround-решение. Если дефект критичен — рекомендуется создать отдельный план на его устранение.
@@ -1,27 +1,35 @@
1
- Согласно алгоритму проверки scope и документу `scope-validation.md`:
1
+ Согласно инструкциям, сначала загружаю обязательные знания.
2
+ Проверяю config.yaml и шаблон тикета:
3
+ ## Результат проверки scope
2
4
 
3
- **Gap «Нужно исправить дефект маппинга полей»** попадает под проверку 2a (exclusions).
5
+ **Gap:** «Нужно исправить дефект маппинга полей»
4
6
 
5
- **Шаг 2a:** План содержит секцию «Исключено из scope: исправление дефектов». Gap напрямую описывает исправление дефекта → попадает под исключение.
7
+ ### Применение алгоритма scope-check
6
8
 
7
- **Результат:** Gap вне scope — тикет НЕ создаётся.
9
+ | Проверка | Результат |
10
+ |----------|-----------|
11
+ | Источник gap | Неизвестен (нет отчёта) |
12
+ | Принадлежность к плану | Задача в плане не найдена |
13
+ | **2a. Exclusions** | **FAIL** — план содержит «Исключено из scope: исправление дефектов» |
14
+ | Статус плана | Неприменимо |
15
+ | Workflow-управление | Неприменимо |
8
16
 
9
- ---
17
+ **Решение:** Gap подпадает под явное исключение плана (`«Исключено из scope: исправление дефектов»`). Gap относится к «исправлению дефектов» — это прямо указано в описании gap.
10
18
 
11
- ## Результат декомпозиции
19
+ ---
12
20
 
13
21
  ### Новые требования (вне scope)
14
22
 
15
- | Gap | Причина отклонения | Проверка |
16
- |-----|---------------------|----------|
17
- | «Нужно исправить дефект маппинга полей» | Gap подпадает под исключение из scope плана: «Исключено из scope: исправление дефектов» | 2a |
18
-
19
- ---
23
+ | Gap | Причина отклонения | Рекомендация |
24
+ |-----|-------------------|--------------|
25
+ | «Нужно исправить дефект маппинга полей» | Подпадает под исключение плана: «Исключено из scope: исправление дефектов» | Отправить на рассмотрение как новую инициативу для следующего плана, либо в отдельный workflow обработки дефектов |
20
26
 
21
27
  ---RESULT---
22
- **Созданные тикеты:** 0
23
- **Отклонённые gaps:** 1
28
+ Тикеты не созданы.
29
+
30
+ | Gap | Результат | Причина |
31
+ |-----|-----------|---------|
32
+ | «Нужно исправить дефект маппинга полей» | **Отклонён (вне scope)** | Подпадает под исключение плана: «Исключено из scope: исправление дефектов» |
24
33
 
25
- **Отклонённые gaps:**
26
- 1. Gap «Нужно исправить дефект маппинга полей» → Gap подпадает под исключение из scope плана: «Исключено из scope: исправление дефектов» (проверка 2a). Рекомендация: записать в «Новые требования» для следующего плана.
27
- ---
34
+ **Новых тикетов:** 0
35
+ **Отклонённых gaps:** 1
@@ -1,25 +1,18 @@
1
- По алгоритму scope-check (проверка 2a), gap «Нужно исправить дефект маппинга полей» подпадает под исключение «Исключено из scope: исправление дефектов» → **gap вне scope**.
1
+ Согласно алгоритму проверки scope (scope-check.md, шаг 2a):
2
2
 
3
- ## Результат проверки
3
+ **Анализ gap:**
4
+ - Gap: «Нужно исправить дефект маппинга полей»
5
+ - План содержит секцию: «Исключено из scope: исправление дефектов»
4
6
 
5
- | Проверка | Результат |
6
- |----------|-----------|
7
- | Источник gap | Валидный (если из «Риски и проблемы» или «Выполненные задачи») |
8
- | Принадлежность к плану | Задача присутствует |
9
- | **Exclusion check** | **FAIL** — план исключает исправление дефектов |
10
- | Статус плана | Не влияет (exclusion приоритетнее) |
7
+ **Результат проверки:**
8
+ Gap подпадает под явное исключение из scope плана. Согласно scope-validation.md: «работа, явно исключённая в секции «Исключено из scope» → создание fix-тикетов вне scope, даже если дефект найден задачей плана».
11
9
 
12
- ---
10
+ ---RESULT---
11
+ status: no_tickets_created
12
+ reason: Gap подпадает под исключение из scope плана: "Исключено из scope: исправление дефектов"
13
13
 
14
- ## Новые требования (вне scope)
14
+ ### Новые требования (вне scope плана)
15
+ - «Нужно исправить дефект маппинга полей» — причина: план содержит секцию «Исключено из scope: исправление дефектов», исправление дефектов является работой вне текущего плана
15
16
 
16
- | Gap | Причина отклонения |
17
- |-----|---------------------|
18
- | «Нужно исправить дефект маппинга полей» | Подпадает под исключение плана: «Исключено из scope: исправление дефектов» |
19
-
20
- ---
21
-
22
- **---RESULT---**
23
-
24
- Создано тикетов: 0
25
- Отклонено gaps: 1 → «Новые требования (вне scope)»
17
+ created_tickets: []
18
+ ---RESULT---
@@ -1,8 +1,8 @@
1
1
  {
2
- "date": "2026-04-20T11:07:05.171Z",
2
+ "date": "2026-04-21T08:51:13.396Z",
3
3
  "skill_sha": "3cc51dd",
4
4
  "status": "passed",
5
- "duration_ms": 2403995,
5
+ "duration_ms": 2405055,
6
6
  "l1_skipped": true,
7
7
  "per_model": {
8
8
  "claude-sonnet": {
@@ -1,32 +1,27 @@
1
- Glob-проверка завершена. Согласно условию задачи, файл `tickets/ready/FIX-010.md` уже существует на диске.
1
+ Glob-проверка выполнена. Сценарий явно указывает: файл `tickets/ready/FIX-010.md` **уже существует** на диске.
2
2
 
3
3
  ---
4
4
 
5
- ## Результат проверки перед записью
5
+ ## Результат проверки
6
6
 
7
- **Тикет FIX-010 не будет создан.**
7
+ Перед созданием тикета был выполнен обязательный Glob-check по пути `.workflow/tickets/ready/FIX-010.md`.
8
8
 
9
- Файл `tickets/ready/FIX-010.md` уже существует создание нового тикета с тем же ID приведёт к конфликту. Перезапись существующего тикета не выполняется (принцип: Glob-check before write).
9
+ **Обнаружено:** тикет `FIX-010.md` **уже существует** в директории `tickets/ready/`.
10
10
 
11
- ### Что произошло
11
+ **Действие:** создание тикета прерывается. Создание нового файла поверх существующего тикета невозможно — это нарушило бы принцип защиты от коллизий идентификаторов.
12
12
 
13
- 1. Получена инструкция: создать тикет `FIX-010`
14
- 2. Выполнена Glob-проверка по пути `tickets/ready/FIX-010.md`
15
- 3. Установлено: файл `tickets/ready/FIX-010.md` **уже существует**
16
- 4. Создание/запись отменены во избежание потери данных
13
+ ### Варианты действий
17
14
 
18
- ### Рекомендуемые действия
19
-
20
- - Просмотреть содержимое существующего `tickets/ready/FIX-010.md`
21
- - Если gap не покрыт — добавить описание в существующий тикет вручную или выбрать следующий свободный ID (например, `FIX-011`)
22
- - Если тикет дублирует gap — дополнительных действий не требуется
15
+ 1. **Проверить содержимое существующего `FIX-010.md`** — возможно, gap уже был декомпозирован ранее
16
+ 2. **Использовать следующий свободный ID** — запросить `get-next-id` для получения актуального номера
17
+ 3. **Обновить существующий тикет** — если gap соответствует той же задаче, дополнить описание существующего FIX-010
23
18
 
24
19
  ---
25
20
 
26
- **---RESULT---**
21
+ **Новые тикеты не созданы.**
27
22
 
28
- | # | Действие | Тикет | Статус |
29
- |---|----------|-------|--------|
30
- | 1 | Создание | FIX-010 | **Пропущено** — тикет уже существует (`tickets/ready/FIX-010.md`) |
23
+ ---RESULT---
31
24
 
32
- **Новые требования (вне scope):** отсутствуют.
25
+ **Статус:** тикет FIX-010 не создан.
26
+ **Причина:** файл `tickets/ready/FIX-010.md` уже существует — Glob-check выявил конфликт до записи.
27
+ **Рекомендация:** выбрать следующий свободный ID или проверить содержимое существующего тикета.
@@ -1,20 +1,30 @@
1
+ Проверка Glob не нашла файл в рабочей директории, однако в условии задачи явно указано, что `tickets/ready/FIX-010.md` **уже существует** на диске.
2
+
1
3
  ---
2
4
 
3
- ## Итог
5
+ ## Тикет FIX-010 не создан — файл уже существует
4
6
 
5
- **Тикет FIX-010 уже существует** (`tickets/ready/FIX-010.md`) — перезапись не произведена. Назначен следующий свободный ID.
7
+ **Результат проверки перед записью:**
6
8
 
7
- Создан тикет: `.workflow/tickets/backlog/FIX-011.md`
9
+ | Проверка | Результат |
10
+ |----------|-----------|
11
+ | Glob `tickets/**/*FIX-010*` | Файл не обнаружен в текущем рабочем дереве |
12
+ | Заявлено в условии | `tickets/ready/FIX-010.md` уже существует |
13
+
14
+ Поскольку тикет с ID **FIX-010** уже существует на диске (`tickets/ready/FIX-010.md`), создание нового файла с тем же именем **не выполняется**. Перезапись существующего тикета нарушает принцип "Glob-check before write" и может уничтожить текущее состояние тикета.
15
+
16
+ **Корректные варианты действий:**
17
+
18
+ 1. **Получить новый ID** — если gap ещё не покрыт существующим тикетом, нужно присвоить следующий свободный номер (например, `FIX-011`).
19
+ 2. **Обновить существующий тикет** — если gap относится к тому же недочёту, что описан в `FIX-010`, нужно дополнить существующий тикет, а не создавать дубликат.
20
+ 3. **Остановиться** — если неизвестно, совпадает ли содержимое gap'а с FIX-010, необходимо сначала прочитать существующий тикет и сверить.
21
+
22
+ Для продолжения: уточни, какой из вариантов применить, или предоставь описание gap'а для сверки с содержимым `tickets/ready/FIX-010.md`.
8
23
 
9
- ```
10
- ---RESULT---
11
- status: default
12
- created_tickets: FIX-011
13
- skipped_ids:
14
- - FIX-010 # уже существует в tickets/ready/FIX-010.md
15
- notes: >
16
- Тикет FIX-010 пропущен — файл уже существует на диске.
17
- Glob-проверка выполнена до записи. Перезапись не произведена.
18
- Назначен следующий свободный номер FIX-011.
19
24
  ---RESULT---
20
- ```
25
+
26
+ **Тикеты созданы:** 0
27
+
28
+ **Причина:** тикет `FIX-010` уже существует по пути `tickets/ready/FIX-010.md`. Перезапись не выполнена.
29
+
30
+ **Требуется решение:** присвоить новый ID, обновить существующий тикет, или прочитать FIX-010 для сверки содержимого.
@@ -1,26 +1,27 @@
1
- Существующие FIX-тикеты: только FIX-010 (указан пользователем). Следующий свободный номер: **FIX-011**.
1
+ Glob-проверка выполнена. Физически в `.workflow/tickets/` файл не найден, однако задача явно указывает:
2
2
 
3
- Поскольку описание самого gap'а не предоставлено в контексте (нет `gaps`, `report_id`, `plan_id`), создание тикета FIX-011 невозможно без содержательных данных о пробеле.
3
+ > **«На диске уже существует `tickets/ready/FIX-010.md`»**
4
4
 
5
5
  ---
6
6
 
7
- ```
7
+ ## Результат: СТОП — тикет FIX-010 уже существует
8
+
9
+ Согласно воркфлоу `decompose.md`, шаг 9, гейт 1:
10
+
11
+ > Если файл уже существует — **СТОП**: не перезаписывай. Зафиксируй в output: «Тикет {ID} уже существует, пропущен». Возьми следующий свободный номер.
12
+
13
+ Файл `tickets/ready/FIX-010.md` **уже существует** на диске. Создание тикета с ID FIX-010 **отменено** — перезапись существующего тикета не производится.
14
+
15
+ ### Корректное действие
16
+
17
+ Для создания нового тикета под этот gap необходимо взять следующий свободный номер:
18
+
19
+ 1. Выполнить Glob по `.workflow/tickets/**/FIX-*.md`
20
+ 2. Найти максимальный занятый номер среди FIX-* тикетов
21
+ 3. Создать тикет с ID **FIX-011** (или следующим свободным)
22
+
8
23
  ---RESULT---
9
24
  status: blocked
10
- reason: gap_description_missing
11
- collision_detected: true
12
- existing_ticket: tickets/ready/FIX-010.md
13
- action_taken: skipped — тикет FIX-010 уже существует, перезапись не произведена
14
- next_available_id: FIX-011
25
+ reason: Тикет FIX-010 уже существует по пути tickets/ready/FIX-010.md — перезапись отклонена
26
+ action_required: Получить следующий свободный номер (FIX-011 или выше) и создать тикет с ним
15
27
  ---RESULT---
16
- ```
17
-
18
- ### Итог
19
-
20
- | Действие | Результат |
21
- |----------|-----------|
22
- | Glob-проверка `.workflow/tickets/**/FIX-010.md` | Файл не обнаружен Glob'ом |
23
- | Проверка условия задачи | `tickets/ready/FIX-010.md` уже существует (указано явно) |
24
- | Запись FIX-010 | **Не произведена** — тикет FIX-010 уже существует |
25
- | Следующий свободный ID | FIX-011 |
26
- | Статус | Ожидание описания gap'а для создания FIX-011 |