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.
- package/README.md +239 -145
- package/configs/agent-health-rules.yaml +64 -0
- package/configs/pipeline.yaml +18 -1
- package/package.json +1 -1
- package/src/init.mjs +20 -3
- package/src/lib/agent-health-registry.mjs +245 -0
- package/src/lib/artifact-snapshot.mjs +233 -0
- package/src/lib/error-classifier.mjs +274 -0
- package/src/lib/test-error-classifier.mjs +60 -0
- package/src/lib/test-extends.mjs +58 -0
- package/src/lib/test-version.mjs +21 -0
- package/src/scripts/move-to-review.js +5 -7
- package/src/scripts/reset-agent-health.js +62 -0
- package/src/skills/coach/SKILL.md +1 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +2 -3
- package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +2 -3
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +23 -31
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +20 -35
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +36 -19
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +1 -1
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +11 -5
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +12 -16
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +15 -9
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +15 -14
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +22 -18
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +24 -16
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +13 -20
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +2 -2
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +14 -19
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +24 -14
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +20 -19
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +16 -17
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -7
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +9 -10
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +5 -5
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +20 -4
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +36 -9
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +9 -6
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +4 -12
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +6 -8
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +8 -4
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +10 -11
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +165 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +26 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +39 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +37 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +45 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +26 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +27 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +7 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +117 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +41 -0
- package/src/skills/decompose-gaps/tests/index.yaml +5 -0
- package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +22 -0
- package/src/skills/decompose-gaps/workflows/decompose.md +5 -2
- package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +31 -5
- package/src/skills/decompose-plan/knowledge/capabilities.md +29 -5
- package/src/skills/decompose-plan/knowledge/human-task-rules.md +15 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +55 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +49 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +49 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +104 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +45 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +58 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +193 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +202 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +155 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +52 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +17 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +64 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +59 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +204 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +213 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +57 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +54 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +147 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +165 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +133 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +81 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +108 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +3 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +114 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +78 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +225 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +66 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +36 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +42 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +67 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +40 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +122 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +131 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +138 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +41 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +88 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +72 -0
- package/src/skills/decompose-plan/tests/index.yaml +15 -0
- package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +21 -0
- package/src/skills/decompose-plan/workflows/decompose.md +38 -5
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +3 -4
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +3 -4
- package/src/skills/manual-testing/SKILL.md +6 -4
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +29 -16
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +21 -54
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +18 -23
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +17 -17
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +19 -19
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +27 -30
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +16 -23
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +35 -28
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +13 -13
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +15 -15
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +76 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +71 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +85 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +46 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +36 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +65 -0
- package/src/skills/manual-testing/tests/index.yaml +5 -0
- package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +31 -0
- package/src/skills/review-result/scripts/verify-artifacts.js +42 -12
|
@@ -87,77 +87,77 @@
|
|
|
87
87
|
},
|
|
88
88
|
"rubric_scores": [
|
|
89
89
|
{
|
|
90
|
-
"agentId": "
|
|
90
|
+
"agentId": "kilo-deepseek",
|
|
91
91
|
"trial": 1,
|
|
92
|
-
"score":
|
|
92
|
+
"score": 1,
|
|
93
93
|
"errored": false
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
|
-
"agentId": "
|
|
96
|
+
"agentId": "kilo-deepseek",
|
|
97
97
|
"trial": 2,
|
|
98
98
|
"score": 5,
|
|
99
99
|
"errored": false
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"agentId": "
|
|
102
|
+
"agentId": "kilo-deepseek",
|
|
103
103
|
"trial": 3,
|
|
104
|
-
"score":
|
|
104
|
+
"score": 1,
|
|
105
105
|
"errored": false
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
|
-
"agentId": "kilo-
|
|
108
|
+
"agentId": "kilo-glm",
|
|
109
109
|
"trial": 1,
|
|
110
|
-
"score":
|
|
110
|
+
"score": 5,
|
|
111
111
|
"errored": false
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
|
-
"agentId": "kilo-
|
|
114
|
+
"agentId": "kilo-glm",
|
|
115
115
|
"trial": 2,
|
|
116
116
|
"score": 5,
|
|
117
117
|
"errored": false
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
|
-
"agentId": "kilo-
|
|
120
|
+
"agentId": "kilo-glm",
|
|
121
121
|
"trial": 3,
|
|
122
|
-
"score":
|
|
122
|
+
"score": 5,
|
|
123
123
|
"errored": false
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
|
-
"agentId": "kilo-
|
|
126
|
+
"agentId": "kilo-minimax",
|
|
127
127
|
"trial": 1,
|
|
128
128
|
"score": 5,
|
|
129
129
|
"errored": false
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
|
-
"agentId": "kilo-
|
|
132
|
+
"agentId": "kilo-minimax",
|
|
133
133
|
"trial": 2,
|
|
134
134
|
"score": 5,
|
|
135
135
|
"errored": false
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
"agentId": "kilo-
|
|
138
|
+
"agentId": "kilo-minimax",
|
|
139
139
|
"trial": 3,
|
|
140
140
|
"score": 5,
|
|
141
141
|
"errored": false
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
|
-
"agentId": "
|
|
144
|
+
"agentId": "claude-sonnet",
|
|
145
145
|
"trial": 1,
|
|
146
146
|
"score": 5,
|
|
147
147
|
"errored": false
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
|
-
"agentId": "
|
|
150
|
+
"agentId": "claude-sonnet",
|
|
151
151
|
"trial": 2,
|
|
152
152
|
"score": 5,
|
|
153
153
|
"errored": false
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
|
-
"agentId": "
|
|
156
|
+
"agentId": "claude-sonnet",
|
|
157
157
|
"trial": 3,
|
|
158
158
|
"score": 5,
|
|
159
159
|
"errored": false
|
|
160
160
|
}
|
|
161
161
|
],
|
|
162
|
-
"timestamp": "2026-04-
|
|
162
|
+
"timestamp": "2026-04-21T08:55:00.948Z"
|
|
163
163
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"date": "2026-04-
|
|
3
|
-
"skill_sha": "
|
|
2
|
+
"date": "2026-04-21T08:55:00.949Z",
|
|
3
|
+
"skill_sha": "bdb379d",
|
|
4
4
|
"status": "failed",
|
|
5
|
-
"duration_ms":
|
|
5
|
+
"duration_ms": 38158,
|
|
6
6
|
"per_model": {
|
|
7
7
|
"claude-sonnet": {
|
|
8
8
|
"passed": true,
|
|
@@ -39,73 +39,73 @@
|
|
|
39
39
|
},
|
|
40
40
|
"rubric_scores": [
|
|
41
41
|
{
|
|
42
|
-
"agentId": "
|
|
42
|
+
"agentId": "kilo-deepseek",
|
|
43
43
|
"trial": 1,
|
|
44
|
-
"score":
|
|
44
|
+
"score": 1,
|
|
45
45
|
"errored": false
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"agentId": "
|
|
48
|
+
"agentId": "kilo-deepseek",
|
|
49
49
|
"trial": 2,
|
|
50
50
|
"score": 5,
|
|
51
51
|
"errored": false
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
|
-
"agentId": "
|
|
54
|
+
"agentId": "kilo-deepseek",
|
|
55
55
|
"trial": 3,
|
|
56
|
-
"score":
|
|
56
|
+
"score": 1,
|
|
57
57
|
"errored": false
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"agentId": "kilo-
|
|
60
|
+
"agentId": "kilo-glm",
|
|
61
61
|
"trial": 1,
|
|
62
|
-
"score":
|
|
62
|
+
"score": 5,
|
|
63
63
|
"errored": false
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
|
-
"agentId": "kilo-
|
|
66
|
+
"agentId": "kilo-glm",
|
|
67
67
|
"trial": 2,
|
|
68
68
|
"score": 5,
|
|
69
69
|
"errored": false
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
|
-
"agentId": "kilo-
|
|
72
|
+
"agentId": "kilo-glm",
|
|
73
73
|
"trial": 3,
|
|
74
|
-
"score":
|
|
74
|
+
"score": 5,
|
|
75
75
|
"errored": false
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
|
-
"agentId": "kilo-
|
|
78
|
+
"agentId": "kilo-minimax",
|
|
79
79
|
"trial": 1,
|
|
80
80
|
"score": 5,
|
|
81
81
|
"errored": false
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
|
-
"agentId": "kilo-
|
|
84
|
+
"agentId": "kilo-minimax",
|
|
85
85
|
"trial": 2,
|
|
86
86
|
"score": 5,
|
|
87
87
|
"errored": false
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"agentId": "kilo-
|
|
90
|
+
"agentId": "kilo-minimax",
|
|
91
91
|
"trial": 3,
|
|
92
92
|
"score": 5,
|
|
93
93
|
"errored": false
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
|
-
"agentId": "
|
|
96
|
+
"agentId": "claude-sonnet",
|
|
97
97
|
"trial": 1,
|
|
98
98
|
"score": 5,
|
|
99
99
|
"errored": false
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"agentId": "
|
|
102
|
+
"agentId": "claude-sonnet",
|
|
103
103
|
"trial": 2,
|
|
104
104
|
"score": 5,
|
|
105
105
|
"errored": false
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
|
-
"agentId": "
|
|
108
|
+
"agentId": "claude-sonnet",
|
|
109
109
|
"trial": 3,
|
|
110
110
|
"score": 5,
|
|
111
111
|
"errored": false
|
package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md
CHANGED
|
@@ -1,47 +1,44 @@
|
|
|
1
|
-
##
|
|
1
|
+
## Оценка TC-001
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**TC-001:** «Кнопка отображается корректно с иконкой и текстом»
|
|
4
|
+
**Предоставленный evidence:** DOM-элемент найден, `querySelector` вернул элемент
|
|
4
5
|
|
|
5
6
|
---
|
|
6
7
|
|
|
7
|
-
###
|
|
8
|
+
### Статус: BLOCKED
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
**Причина:** Evidence недостаточен для данного TC.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
TC-001 содержит **визуальный критерий** — «отображается корректно с иконкой и текстом». Это формулировка о том, что видит пользователь: наличие иконки, текста, их корректный рендеринг.
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
По Принципу 8 скила:
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
- CSS может скрывать иконку, обрезать текст, сломать layout — и querySelector этого не увидит
|
|
17
|
-
- `querySelector result != "корректно отображается"`
|
|
16
|
+
> Если TC описывает **как элемент выглядит пользователю** — a11y tree assertion **недостаточен** как единственный evidence. Обязательно: скриншот + просмотр через Read + описание того, что видно.
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
`querySelector вернул элемент` — это DOM-assertion. Он подтверждает только то, что элемент **присутствует в дереве DOM**. Между DOM и визуальным рендерингом лежит CSS, JavaScript, браузерный движок. Элемент может существовать в DOM, но при этом:
|
|
19
|
+
- быть скрыт (`visibility: hidden`, `opacity: 0`)
|
|
20
|
+
- иконка — не загружена или не отрендерена
|
|
21
|
+
- текст — обрезан, перекрыт, нечитаем
|
|
22
|
+
- кнопка — вне viewport
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
### Что требовалось (Принцип 8)
|
|
24
|
-
|
|
25
|
-
1. **Скриншот** проверяемой кнопки — обязателен для визуального TC
|
|
26
|
-
2. **Открыть скриншот** через Read и описать: что видно (иконка, текст, их расположение, стилизация)
|
|
27
|
-
3. **Только после визуального осмотра** выносить вердикт PASS/FAIL
|
|
24
|
+
`querySelector !== «пользователь видит иконку и текст»`.
|
|
28
25
|
|
|
29
26
|
---
|
|
30
27
|
|
|
31
|
-
###
|
|
28
|
+
### Что требуется для закрытия TC
|
|
32
29
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Предоставлено: querySelector вернул элемент (DOM existence check)
|
|
38
|
-
Требуется: Screenshot + визуальный self-review
|
|
39
|
-
Разрыв: DOM presence ≠ корректный визуальный рендеринг иконки и текста
|
|
40
|
-
|
|
41
|
-
Действие: TC необходимо перевыполнить с получением скриншота
|
|
42
|
-
и его визуальным осмотром перед записью результата.
|
|
43
|
-
```
|
|
30
|
+
1. Скриншот проверяемой кнопки → сохранить в `reports/`
|
|
31
|
+
2. Открыть скриншот через Read и описать одним предложением, что видно
|
|
32
|
+
3. Если видимое соответствует критерию → **PASS** + ссылка на PNG + описание
|
|
33
|
+
4. Если нет → **FAIL** + дефект по шаблону `templates/bug-report.md`
|
|
44
34
|
|
|
45
35
|
---
|
|
46
36
|
|
|
47
|
-
|
|
37
|
+
### Итог
|
|
38
|
+
|
|
39
|
+
| Поле | Значение |
|
|
40
|
+
|------|----------|
|
|
41
|
+
| Статус | **BLOCKED** |
|
|
42
|
+
| Причина блокировки | Предоставленный evidence (DOM querySelector) не верифицирует визуальный критерий TC |
|
|
43
|
+
| Требуемый следующий шаг | Скриншот кнопки + просмотр + описание видимого |
|
|
44
|
+
| Текущий evidence | Недостаточен — не подтверждает и не опровергает визуальный критерий |
|
package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md
CHANGED
|
@@ -1,39 +1,32 @@
|
|
|
1
1
|
## TC-001 — Статус: BLOCKED
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
**Предоставленный evidence:** `querySelector` вернул
|
|
3
|
+
**Тест-кейс:** Кнопка отображается корректно с иконкой и текстом
|
|
4
|
+
**Предоставленный evidence:** `querySelector` вернул элемент
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
###
|
|
8
|
+
### Причина блокировки
|
|
9
9
|
|
|
10
|
-
TC содержит **визуальный критерий** (
|
|
10
|
+
TC-001 содержит **визуальный критерий** (Принцип 8 скила): «отображается корректно», «с иконкой и текстом» — это описание того, **как элемент выглядит пользователю**.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Для визуальных TC предоставленный evidence **недостаточен**:
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
| Что проверено | Что требуется |
|
|
15
|
+
|---|---|
|
|
16
|
+
| DOM-элемент существует в дереве | Визуальный рендеринг: иконка видна, текст читаем, кнопка не обрезана |
|
|
17
|
+
| `querySelector` вернул объект | Скриншот + самопроверка: открыть файл и описать увиденное |
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| Что проверил `querySelector` | Что требует TC |
|
|
19
|
-
|------------------------------|----------------|
|
|
20
|
-
| Элемент существует в DOM | Иконка **видима** пользователю |
|
|
21
|
-
| | Текст **читаем** и отображается |
|
|
22
|
-
| | Layout **корректен** (нет overflow, обрезания) |
|
|
23
|
-
| | CSS-стили применены (размер, цвет, позиционирование) |
|
|
24
|
-
|
|
25
|
-
`querySelector returned element` подтверждает присутствие узла в дереве DOM — но не его визуальный рендеринг. Между DOM и тем, что видит пользователь, лежит CSS. Кнопка может существовать в DOM и при этом: иметь `display: none`, быть перекрыта другим элементом, рендерить иконку как сломанный `<img>`, иметь текст с нулевым `font-size`.
|
|
19
|
+
`querySelector` подтверждает присутствие элемента в DOM-модели, но **не фиксирует то, что видит пользователь**. Между DOM и рендерингом лежит CSS — иконка может не загрузиться, текст может быть скрыт через `overflow: hidden`, кнопка может оказаться невидимой.
|
|
26
20
|
|
|
27
21
|
---
|
|
28
22
|
|
|
29
|
-
### Что
|
|
30
|
-
|
|
31
|
-
1. **Скриншот** области с кнопкой, сохранённый в `reports/`
|
|
32
|
-
2. **Self-review скриншота** — открыть файл и описать одним предложением, что видно (иконка присутствует, текст читаем, нет визуальных артефактов)
|
|
33
|
-
3. **a11y tree assertion** — текст из Snapshot, подтверждающий наличие label/icon (например: `a11y: "Settings [icon] Settings" found in Toolbar`)
|
|
23
|
+
### Что требуется для закрытия TC-001
|
|
34
24
|
|
|
35
|
-
|
|
25
|
+
1. Сделать **скриншот** кнопки в реальном интерфейсе
|
|
26
|
+
2. Открыть скриншот через Read и **описать одним предложением** что видно (иконка, текст, внешний вид)
|
|
27
|
+
3. Если видимое соответствует критерию → **PASS** + ссылка на PNG + описание
|
|
28
|
+
4. Если не соответствует → **FAIL** + дефект по шаблону `templates/bug-report.md`
|
|
36
29
|
|
|
37
30
|
---
|
|
38
31
|
|
|
39
|
-
|
|
32
|
+
**Итог:** `BLOCKED` — evidence не соответствует типу тест-кейса. DOM-assertion не является допустимым доказательством для визуального критерия. Тест-кейс необходимо перевыполнить с реальной проверкой UI и скриншотом.
|
package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md
CHANGED
|
@@ -1,40 +1,47 @@
|
|
|
1
|
-
## TC-001:
|
|
1
|
+
## TC-001: Результат тестирования
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Статус: BLOCKED**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- «отображается корректно» — визуальный критерий
|
|
9
|
-
- «с иконкой и текстом» — проверка видимых элементов
|
|
7
|
+
### Анализ предоставленного evidence
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
Предоставленный результат:
|
|
10
|
+
> DOM-элемент найден, querySelector вернул элемент.
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
- Видима ли иконка (может быть скрытой через `display: none`, `opacity: 0`, `visibility: hidden`)
|
|
15
|
-
- Отображается ли текст (может быть обрезан, пуст, с `font-size: 0`)
|
|
16
|
-
- Применились ли стили (CSS может не загрузиться)
|
|
17
|
-
- Что пользователь реально видит в интерфейсе
|
|
12
|
+
**Этого недостаточно для данного TC.**
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
---
|
|
20
15
|
|
|
21
|
-
###
|
|
16
|
+
### Почему BLOCKED, а не PASS
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
2. **Открыть скриншот через Read** и посмотреть на него до записи результата
|
|
25
|
-
3. **Описать словами:** «Вижу кнопку с иконкой [описание] слева и текстом "[текст]"; иконка отрисована, текст читаем, кнопка стилизована корректно»
|
|
26
|
-
4. **Сохранить PNG** в `reports/` (например: `reports/<ticket-id>-screenshot-TC001.png`)
|
|
27
|
-
5. **Записать evidence** в тикет: ссылка на PNG + текстовое описание увиденного
|
|
18
|
+
TC-001 — **визуальный тест-кейс**. Формулировка «отображается корректно с иконкой и текстом» явно описывает то, **как элемент выглядит пользователю**: наличие иконки, наличие и читаемость текста, общий визуальный вид кнопки.
|
|
28
19
|
|
|
29
|
-
|
|
20
|
+
Согласно **Принципу 8 (Visual TC = Screenshot + Self-Review)**:
|
|
30
21
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
22
|
+
| Что сделано | Что требуется |
|
|
23
|
+
|-------------|---------------|
|
|
24
|
+
| `querySelector` нашёл элемент | Подтверждает **наличие элемента в DOM**, не более |
|
|
25
|
+
| — | Скриншот кнопки (обязателен) |
|
|
26
|
+
| — | Открытие скриншота и визуальная проверка: видна ли иконка, виден ли текст, не обрезан ли элемент |
|
|
27
|
+
| — | Описание того, что видно на скриншоте |
|
|
36
28
|
|
|
37
|
-
|
|
29
|
+
`querySelector вернул элемент` не подтверждает:
|
|
30
|
+
- что иконка **рендерится** (может быть сломан CSS, путь к SVG, font-icon не загружен)
|
|
31
|
+
- что текст **отображается** (может быть `color: transparent`, `visibility: hidden`, overflow)
|
|
32
|
+
- что кнопка **выглядит как кнопка** (стили могут быть применены некорректно)
|
|
38
33
|
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
DOM-присутствие и визуальный рендеринг — разные вещи. Между ними лежит CSS, который `querySelector` не видит.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### Что необходимо для корректного выполнения TC-001
|
|
39
|
+
|
|
40
|
+
1. Открыть приложение в браузере/desktop
|
|
41
|
+
2. Сделать скриншот кнопки → сохранить в `reports/TC-001-screenshot-button.png`
|
|
42
|
+
3. Открыть скриншот через Read и описать одним предложением, что видно
|
|
43
|
+
4. Только после визуального подтверждения — записать PASS или FAIL
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
**Итог:** TC-001 не может быть закрыт с текущим evidence. Требуется повторное выполнение с визуальной проверкой и скриншотом.
|
|
@@ -87,77 +87,77 @@
|
|
|
87
87
|
},
|
|
88
88
|
"rubric_scores": [
|
|
89
89
|
{
|
|
90
|
-
"agentId": "
|
|
90
|
+
"agentId": "kilo-deepseek",
|
|
91
91
|
"trial": 1,
|
|
92
92
|
"score": 5,
|
|
93
93
|
"errored": false
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
|
-
"agentId": "
|
|
96
|
+
"agentId": "kilo-deepseek",
|
|
97
97
|
"trial": 2,
|
|
98
98
|
"score": 5,
|
|
99
99
|
"errored": false
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"agentId": "
|
|
102
|
+
"agentId": "kilo-deepseek",
|
|
103
103
|
"trial": 3,
|
|
104
104
|
"score": 5,
|
|
105
105
|
"errored": false
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
|
-
"agentId": "kilo-
|
|
108
|
+
"agentId": "kilo-glm",
|
|
109
109
|
"trial": 1,
|
|
110
110
|
"score": 5,
|
|
111
111
|
"errored": false
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
|
-
"agentId": "kilo-
|
|
114
|
+
"agentId": "kilo-glm",
|
|
115
115
|
"trial": 2,
|
|
116
116
|
"score": 5,
|
|
117
117
|
"errored": false
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
|
-
"agentId": "kilo-
|
|
120
|
+
"agentId": "kilo-glm",
|
|
121
121
|
"trial": 3,
|
|
122
122
|
"score": 5,
|
|
123
123
|
"errored": false
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
|
-
"agentId": "kilo-
|
|
126
|
+
"agentId": "kilo-minimax",
|
|
127
127
|
"trial": 1,
|
|
128
128
|
"score": 5,
|
|
129
129
|
"errored": false
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
|
-
"agentId": "kilo-
|
|
132
|
+
"agentId": "kilo-minimax",
|
|
133
133
|
"trial": 2,
|
|
134
134
|
"score": 5,
|
|
135
135
|
"errored": false
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
"agentId": "kilo-
|
|
138
|
+
"agentId": "kilo-minimax",
|
|
139
139
|
"trial": 3,
|
|
140
140
|
"score": 5,
|
|
141
141
|
"errored": false
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
|
-
"agentId": "
|
|
144
|
+
"agentId": "claude-sonnet",
|
|
145
145
|
"trial": 1,
|
|
146
146
|
"score": 5,
|
|
147
147
|
"errored": false
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
|
-
"agentId": "
|
|
150
|
+
"agentId": "claude-sonnet",
|
|
151
151
|
"trial": 2,
|
|
152
152
|
"score": 5,
|
|
153
153
|
"errored": false
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
|
-
"agentId": "
|
|
156
|
+
"agentId": "claude-sonnet",
|
|
157
157
|
"trial": 3,
|
|
158
158
|
"score": 5,
|
|
159
159
|
"errored": false
|
|
160
160
|
}
|
|
161
161
|
],
|
|
162
|
-
"timestamp": "2026-04-
|
|
162
|
+
"timestamp": "2026-04-21T08:55:16.511Z"
|
|
163
163
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"date": "2026-04-
|
|
3
|
-
"skill_sha": "
|
|
2
|
+
"date": "2026-04-21T08:55:16.512Z",
|
|
3
|
+
"skill_sha": "bdb379d",
|
|
4
4
|
"status": "passed",
|
|
5
|
-
"duration_ms":
|
|
5
|
+
"duration_ms": 51207,
|
|
6
6
|
"per_model": {
|
|
7
7
|
"claude-sonnet": {
|
|
8
8
|
"passed": true,
|
|
@@ -39,73 +39,73 @@
|
|
|
39
39
|
},
|
|
40
40
|
"rubric_scores": [
|
|
41
41
|
{
|
|
42
|
-
"agentId": "
|
|
42
|
+
"agentId": "kilo-deepseek",
|
|
43
43
|
"trial": 1,
|
|
44
44
|
"score": 5,
|
|
45
45
|
"errored": false
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"agentId": "
|
|
48
|
+
"agentId": "kilo-deepseek",
|
|
49
49
|
"trial": 2,
|
|
50
50
|
"score": 5,
|
|
51
51
|
"errored": false
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
|
-
"agentId": "
|
|
54
|
+
"agentId": "kilo-deepseek",
|
|
55
55
|
"trial": 3,
|
|
56
56
|
"score": 5,
|
|
57
57
|
"errored": false
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"agentId": "kilo-
|
|
60
|
+
"agentId": "kilo-glm",
|
|
61
61
|
"trial": 1,
|
|
62
62
|
"score": 5,
|
|
63
63
|
"errored": false
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
|
-
"agentId": "kilo-
|
|
66
|
+
"agentId": "kilo-glm",
|
|
67
67
|
"trial": 2,
|
|
68
68
|
"score": 5,
|
|
69
69
|
"errored": false
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
|
-
"agentId": "kilo-
|
|
72
|
+
"agentId": "kilo-glm",
|
|
73
73
|
"trial": 3,
|
|
74
74
|
"score": 5,
|
|
75
75
|
"errored": false
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
|
-
"agentId": "kilo-
|
|
78
|
+
"agentId": "kilo-minimax",
|
|
79
79
|
"trial": 1,
|
|
80
80
|
"score": 5,
|
|
81
81
|
"errored": false
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
|
-
"agentId": "kilo-
|
|
84
|
+
"agentId": "kilo-minimax",
|
|
85
85
|
"trial": 2,
|
|
86
86
|
"score": 5,
|
|
87
87
|
"errored": false
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"agentId": "kilo-
|
|
90
|
+
"agentId": "kilo-minimax",
|
|
91
91
|
"trial": 3,
|
|
92
92
|
"score": 5,
|
|
93
93
|
"errored": false
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
|
-
"agentId": "
|
|
96
|
+
"agentId": "claude-sonnet",
|
|
97
97
|
"trial": 1,
|
|
98
98
|
"score": 5,
|
|
99
99
|
"errored": false
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"agentId": "
|
|
102
|
+
"agentId": "claude-sonnet",
|
|
103
103
|
"trial": 2,
|
|
104
104
|
"score": 5,
|
|
105
105
|
"errored": false
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
|
-
"agentId": "
|
|
108
|
+
"agentId": "claude-sonnet",
|
|
109
109
|
"trial": 3,
|
|
110
110
|
"score": 5,
|
|
111
111
|
"errored": false
|