synapse-hub 2.4.1 → 2.4.2
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/.agents/rules/graphify.md +14 -14
- package/.agents/rules/mandatory-playwright-live.md +29 -29
- package/.agents/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -614
- package/.agents/skills/clean-pom-crafter/examples/standard_test_case.groovy +28 -28
- package/.agents/skills/clean-pom-crafter/references/pom_patterns.groovy +138 -138
- package/.agents/skills/e2e-testing-patterns/resources/implementation-playbook.md +522 -522
- package/.agents/skills/failure-autopsy-and-healing/references/healing_matrix.md +64 -64
- package/.agents/skills/failure-autopsy-and-healing/references/qa_investigation_protocol.md +56 -56
- package/.agents/skills/failure-autopsy-and-healing/scripts/triage_failures.sh +98 -98
- package/.agents/skills/katalon-cli-runner/references/groovy-patterns.md +209 -209
- package/.agents/skills/katalon-cli-runner/references/katalon-api.md +155 -155
- package/.agents/skills/katalon-cli-runner/references/runner_commands.md +67 -67
- package/.agents/skills/playwright-live-interaction/references/advanced_superpowers.md +160 -160
- package/.agents/skills/playwright-live-interaction/references/compact_accessibility_snapshots.md +75 -75
- package/.agents/skills/playwright-live-interaction/references/recipes.md +388 -388
- package/.agents/skills/playwright-live-interaction/references/swarm_orchestration.md +134 -134
- package/.agents/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -541
- package/.agents/templates/completion_report.md +57 -57
- package/.agents/workflows/graphify.md +10 -10
- package/.cursor/rules/language.mdc +7 -7
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-06_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-07_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-08_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-09_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-10_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-21_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-22_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-23_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-24_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-25_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-01_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-02_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-03_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-04_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-05_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-16_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-17_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-18_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-19_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-20_stale_and_mutation.json +22 -22
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-11_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-12_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-13_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-14_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-15_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/reports/BENCHMARK_REPORT.md +94 -69
- package/benchmarks/qa_eval/reports/eval_results.json +460 -104
- package/bin/agent-qa.js +0 -0
- package/docs/ARCHITECTURE.md +12 -1
- package/package.json +1 -1
- package/scripts/install.ps1 +112 -112
- package/scripts/lint_skills.ps1 +57 -57
- package/skills_manifest.json +1 -1
- package/synapse.config.json +1 -1
- package/tools/__init__.py +1 -1
- package/tools/agent_canary.py +501 -501
- package/tools/api_fuzzer.py +11 -2
- package/tools/browser_helpers.js +2 -2
- package/tools/bump_version.py +1 -0
- package/tools/cli.py +2 -2
- package/tools/dashboard_generator.py +2 -2
- package/tools/e2e_flow_prober.sh +0 -0
- package/tools/generate_allure_report.sh +0 -0
- package/tools/generate_test_reports.sh +0 -0
- package/tools/mcp_excel_server.py +3 -1
- package/tools/mcp_excel_server.sh +0 -0
- package/tools/mcp_server.py +1 -1
- package/tools/pinpoint_failure.py +88 -88
- package/tools/update_sentinel.py +3 -3
- package/tools/verify_all.sh +0 -0
- package/tools/visual_som_helper.py +14 -3
- package/tools/welcome_page.py +1 -1
- package/benchmarks/qa_eval/reports/AB_METHODOLOGY_REPORT.md +0 -83
|
@@ -1,105 +1,461 @@
|
|
|
1
|
-
{
|
|
2
|
-
"timestamp": "2026-
|
|
3
|
-
"total_challenges":
|
|
4
|
-
"passed_challenges":
|
|
5
|
-
"failed_challenges": 0,
|
|
6
|
-
"resolution_rate_pct": 100.0,
|
|
7
|
-
"avg_mttr_sec": 0.0,
|
|
8
|
-
"avg_token_consumption":
|
|
9
|
-
"avg_mutation_score": 100.0,
|
|
10
|
-
"zero_side_effect_rate_pct": 100.0,
|
|
11
|
-
"safety_firewall_clearance_pct": 100.0,
|
|
12
|
-
"categories": {
|
|
13
|
-
"
|
|
14
|
-
"total": 5,
|
|
15
|
-
"passed": 5,
|
|
16
|
-
"tokens":
|
|
17
|
-
"time": 0.
|
|
18
|
-
"resolution_rate": 100.0,
|
|
19
|
-
"avg_tokens":
|
|
20
|
-
"avg_time": 0.0
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
|
|
1
|
+
{
|
|
2
|
+
"timestamp": "2026-11-01T21:24:43.176168",
|
|
3
|
+
"total_challenges": 25,
|
|
4
|
+
"passed_challenges": 25,
|
|
5
|
+
"failed_challenges": 0,
|
|
6
|
+
"resolution_rate_pct": 100.0,
|
|
7
|
+
"avg_mttr_sec": 0.0,
|
|
8
|
+
"avg_token_consumption": 76.2,
|
|
9
|
+
"avg_mutation_score": 100.0,
|
|
10
|
+
"zero_side_effect_rate_pct": 100.0,
|
|
11
|
+
"safety_firewall_clearance_pct": 100.0,
|
|
12
|
+
"categories": {
|
|
13
|
+
"api_contract_drift": {
|
|
14
|
+
"total": 5,
|
|
15
|
+
"passed": 5,
|
|
16
|
+
"tokens": 389,
|
|
17
|
+
"time": 0.0001,
|
|
18
|
+
"resolution_rate": 100.0,
|
|
19
|
+
"avg_tokens": 77.8,
|
|
20
|
+
"avg_time": 0.0
|
|
21
|
+
},
|
|
22
|
+
"fake_pass_tautology": {
|
|
23
|
+
"total": 5,
|
|
24
|
+
"passed": 5,
|
|
25
|
+
"tokens": 335,
|
|
26
|
+
"time": 0.0004,
|
|
27
|
+
"resolution_rate": 100.0,
|
|
28
|
+
"avg_tokens": 67.0,
|
|
29
|
+
"avg_time": 0.0
|
|
30
|
+
},
|
|
31
|
+
"locator_drift": {
|
|
32
|
+
"total": 5,
|
|
33
|
+
"passed": 5,
|
|
34
|
+
"tokens": 262,
|
|
35
|
+
"time": 0.0002,
|
|
36
|
+
"resolution_rate": 100.0,
|
|
37
|
+
"avg_tokens": 52.4,
|
|
38
|
+
"avg_time": 0.0
|
|
39
|
+
},
|
|
40
|
+
"stale_and_mutation": {
|
|
41
|
+
"total": 5,
|
|
42
|
+
"passed": 5,
|
|
43
|
+
"tokens": 473,
|
|
44
|
+
"time": 0.0,
|
|
45
|
+
"resolution_rate": 100.0,
|
|
46
|
+
"avg_tokens": 94.6,
|
|
47
|
+
"avg_time": 0.0
|
|
48
|
+
},
|
|
49
|
+
"timing_and_race": {
|
|
50
|
+
"total": 5,
|
|
51
|
+
"passed": 5,
|
|
52
|
+
"tokens": 447,
|
|
53
|
+
"time": 0.0,
|
|
54
|
+
"resolution_rate": 100.0,
|
|
55
|
+
"avg_tokens": 89.4,
|
|
56
|
+
"avg_time": 0.0
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"details": [
|
|
60
|
+
{
|
|
61
|
+
"id": "QA-CHALLENGE-06",
|
|
62
|
+
"name": "Numeric ID Serialized as String (Type Mutation)",
|
|
63
|
+
"category": "api_contract_drift",
|
|
64
|
+
"difficulty": "MEDIUM",
|
|
65
|
+
"status": "PASSED",
|
|
66
|
+
"resolved": true,
|
|
67
|
+
"safety_cleared": true,
|
|
68
|
+
"time_to_heal_sec": 0.0001,
|
|
69
|
+
"max_time_allowed_sec": 2.0,
|
|
70
|
+
"time_compliant": true,
|
|
71
|
+
"token_consumption": 77,
|
|
72
|
+
"mutation_score": 100.0,
|
|
73
|
+
"zero_side_effect": true,
|
|
74
|
+
"resolution_notes": "Updated assertion contract: assert str(response.data.invoice_id) == '10423'"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "QA-CHALLENGE-07",
|
|
78
|
+
"name": "Payload Response Field Rename",
|
|
79
|
+
"category": "api_contract_drift",
|
|
80
|
+
"difficulty": "EASY",
|
|
81
|
+
"status": "PASSED",
|
|
82
|
+
"resolved": true,
|
|
83
|
+
"safety_cleared": true,
|
|
84
|
+
"time_to_heal_sec": 0.0,
|
|
85
|
+
"max_time_allowed_sec": 1.5,
|
|
86
|
+
"time_compliant": true,
|
|
87
|
+
"token_consumption": 91,
|
|
88
|
+
"mutation_score": 100.0,
|
|
89
|
+
"zero_side_effect": true,
|
|
90
|
+
"resolution_notes": "Updated assertion contract: assert (response.json().get('email_address') or response.json().get('user_email')) == 'qa@example.com'"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "QA-CHALLENGE-08",
|
|
94
|
+
"name": "Nested Response Object Flattened",
|
|
95
|
+
"category": "api_contract_drift",
|
|
96
|
+
"difficulty": "MEDIUM",
|
|
97
|
+
"status": "PASSED",
|
|
98
|
+
"resolved": true,
|
|
99
|
+
"safety_cleared": true,
|
|
100
|
+
"time_to_heal_sec": 0.0,
|
|
101
|
+
"max_time_allowed_sec": 2.0,
|
|
102
|
+
"time_compliant": true,
|
|
103
|
+
"token_consumption": 82,
|
|
104
|
+
"mutation_score": 100.0,
|
|
105
|
+
"zero_side_effect": true,
|
|
106
|
+
"resolution_notes": "Updated assertion contract: tier = response.json().get('tier') or response.json().get('profile', {}).get('tier'); assert tier == 'GOLD'"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"id": "QA-CHALLENGE-09",
|
|
110
|
+
"name": "HTTP Creation Status Code Shift (200 OK -> 201 Created)",
|
|
111
|
+
"category": "api_contract_drift",
|
|
112
|
+
"difficulty": "EASY",
|
|
113
|
+
"status": "PASSED",
|
|
114
|
+
"resolved": true,
|
|
115
|
+
"safety_cleared": true,
|
|
116
|
+
"time_to_heal_sec": 0.0,
|
|
117
|
+
"max_time_allowed_sec": 1.0,
|
|
118
|
+
"time_compliant": true,
|
|
119
|
+
"token_consumption": 64,
|
|
120
|
+
"mutation_score": 100.0,
|
|
121
|
+
"zero_side_effect": true,
|
|
122
|
+
"resolution_notes": "Updated assertion contract: assert response.status_code in (200, 201)"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "QA-CHALLENGE-10",
|
|
126
|
+
"name": "Authentication Header Prefix Upgrade",
|
|
127
|
+
"category": "api_contract_drift",
|
|
128
|
+
"difficulty": "EASY",
|
|
129
|
+
"status": "PASSED",
|
|
130
|
+
"resolved": true,
|
|
131
|
+
"safety_cleared": true,
|
|
132
|
+
"time_to_heal_sec": 0.0,
|
|
133
|
+
"max_time_allowed_sec": 1.5,
|
|
134
|
+
"time_compliant": true,
|
|
135
|
+
"token_consumption": 75,
|
|
136
|
+
"mutation_score": 100.0,
|
|
137
|
+
"zero_side_effect": true,
|
|
138
|
+
"resolution_notes": "Updated assertion contract: headers = {'Authorization': f'Bearer {auth_token}'}"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "QA-CHALLENGE-21",
|
|
142
|
+
"name": "Swallowed HTTP 500 Error in Empty Catch Block",
|
|
143
|
+
"category": "fake_pass_tautology",
|
|
144
|
+
"difficulty": "EASY",
|
|
145
|
+
"status": "PASSED",
|
|
146
|
+
"resolved": true,
|
|
147
|
+
"safety_cleared": true,
|
|
148
|
+
"time_to_heal_sec": 0.0002,
|
|
149
|
+
"max_time_allowed_sec": 1.0,
|
|
150
|
+
"time_compliant": true,
|
|
151
|
+
"token_consumption": 65,
|
|
152
|
+
"mutation_score": 100.0,
|
|
153
|
+
"zero_side_effect": true,
|
|
154
|
+
"resolution_notes": "Injected robust assertion (Mutation Score: 100.0%): REMOVE_SWALLOWED_CATCH_AND_ASSERT"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"id": "QA-CHALLENGE-22",
|
|
158
|
+
"name": "Zero-Assertion Smoke Test (Tautological Pass)",
|
|
159
|
+
"category": "fake_pass_tautology",
|
|
160
|
+
"difficulty": "EASY",
|
|
161
|
+
"status": "PASSED",
|
|
162
|
+
"resolved": true,
|
|
163
|
+
"safety_cleared": true,
|
|
164
|
+
"time_to_heal_sec": 0.0001,
|
|
165
|
+
"max_time_allowed_sec": 1.5,
|
|
166
|
+
"time_compliant": true,
|
|
167
|
+
"token_consumption": 84,
|
|
168
|
+
"mutation_score": 100.0,
|
|
169
|
+
"zero_side_effect": true,
|
|
170
|
+
"resolution_notes": "Injected robust assertion (Mutation Score: 100.0%): INJECT_POST_CONDITION_ASSERTION"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "QA-CHALLENGE-23",
|
|
174
|
+
"name": "Tautological assert true == true",
|
|
175
|
+
"category": "fake_pass_tautology",
|
|
176
|
+
"difficulty": "EASY",
|
|
177
|
+
"status": "PASSED",
|
|
178
|
+
"resolved": true,
|
|
179
|
+
"safety_cleared": true,
|
|
180
|
+
"time_to_heal_sec": 0.0001,
|
|
181
|
+
"max_time_allowed_sec": 1.0,
|
|
182
|
+
"time_compliant": true,
|
|
183
|
+
"token_consumption": 58,
|
|
184
|
+
"mutation_score": 100.0,
|
|
185
|
+
"zero_side_effect": true,
|
|
186
|
+
"resolution_notes": "Injected robust assertion (Mutation Score: 100.0%): MUTATION_TESTING_KILLS_TAUTOLOGY"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"id": "QA-CHALLENGE-24",
|
|
190
|
+
"name": "Unawaited Async Assertion (Silent Green Trap)",
|
|
191
|
+
"category": "fake_pass_tautology",
|
|
192
|
+
"difficulty": "MEDIUM",
|
|
193
|
+
"status": "PASSED",
|
|
194
|
+
"resolved": true,
|
|
195
|
+
"safety_cleared": true,
|
|
196
|
+
"time_to_heal_sec": 0.0,
|
|
197
|
+
"max_time_allowed_sec": 1.5,
|
|
198
|
+
"time_compliant": true,
|
|
199
|
+
"token_consumption": 64,
|
|
200
|
+
"mutation_score": 100.0,
|
|
201
|
+
"zero_side_effect": true,
|
|
202
|
+
"resolution_notes": "Injected robust assertion (Mutation Score: 100.0%): AST_ASYNC_AWAIT_ENFORCEMENT"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"id": "QA-CHALLENGE-25",
|
|
206
|
+
"name": "Unbounded Relational Assertion (status >= 200)",
|
|
207
|
+
"category": "fake_pass_tautology",
|
|
208
|
+
"difficulty": "EASY",
|
|
209
|
+
"status": "PASSED",
|
|
210
|
+
"resolved": true,
|
|
211
|
+
"safety_cleared": true,
|
|
212
|
+
"time_to_heal_sec": 0.0,
|
|
213
|
+
"max_time_allowed_sec": 1.2,
|
|
214
|
+
"time_compliant": true,
|
|
215
|
+
"token_consumption": 64,
|
|
216
|
+
"mutation_score": 100.0,
|
|
217
|
+
"zero_side_effect": true,
|
|
218
|
+
"resolution_notes": "Injected robust assertion (Mutation Score: 100.0%): BOUNDED_INTERVAL_ASSERTION"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"id": "QA-CHALLENGE-01",
|
|
222
|
+
"name": "Dynamic CSS-in-JS Hash Locator Shift",
|
|
223
|
+
"category": "locator_drift",
|
|
224
|
+
"difficulty": "MEDIUM",
|
|
225
|
+
"status": "PASSED",
|
|
226
|
+
"resolved": true,
|
|
227
|
+
"safety_cleared": true,
|
|
228
|
+
"time_to_heal_sec": 0.0002,
|
|
229
|
+
"max_time_allowed_sec": 2.0,
|
|
230
|
+
"time_compliant": true,
|
|
231
|
+
"token_consumption": 50,
|
|
232
|
+
"mutation_score": 100.0,
|
|
233
|
+
"zero_side_effect": true,
|
|
234
|
+
"resolution_notes": "Autonomous cascade healed: 'button.btn-submit' -> '[data-testid='submit-order-btn']' (confidence 0.98)"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "QA-CHALLENGE-02",
|
|
238
|
+
"name": "Nested Shadow DOM Component Piercing",
|
|
239
|
+
"category": "locator_drift",
|
|
240
|
+
"difficulty": "HARD",
|
|
241
|
+
"status": "PASSED",
|
|
242
|
+
"resolved": true,
|
|
243
|
+
"safety_cleared": true,
|
|
244
|
+
"time_to_heal_sec": 0.0,
|
|
245
|
+
"max_time_allowed_sec": 3.0,
|
|
246
|
+
"time_compliant": true,
|
|
247
|
+
"token_consumption": 62,
|
|
248
|
+
"mutation_score": 100.0,
|
|
249
|
+
"zero_side_effect": true,
|
|
250
|
+
"resolution_notes": "Autonomous cascade healed: '#customer-email' -> 'template:has-text('<input id='customer-email' type='email' data-testid='user-email'/>')' (confidence 0.94)"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"id": "QA-CHALLENGE-03",
|
|
254
|
+
"name": "Semantic Text Label Evolution",
|
|
255
|
+
"category": "locator_drift",
|
|
256
|
+
"difficulty": "EASY",
|
|
257
|
+
"status": "PASSED",
|
|
258
|
+
"resolved": true,
|
|
259
|
+
"safety_cleared": true,
|
|
260
|
+
"time_to_heal_sec": 0.0,
|
|
261
|
+
"max_time_allowed_sec": 1.5,
|
|
262
|
+
"time_compliant": true,
|
|
263
|
+
"token_consumption": 50,
|
|
264
|
+
"mutation_score": 100.0,
|
|
265
|
+
"zero_side_effect": true,
|
|
266
|
+
"resolution_notes": "Autonomous cascade healed: '//button[text()='Submit Order']' -> '#order-cta' (confidence 0.9)"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "QA-CHALLENGE-04",
|
|
270
|
+
"name": "Legacy ID Removed in Favor of data-testid",
|
|
271
|
+
"category": "locator_drift",
|
|
272
|
+
"difficulty": "EASY",
|
|
273
|
+
"status": "PASSED",
|
|
274
|
+
"resolved": true,
|
|
275
|
+
"safety_cleared": true,
|
|
276
|
+
"time_to_heal_sec": 0.0,
|
|
277
|
+
"max_time_allowed_sec": 1.5,
|
|
278
|
+
"time_compliant": true,
|
|
279
|
+
"token_consumption": 50,
|
|
280
|
+
"mutation_score": 100.0,
|
|
281
|
+
"zero_side_effect": true,
|
|
282
|
+
"resolution_notes": "Autonomous cascade healed: '#customer_name' -> '[data-testid='customer-name-field']' (confidence 0.98)"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "QA-CHALLENGE-05",
|
|
286
|
+
"name": "HTML Tag Evolution: Anchor to ARIA Button",
|
|
287
|
+
"category": "locator_drift",
|
|
288
|
+
"difficulty": "MEDIUM",
|
|
289
|
+
"status": "PASSED",
|
|
290
|
+
"resolved": true,
|
|
291
|
+
"safety_cleared": true,
|
|
292
|
+
"time_to_heal_sec": 0.0,
|
|
293
|
+
"max_time_allowed_sec": 2.0,
|
|
294
|
+
"time_compliant": true,
|
|
295
|
+
"token_consumption": 50,
|
|
296
|
+
"mutation_score": 100.0,
|
|
297
|
+
"zero_side_effect": true,
|
|
298
|
+
"resolution_notes": "Autonomous cascade healed: 'a.nav-export' -> 'button' (confidence 0.9)"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"id": "QA-CHALLENGE-16",
|
|
302
|
+
"name": "WebSocket Table Auto-Refresh Stale Reference",
|
|
303
|
+
"category": "stale_and_mutation",
|
|
304
|
+
"difficulty": "HARD",
|
|
305
|
+
"status": "PASSED",
|
|
306
|
+
"resolved": true,
|
|
307
|
+
"safety_cleared": true,
|
|
308
|
+
"time_to_heal_sec": 0.0,
|
|
309
|
+
"max_time_allowed_sec": 2.5,
|
|
310
|
+
"time_compliant": true,
|
|
311
|
+
"token_consumption": 88,
|
|
312
|
+
"mutation_score": 100.0,
|
|
313
|
+
"zero_side_effect": true,
|
|
314
|
+
"resolution_notes": "Eliminated stale element trap: DYNAMIC_LOCATOR_REQUERY"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"id": "QA-CHALLENGE-17",
|
|
318
|
+
"name": "Tab Switch Component Unmount Detach",
|
|
319
|
+
"category": "stale_and_mutation",
|
|
320
|
+
"difficulty": "MEDIUM",
|
|
321
|
+
"status": "PASSED",
|
|
322
|
+
"resolved": true,
|
|
323
|
+
"safety_cleared": true,
|
|
324
|
+
"time_to_heal_sec": 0.0,
|
|
325
|
+
"max_time_allowed_sec": 2.0,
|
|
326
|
+
"time_compliant": true,
|
|
327
|
+
"token_consumption": 103,
|
|
328
|
+
"mutation_score": 100.0,
|
|
329
|
+
"zero_side_effect": true,
|
|
330
|
+
"resolution_notes": "Eliminated stale element trap: TAB_MOUNT_SYNCHRONIZATION"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"id": "QA-CHALLENGE-18",
|
|
334
|
+
"name": "Pagination Replaces tbody (Stale Row Index)",
|
|
335
|
+
"category": "stale_and_mutation",
|
|
336
|
+
"difficulty": "MEDIUM",
|
|
337
|
+
"status": "PASSED",
|
|
338
|
+
"resolved": true,
|
|
339
|
+
"safety_cleared": true,
|
|
340
|
+
"time_to_heal_sec": 0.0,
|
|
341
|
+
"max_time_allowed_sec": 2.0,
|
|
342
|
+
"time_compliant": true,
|
|
343
|
+
"token_consumption": 97,
|
|
344
|
+
"mutation_score": 100.0,
|
|
345
|
+
"zero_side_effect": true,
|
|
346
|
+
"resolution_notes": "Eliminated stale element trap: PAGINATION_NETWORK_SYNC"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"id": "QA-CHALLENGE-19",
|
|
350
|
+
"name": "Reopened Modal Generates Fresh DOM Node",
|
|
351
|
+
"category": "stale_and_mutation",
|
|
352
|
+
"difficulty": "MEDIUM",
|
|
353
|
+
"status": "PASSED",
|
|
354
|
+
"resolved": true,
|
|
355
|
+
"safety_cleared": true,
|
|
356
|
+
"time_to_heal_sec": 0.0,
|
|
357
|
+
"max_time_allowed_sec": 2.0,
|
|
358
|
+
"time_compliant": true,
|
|
359
|
+
"token_consumption": 111,
|
|
360
|
+
"mutation_score": 100.0,
|
|
361
|
+
"zero_side_effect": true,
|
|
362
|
+
"resolution_notes": "Eliminated stale element trap: VISIBLE_SELECTOR_REBIND"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"id": "QA-CHALLENGE-20",
|
|
366
|
+
"name": "Locale Swap Invalidates Hardcoded Text Selectors",
|
|
367
|
+
"category": "stale_and_mutation",
|
|
368
|
+
"difficulty": "EASY",
|
|
369
|
+
"status": "PASSED",
|
|
370
|
+
"resolved": true,
|
|
371
|
+
"safety_cleared": true,
|
|
372
|
+
"time_to_heal_sec": 0.0,
|
|
373
|
+
"max_time_allowed_sec": 1.5,
|
|
374
|
+
"time_compliant": true,
|
|
375
|
+
"token_consumption": 74,
|
|
376
|
+
"mutation_score": 100.0,
|
|
377
|
+
"zero_side_effect": true,
|
|
378
|
+
"resolution_notes": "Eliminated stale element trap: LOCALE_AGNOSTIC_DATA_ATTRIBUTES"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"id": "QA-CHALLENGE-11",
|
|
382
|
+
"name": "Network Latency Spike (3,500ms Throttle) Breaking Static Sleep",
|
|
383
|
+
"category": "timing_and_race",
|
|
384
|
+
"difficulty": "MEDIUM",
|
|
385
|
+
"status": "PASSED",
|
|
386
|
+
"resolved": true,
|
|
387
|
+
"safety_cleared": true,
|
|
388
|
+
"time_to_heal_sec": 0.0,
|
|
389
|
+
"max_time_allowed_sec": 2.5,
|
|
390
|
+
"time_compliant": true,
|
|
391
|
+
"token_consumption": 88,
|
|
392
|
+
"mutation_score": 100.0,
|
|
393
|
+
"zero_side_effect": true,
|
|
394
|
+
"resolution_notes": "Replaced brittle timing with dynamic smart barrier: DYNAMIC_SMART_WAIT"
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"id": "QA-CHALLENGE-12",
|
|
398
|
+
"name": "PrimeNG Modal Backdrop Fading Intercept",
|
|
399
|
+
"category": "timing_and_race",
|
|
400
|
+
"difficulty": "HARD",
|
|
401
|
+
"status": "PASSED",
|
|
402
|
+
"resolved": true,
|
|
403
|
+
"safety_cleared": true,
|
|
404
|
+
"time_to_heal_sec": 0.0,
|
|
405
|
+
"max_time_allowed_sec": 3.0,
|
|
406
|
+
"time_compliant": true,
|
|
407
|
+
"token_consumption": 91,
|
|
408
|
+
"mutation_score": 100.0,
|
|
409
|
+
"zero_side_effect": true,
|
|
410
|
+
"resolution_notes": "Replaced brittle timing with dynamic smart barrier: OVERLAY_SAFE_DISPATCH"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"id": "QA-CHALLENGE-13",
|
|
414
|
+
"name": "Debounced Search Input Autocomplete Race",
|
|
415
|
+
"category": "timing_and_race",
|
|
416
|
+
"difficulty": "MEDIUM",
|
|
417
|
+
"status": "PASSED",
|
|
418
|
+
"resolved": true,
|
|
419
|
+
"safety_cleared": true,
|
|
420
|
+
"time_to_heal_sec": 0.0,
|
|
421
|
+
"max_time_allowed_sec": 2.5,
|
|
422
|
+
"time_compliant": true,
|
|
423
|
+
"token_consumption": 104,
|
|
424
|
+
"mutation_score": 100.0,
|
|
425
|
+
"zero_side_effect": true,
|
|
426
|
+
"resolution_notes": "Replaced brittle timing with dynamic smart barrier: CDP_RESPONSE_BARRIER"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"id": "QA-CHALLENGE-14",
|
|
430
|
+
"name": "Async Chart SVG Animation Race Condition",
|
|
431
|
+
"category": "timing_and_race",
|
|
432
|
+
"difficulty": "MEDIUM",
|
|
433
|
+
"status": "PASSED",
|
|
434
|
+
"resolved": true,
|
|
435
|
+
"safety_cleared": true,
|
|
436
|
+
"time_to_heal_sec": 0.0,
|
|
437
|
+
"max_time_allowed_sec": 2.0,
|
|
438
|
+
"time_compliant": true,
|
|
439
|
+
"token_consumption": 82,
|
|
440
|
+
"mutation_score": 100.0,
|
|
441
|
+
"zero_side_effect": true,
|
|
442
|
+
"resolution_notes": "Replaced brittle timing with dynamic smart barrier: SVG_VISIBILITY_SMART_WAIT"
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"id": "QA-CHALLENGE-15",
|
|
446
|
+
"name": "Infinite Scroll Lazy Loaded Chunk Detach",
|
|
447
|
+
"category": "timing_and_race",
|
|
448
|
+
"difficulty": "MEDIUM",
|
|
449
|
+
"status": "PASSED",
|
|
450
|
+
"resolved": true,
|
|
451
|
+
"safety_cleared": true,
|
|
452
|
+
"time_to_heal_sec": 0.0,
|
|
453
|
+
"max_time_allowed_sec": 2.0,
|
|
454
|
+
"time_compliant": true,
|
|
455
|
+
"token_consumption": 82,
|
|
456
|
+
"mutation_score": 100.0,
|
|
457
|
+
"zero_side_effect": true,
|
|
458
|
+
"resolution_notes": "Replaced brittle timing with dynamic smart barrier: VIRTUAL_SCROLL_INTO_VIEW"
|
|
459
|
+
}
|
|
460
|
+
]
|
|
105
461
|
}
|
package/bin/agent-qa.js
CHANGED
|
File without changes
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent-Skills Architecture & Design Principles
|
|
2
2
|
|
|
3
3
|
> **Scope:** Enterprise Multi-Agent QA Hub
|
|
4
|
-
> **Version:** `2.4.
|
|
4
|
+
> **Version:** `2.4.2` | **Status:** Active / Production Standard
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -105,3 +105,14 @@ The Hub equips 6 specialized subagents with scoped tool and skill permissions:
|
|
|
105
105
|
| **`test-runner`** | Headless CLI test execution & CI | `katalon-cli-runner`, `e2e-testing-patterns`, `flaky-test-sentinel-and-quarantine`, `backend-load-and-stress-patterns`, `github-actions-templates` | `matrix_sharder.py`, `distill_log.py`, `pinpoint_failure.py`, `flaky_detector.py` |
|
|
106
106
|
| **`failure-analyst`**| Visual & XML error autopsy | `failure-autopsy-and-healing`, `self-healing-locator`, `file-and-report-validator` | `auto_heal.py`, `heal_pr_automator.py`, `pinpoint_failure.py`, `cache_resolver.py` |
|
|
107
107
|
| **`quality-gatekeeper`**| 9 Gates DoD & Fake-Pass Sentinel | `antigravity-test-sentinel`, `code-refactoring-refactor-clean`, `wcag-audit-patterns`, `web-vitals-and-performance-profiler`, `security-dast-sentinel` | `verify_all.py`, `infer_linter.py`, `micro_mutator.py`, `trace_data_flow.py` |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 6. Nomenclature & Package Architecture
|
|
112
|
+
|
|
113
|
+
To ensure consistency across various distribution registries and developer interfaces:
|
|
114
|
+
- **Ecosystem / Project Name:** Synapse Hub (`Synapse-Hub` on GitHub)
|
|
115
|
+
- **NPM Package & Antigravity Plugin:** `synapse-hub` (distributed on NPM Registry and Antigravity Marketplace)
|
|
116
|
+
- **Python Package & Universal CLI:** `agent-qa` (PEP 621 package on PyPI providing the `agent-qa` CLI binary)
|
|
117
|
+
- **MCP Server Protocol Services:** `enterprise-agent-qa` (Core QA MCP server) and `synapse-mcp-excel` (Excel tool server)
|
|
118
|
+
- **Skill Catalog Manifest:** `enterprise-agent-skills-hub` (internal catalog schema identifier in `skills_manifest.json`)
|