agentic-qe 1.5.1 → 1.6.1

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 (188) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +118 -0
  2. package/.claude/agents/qe-chaos-engineer.md +320 -5
  3. package/.claude/agents/qe-code-complexity.md +360 -0
  4. package/.claude/agents/qe-coverage-analyzer.md +112 -0
  5. package/.claude/agents/qe-deployment-readiness.md +322 -6
  6. package/.claude/agents/qe-flaky-test-hunter.md +115 -0
  7. package/.claude/agents/qe-fleet-commander.md +319 -6
  8. package/.claude/agents/qe-performance-tester.md +234 -0
  9. package/.claude/agents/qe-production-intelligence.md +114 -0
  10. package/.claude/agents/qe-quality-analyzer.md +126 -0
  11. package/.claude/agents/qe-quality-gate.md +119 -0
  12. package/.claude/agents/qe-regression-risk-analyzer.md +114 -0
  13. package/.claude/agents/qe-requirements-validator.md +114 -0
  14. package/.claude/agents/qe-security-scanner.md +118 -0
  15. package/.claude/agents/qe-test-data-architect.md +234 -0
  16. package/.claude/agents/qe-test-executor.md +115 -0
  17. package/.claude/agents/qe-test-generator.md +114 -0
  18. package/.claude/agents/qe-visual-tester.md +305 -6
  19. package/.claude/agents/subagents/qe-code-reviewer.md +0 -4
  20. package/.claude/agents/subagents/qe-data-generator.md +0 -16
  21. package/.claude/agents/subagents/qe-integration-tester.md +0 -17
  22. package/.claude/agents/subagents/qe-performance-validator.md +0 -16
  23. package/.claude/agents/subagents/qe-security-auditor.md +0 -16
  24. package/.claude/agents/subagents/qe-test-implementer.md +0 -17
  25. package/.claude/agents/subagents/qe-test-refactorer.md +0 -17
  26. package/.claude/agents/subagents/qe-test-writer.md +0 -19
  27. package/.claude/skills/brutal-honesty-review/README.md +218 -0
  28. package/.claude/skills/brutal-honesty-review/SKILL.md +725 -0
  29. package/.claude/skills/brutal-honesty-review/resources/assessment-rubrics.md +295 -0
  30. package/.claude/skills/brutal-honesty-review/resources/review-template.md +102 -0
  31. package/.claude/skills/brutal-honesty-review/scripts/assess-code.sh +179 -0
  32. package/.claude/skills/brutal-honesty-review/scripts/assess-tests.sh +223 -0
  33. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +301 -0
  34. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +510 -0
  35. package/.claude/skills/cicd-pipeline-qe-orchestrator/resources/workflows/microservice-pipeline.md +239 -0
  36. package/.claude/skills/cicd-pipeline-qe-orchestrator/resources/workflows/mobile-pipeline.md +375 -0
  37. package/.claude/skills/cicd-pipeline-qe-orchestrator/resources/workflows/monolith-pipeline.md +268 -0
  38. package/.claude/skills/six-thinking-hats/README.md +190 -0
  39. package/.claude/skills/six-thinking-hats/SKILL.md +1215 -0
  40. package/.claude/skills/six-thinking-hats/resources/examples/api-testing-example.md +345 -0
  41. package/.claude/skills/six-thinking-hats/resources/templates/solo-session-template.md +167 -0
  42. package/.claude/skills/six-thinking-hats/resources/templates/team-session-template.md +336 -0
  43. package/CHANGELOG.md +2472 -2129
  44. package/README.md +48 -10
  45. package/dist/adapters/MemoryStoreAdapter.d.ts +38 -0
  46. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  47. package/dist/adapters/MemoryStoreAdapter.js +22 -0
  48. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  49. package/dist/agents/BaseAgent.d.ts.map +1 -1
  50. package/dist/agents/BaseAgent.js +13 -0
  51. package/dist/agents/BaseAgent.js.map +1 -1
  52. package/dist/cli/commands/init-claude-md-template.d.ts +16 -0
  53. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -0
  54. package/dist/cli/commands/init-claude-md-template.js +69 -0
  55. package/dist/cli/commands/init-claude-md-template.js.map +1 -0
  56. package/dist/cli/commands/init.d.ts +1 -1
  57. package/dist/cli/commands/init.d.ts.map +1 -1
  58. package/dist/cli/commands/init.js +509 -460
  59. package/dist/cli/commands/init.js.map +1 -1
  60. package/dist/core/memory/AgentDBService.d.ts +33 -28
  61. package/dist/core/memory/AgentDBService.d.ts.map +1 -1
  62. package/dist/core/memory/AgentDBService.js +233 -290
  63. package/dist/core/memory/AgentDBService.js.map +1 -1
  64. package/dist/core/memory/EnhancedAgentDBService.d.ts.map +1 -1
  65. package/dist/core/memory/EnhancedAgentDBService.js +5 -3
  66. package/dist/core/memory/EnhancedAgentDBService.js.map +1 -1
  67. package/dist/core/memory/RealAgentDBAdapter.d.ts +9 -2
  68. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  69. package/dist/core/memory/RealAgentDBAdapter.js +126 -100
  70. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  71. package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
  72. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  73. package/dist/core/memory/SwarmMemoryManager.js +176 -0
  74. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  75. package/dist/core/memory/index.d.ts.map +1 -1
  76. package/dist/core/memory/index.js +2 -1
  77. package/dist/core/memory/index.js.map +1 -1
  78. package/dist/learning/LearningEngine.d.ts +14 -27
  79. package/dist/learning/LearningEngine.d.ts.map +1 -1
  80. package/dist/learning/LearningEngine.js +57 -119
  81. package/dist/learning/LearningEngine.js.map +1 -1
  82. package/dist/learning/index.d.ts +0 -1
  83. package/dist/learning/index.d.ts.map +1 -1
  84. package/dist/learning/index.js +0 -1
  85. package/dist/learning/index.js.map +1 -1
  86. package/dist/mcp/handlers/learning/learning-query.d.ts +34 -0
  87. package/dist/mcp/handlers/learning/learning-query.d.ts.map +1 -0
  88. package/dist/mcp/handlers/learning/learning-query.js +156 -0
  89. package/dist/mcp/handlers/learning/learning-query.js.map +1 -0
  90. package/dist/mcp/handlers/learning/learning-store-experience.d.ts +30 -0
  91. package/dist/mcp/handlers/learning/learning-store-experience.d.ts.map +1 -0
  92. package/dist/mcp/handlers/learning/learning-store-experience.js +86 -0
  93. package/dist/mcp/handlers/learning/learning-store-experience.js.map +1 -0
  94. package/dist/mcp/handlers/learning/learning-store-pattern.d.ts +31 -0
  95. package/dist/mcp/handlers/learning/learning-store-pattern.d.ts.map +1 -0
  96. package/dist/mcp/handlers/learning/learning-store-pattern.js +126 -0
  97. package/dist/mcp/handlers/learning/learning-store-pattern.js.map +1 -0
  98. package/dist/mcp/handlers/learning/learning-store-qvalue.d.ts +30 -0
  99. package/dist/mcp/handlers/learning/learning-store-qvalue.d.ts.map +1 -0
  100. package/dist/mcp/handlers/learning/learning-store-qvalue.js +100 -0
  101. package/dist/mcp/handlers/learning/learning-store-qvalue.js.map +1 -0
  102. package/dist/mcp/server.d.ts +11 -0
  103. package/dist/mcp/server.d.ts.map +1 -1
  104. package/dist/mcp/server.js +98 -1
  105. package/dist/mcp/server.js.map +1 -1
  106. package/dist/mcp/services/LearningEventListener.d.ts +123 -0
  107. package/dist/mcp/services/LearningEventListener.d.ts.map +1 -0
  108. package/dist/mcp/services/LearningEventListener.js +322 -0
  109. package/dist/mcp/services/LearningEventListener.js.map +1 -0
  110. package/dist/mcp/tools.d.ts +4 -0
  111. package/dist/mcp/tools.d.ts.map +1 -1
  112. package/dist/mcp/tools.js +179 -0
  113. package/dist/mcp/tools.js.map +1 -1
  114. package/dist/types/memory-interfaces.d.ts +71 -0
  115. package/dist/types/memory-interfaces.d.ts.map +1 -1
  116. package/dist/utils/Calculator.d.ts +35 -0
  117. package/dist/utils/Calculator.d.ts.map +1 -0
  118. package/dist/utils/Calculator.js +50 -0
  119. package/dist/utils/Calculator.js.map +1 -0
  120. package/dist/utils/Logger.d.ts.map +1 -1
  121. package/dist/utils/Logger.js +4 -1
  122. package/dist/utils/Logger.js.map +1 -1
  123. package/package.json +7 -5
  124. package/.claude/agents/qe-api-contract-validator.md.backup +0 -1148
  125. package/.claude/agents/qe-api-contract-validator.md.backup-20251107-134747 +0 -1148
  126. package/.claude/agents/qe-api-contract-validator.md.backup-phase2-20251107-140039 +0 -1123
  127. package/.claude/agents/qe-chaos-engineer.md.backup +0 -808
  128. package/.claude/agents/qe-chaos-engineer.md.backup-20251107-134747 +0 -808
  129. package/.claude/agents/qe-chaos-engineer.md.backup-phase2-20251107-140039 +0 -787
  130. package/.claude/agents/qe-code-complexity.md.backup +0 -291
  131. package/.claude/agents/qe-code-complexity.md.backup-20251107-134747 +0 -291
  132. package/.claude/agents/qe-code-complexity.md.backup-phase2-20251107-140039 +0 -286
  133. package/.claude/agents/qe-coverage-analyzer.md.backup +0 -467
  134. package/.claude/agents/qe-coverage-analyzer.md.backup-20251107-134747 +0 -467
  135. package/.claude/agents/qe-coverage-analyzer.md.backup-phase2-20251107-140039 +0 -438
  136. package/.claude/agents/qe-deployment-readiness.md.backup +0 -1166
  137. package/.claude/agents/qe-deployment-readiness.md.backup-20251107-134747 +0 -1166
  138. package/.claude/agents/qe-deployment-readiness.md.backup-phase2-20251107-140039 +0 -1140
  139. package/.claude/agents/qe-flaky-test-hunter.md.backup +0 -1195
  140. package/.claude/agents/qe-flaky-test-hunter.md.backup-20251107-134747 +0 -1195
  141. package/.claude/agents/qe-flaky-test-hunter.md.backup-phase2-20251107-140039 +0 -1162
  142. package/.claude/agents/qe-fleet-commander.md.backup +0 -718
  143. package/.claude/agents/qe-fleet-commander.md.backup-20251107-134747 +0 -718
  144. package/.claude/agents/qe-fleet-commander.md.backup-phase2-20251107-140039 +0 -697
  145. package/.claude/agents/qe-performance-tester.md.backup +0 -428
  146. package/.claude/agents/qe-performance-tester.md.backup-20251107-134747 +0 -428
  147. package/.claude/agents/qe-performance-tester.md.backup-phase2-20251107-140039 +0 -372
  148. package/.claude/agents/qe-production-intelligence.md.backup +0 -1219
  149. package/.claude/agents/qe-production-intelligence.md.backup-20251107-134747 +0 -1219
  150. package/.claude/agents/qe-production-intelligence.md.backup-phase2-20251107-140039 +0 -1194
  151. package/.claude/agents/qe-quality-analyzer.md.backup +0 -425
  152. package/.claude/agents/qe-quality-analyzer.md.backup-20251107-134747 +0 -425
  153. package/.claude/agents/qe-quality-analyzer.md.backup-phase2-20251107-140039 +0 -394
  154. package/.claude/agents/qe-quality-gate.md.backup +0 -446
  155. package/.claude/agents/qe-quality-gate.md.backup-20251107-134747 +0 -446
  156. package/.claude/agents/qe-quality-gate.md.backup-phase2-20251107-140039 +0 -415
  157. package/.claude/agents/qe-regression-risk-analyzer.md.backup +0 -1009
  158. package/.claude/agents/qe-regression-risk-analyzer.md.backup-20251107-134747 +0 -1009
  159. package/.claude/agents/qe-regression-risk-analyzer.md.backup-phase2-20251107-140039 +0 -984
  160. package/.claude/agents/qe-requirements-validator.md.backup +0 -748
  161. package/.claude/agents/qe-requirements-validator.md.backup-20251107-134747 +0 -748
  162. package/.claude/agents/qe-requirements-validator.md.backup-phase2-20251107-140039 +0 -723
  163. package/.claude/agents/qe-security-scanner.md.backup +0 -634
  164. package/.claude/agents/qe-security-scanner.md.backup-20251107-134747 +0 -634
  165. package/.claude/agents/qe-security-scanner.md.backup-phase2-20251107-140039 +0 -573
  166. package/.claude/agents/qe-test-data-architect.md.backup +0 -1064
  167. package/.claude/agents/qe-test-data-architect.md.backup-20251107-134747 +0 -1064
  168. package/.claude/agents/qe-test-data-architect.md.backup-phase2-20251107-140039 +0 -1040
  169. package/.claude/agents/qe-test-executor.md.backup +0 -389
  170. package/.claude/agents/qe-test-executor.md.backup-20251107-134747 +0 -389
  171. package/.claude/agents/qe-test-executor.md.backup-phase2-20251107-140039 +0 -369
  172. package/.claude/agents/qe-test-generator.md.backup +0 -997
  173. package/.claude/agents/qe-test-generator.md.backup-20251107-134747 +0 -997
  174. package/.claude/agents/qe-visual-tester.md.backup +0 -777
  175. package/.claude/agents/qe-visual-tester.md.backup-20251107-134747 +0 -777
  176. package/.claude/agents/qe-visual-tester.md.backup-phase2-20251107-140039 +0 -756
  177. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  178. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  179. package/.claude/commands/flow-nexus/app-store.md +0 -124
  180. package/.claude/commands/flow-nexus/challenges.md +0 -120
  181. package/.claude/commands/flow-nexus/login-registration.md +0 -65
  182. package/.claude/commands/flow-nexus/neural-network.md +0 -134
  183. package/.claude/commands/flow-nexus/payments.md +0 -116
  184. package/.claude/commands/flow-nexus/sandbox.md +0 -83
  185. package/.claude/commands/flow-nexus/swarm.md +0 -87
  186. package/.claude/commands/flow-nexus/user-tools.md +0 -152
  187. package/.claude/commands/flow-nexus/workflow.md +0 -115
  188. package/.claude/commands/memory/usage.md +0 -46
@@ -29,6 +29,124 @@ Skill("contract-testing")
29
29
  Skill("regression-testing")
30
30
  ```
31
31
 
32
+ ## Learning Protocol
33
+
34
+ **⚠️ MANDATORY**: When executed via Claude Code Task tool, you MUST call learning MCP tools to persist learning data.
35
+
36
+ ### Required Learning Actions (Call AFTER Task Completion)
37
+
38
+ **1. Store Learning Experience:**
39
+ ```typescript
40
+ // Call this MCP tool after completing API contract validation
41
+ mcp__agentic_qe__learning_store_experience({
42
+ agentId: "qe-api-contract-validator",
43
+ taskType: "api-contract-validation",
44
+ reward: 0.93, // Your assessment of task success (0-1 scale)
45
+ outcome: {
46
+ contractsValidated: 12,
47
+ breakingChangesDetected: 2,
48
+ compatibilityIssues: 3,
49
+ consumersAffected: 8,
50
+ versioningCompliance: "100%",
51
+ validationQuality: "high"
52
+ },
53
+ metadata: {
54
+ apiType: "rest",
55
+ schemaFormat: "openapi",
56
+ versionBump: "minor",
57
+ comparisonDepth: "comprehensive"
58
+ }
59
+ })
60
+ ```
61
+
62
+ **2. Store Q-Values for Your Strategy:**
63
+ ```typescript
64
+ // Store Q-value for the validation strategy you used
65
+ mcp__agentic_qe__learning_store_qvalue({
66
+ agentId: "qe-api-contract-validator",
67
+ stateKey: "api-validation-state",
68
+ actionKey: "comprehensive-diff", // or "schema-only", "breaking-change-only"
69
+ qValue: 0.89, // Expected value of this approach (based on results)
70
+ metadata: {
71
+ validationStrategy: "comprehensive-diff",
72
+ successRate: "93%",
73
+ breakingChangeDetection: "high",
74
+ falsePositiveRate: "low",
75
+ versioningAccuracy: "100%"
76
+ }
77
+ })
78
+ ```
79
+
80
+ **3. Store Successful Patterns:**
81
+ ```typescript
82
+ // If you discovered a useful pattern, store it
83
+ mcp__agentic_qe__learning_store_pattern({
84
+ agentId: "qe-api-contract-validator",
85
+ pattern: "Comprehensive diff analysis detects 38% more backward compatibility issues than schema-only validation for REST APIs with complex nested objects",
86
+ confidence: 0.93,
87
+ domain: "api-contract-validation",
88
+ metadata: {
89
+ validationStrategy: "comprehensive-diff",
90
+ useCase: "rest-api-complex-nested",
91
+ detectionIncrease: "38%",
92
+ falsePositiveReduction: "20%",
93
+ consumerImpactAccuracy: "95%"
94
+ }
95
+ })
96
+ ```
97
+
98
+ ### Learning Query (Use at Task Start)
99
+
100
+ **Before starting API contract validation**, query for past learnings:
101
+
102
+ ```typescript
103
+ // Query for successful API validation experiences
104
+ const pastLearnings = await mcp__agentic_qe__learning_query({
105
+ agentId: "qe-api-contract-validator",
106
+ taskType: "api-contract-validation",
107
+ minReward: 0.8,
108
+ queryType: "all",
109
+ limit: 10
110
+ });
111
+
112
+ // Use the insights to optimize your current approach
113
+ if (pastLearnings.success && pastLearnings.data) {
114
+ const { experiences, qValues, patterns } = pastLearnings.data;
115
+
116
+ // Find best-performing validation strategy
117
+ const bestStrategy = qValues
118
+ .filter(qv => qv.state_key === "api-validation-state")
119
+ .sort((a, b) => b.q_value - a.q_value)[0];
120
+
121
+ console.log(`Using learned best strategy: ${bestStrategy.action_key} (Q-value: ${bestStrategy.q_value})`);
122
+
123
+ // Check for relevant patterns
124
+ const relevantPatterns = patterns
125
+ .filter(p => p.domain === "api-contract-validation")
126
+ .sort((a, b) => b.confidence * b.success_rate - a.confidence * a.success_rate);
127
+
128
+ if (relevantPatterns.length > 0) {
129
+ console.log(`Applying pattern: ${relevantPatterns[0].pattern}`);
130
+ }
131
+ }
132
+ ```
133
+
134
+ ### Success Criteria for Learning
135
+
136
+ **Reward Assessment (0-1 scale):**
137
+ - **1.0**: Perfect execution (All breaking changes detected, 0 false positives, 100% semver compliance, accurate consumer impact)
138
+ - **0.9**: Excellent (All breaking changes detected, <5% false positives, 100% semver compliance)
139
+ - **0.7**: Good (Most breaking changes detected, <10% false positives, high semver compliance)
140
+ - **0.5**: Acceptable (Major breaking changes detected, completed successfully)
141
+ - **<0.5**: Needs improvement (Missed breaking changes, high false positive rate, incomplete)
142
+
143
+ **When to Call Learning Tools:**
144
+ - ✅ **ALWAYS** after completing API contract validation
145
+ - ✅ **ALWAYS** after detecting breaking changes
146
+ - ✅ **ALWAYS** after analyzing consumer impact
147
+ - ✅ When discovering new validation patterns
148
+ - ✅ When achieving exceptional accuracy
149
+
32
150
  ## Core Capabilities
33
151
 
34
152
  ### 1. Schema Validation
@@ -232,35 +232,119 @@ This agent uses **AQE hooks (Agentic QE native hooks)** for coordination (zero e
232
232
 
233
233
  **Automatic Lifecycle Hooks:**
234
234
  ```typescript
235
- // Automatically called by BaseAgent
235
+ // Called automatically by BaseAgent
236
236
  protected async onPreTask(data: { assignment: TaskAssignment }): Promise<void> {
237
237
  // Load experiment queue and safety constraints
238
238
  const experiments = await this.memoryStore.retrieve('aqe/chaos/experiments/queue');
239
239
  const safetyRules = await this.memoryStore.retrieve('aqe/chaos/safety/constraints');
240
240
  const systemHealth = await this.memoryStore.retrieve('aqe/system/health');
241
241
 
242
+ // Verify environment for chaos testing
243
+ const verification = await this.hookManager.executePreTaskVerification({
244
+ task: 'chaos-experiment',
245
+ context: {
246
+ requiredVars: ['CHAOS_ENABLED', 'BLAST_RADIUS_MAX'],
247
+ minMemoryMB: 1024,
248
+ requiredKeys: ['aqe/chaos/safety/constraints', 'aqe/system/health']
249
+ }
250
+ });
251
+
252
+ // Emit chaos experiment starting event
253
+ this.eventBus.emit('chaos:experiment-starting', {
254
+ agentId: this.agentId,
255
+ experimentName: data.assignment.task.metadata.experimentName,
256
+ blastRadius: data.assignment.task.metadata.blastRadius
257
+ });
258
+
242
259
  this.logger.info('Chaos experiment initialized', {
243
260
  pendingExperiments: experiments?.length || 0,
244
- systemHealthy: systemHealth?.healthy || false
261
+ systemHealthy: systemHealth?.healthy || false,
262
+ verification: verification.passed
245
263
  });
246
264
  }
247
265
 
248
266
  protected async onPostTask(data: { assignment: TaskAssignment; result: any }): Promise<void> {
249
267
  // Store experiment results and resilience metrics
250
- await this.memoryStore.store('aqe/chaos/experiments/results', data.result.experimentOutcomes);
251
- await this.memoryStore.store('aqe/chaos/metrics/resilience', data.result.resilienceMetrics);
268
+ await this.memoryStore.store('aqe/chaos/experiments/results', data.result.experimentOutcomes, {
269
+ partition: 'agent_results',
270
+ ttl: 86400 // 24 hours
271
+ });
252
272
 
253
- // Emit chaos completion event
273
+ await this.memoryStore.store('aqe/chaos/metrics/resilience', data.result.resilienceMetrics, {
274
+ partition: 'metrics',
275
+ ttl: 604800 // 7 days
276
+ });
277
+
278
+ // Store chaos experiment metrics
279
+ await this.memoryStore.store('aqe/chaos/metrics/experiment', {
280
+ timestamp: Date.now(),
281
+ experimentName: data.result.experimentName,
282
+ passed: data.result.steadyStateValidated,
283
+ rollbackTriggered: data.result.rollbackTriggered,
284
+ recoveryTime: data.result.recoveryTime
285
+ }, {
286
+ partition: 'metrics',
287
+ ttl: 604800 // 7 days
288
+ });
289
+
290
+ // Emit completion event with chaos experiment results
254
291
  this.eventBus.emit('chaos:experiment-completed', {
292
+ agentId: this.agentId,
255
293
  experimentId: data.assignment.id,
256
294
  passed: data.result.steadyStateValidated,
257
295
  rollbackTriggered: data.result.rollbackTriggered
258
296
  });
297
+
298
+ // Validate chaos experiment results
299
+ const validation = await this.hookManager.executePostTaskValidation({
300
+ task: 'chaos-experiment',
301
+ result: {
302
+ output: data.result,
303
+ passed: data.result.steadyStateValidated,
304
+ metrics: {
305
+ recoveryTime: data.result.recoveryTime,
306
+ blastRadius: data.result.blastRadius
307
+ }
308
+ }
309
+ });
310
+
311
+ this.logger.info('Chaos experiment completed', {
312
+ experimentName: data.result.experimentName,
313
+ passed: data.result.steadyStateValidated,
314
+ validated: validation.passed
315
+ });
316
+ }
317
+
318
+ protected async onTaskError(data: { assignment: TaskAssignment; error: Error }): Promise<void> {
319
+ // Store error for fleet analysis
320
+ await this.memoryStore.store(`aqe/errors/${data.assignment.task.id}`, {
321
+ error: data.error.message,
322
+ timestamp: Date.now(),
323
+ agent: this.agentId,
324
+ taskType: 'chaos-engineering',
325
+ experimentName: data.assignment.task.metadata.experimentName
326
+ }, {
327
+ partition: 'errors',
328
+ ttl: 604800 // 7 days
329
+ });
330
+
331
+ // Emit error event for fleet coordination
332
+ this.eventBus.emit('chaos:experiment-error', {
333
+ agentId: this.agentId,
334
+ error: data.error.message,
335
+ taskId: data.assignment.task.id
336
+ });
337
+
338
+ this.logger.error('Chaos experiment failed', {
339
+ error: data.error.message,
340
+ stack: data.error.stack
341
+ });
259
342
  }
260
343
  ```
261
344
 
262
345
  **Advanced Verification (Optional):**
263
346
  ```typescript
347
+ // Use VerificationHookManager for comprehensive validation
264
348
  const hookManager = new VerificationHookManager(this.memoryStore);
265
349
  const verification = await hookManager.executePreTaskVerification({
266
350
  task: 'chaos-experiment',
@@ -272,6 +356,237 @@ const verification = await hookManager.executePreTaskVerification({
272
356
  });
273
357
  ```
274
358
 
359
+ ## Learning Protocol (Phase 6 - Option C Implementation)
360
+
361
+ **⚠️ MANDATORY**: When executed via Claude Code Task tool, you MUST call learning MCP tools to persist learning data.
362
+
363
+ ### Required Learning Actions (Call AFTER Task Completion)
364
+
365
+ **1. Store Learning Experience:**
366
+ ```typescript
367
+ // Call this MCP tool after completing your task
368
+ mcp__agentic_qe__learning_store_experience({
369
+ agentId: "qe-chaos-engineer",
370
+ taskType: "chaos-testing",
371
+ reward: 0.95, // Your assessment of task success (0-1 scale)
372
+ outcome: {
373
+ // Your actual results
374
+ experimentsRun: 5,
375
+ vulnerabilitiesFound: 3,
376
+ recoveryTime: 23,
377
+ executionTime: 8000
378
+ },
379
+ metadata: {
380
+ // Additional context
381
+ blastRadiusManagement: true,
382
+ faultTypes: ["network-partition", "pod-kill", "resource-exhaustion"],
383
+ controlledRollback: true
384
+ }
385
+ })
386
+ ```
387
+
388
+ **2. Store Q-Values for Your Strategy:**
389
+ ```typescript
390
+ // Store Q-value for the strategy you used
391
+ mcp__agentic_qe__learning_store_qvalue({
392
+ agentId: "qe-chaos-engineer",
393
+ stateKey: "chaos-testing-state",
394
+ actionKey: "controlled-fault-injection",
395
+ qValue: 0.85, // Expected value of this approach (based on results)
396
+ metadata: {
397
+ // Strategy details
398
+ injectionStrategy: "gradual-escalation",
399
+ safetyLevel: 0.95,
400
+ effectiveness: 0.90
401
+ }
402
+ })
403
+ ```
404
+
405
+ **3. Store Successful Patterns:**
406
+ ```typescript
407
+ // If you discovered a useful pattern, store it
408
+ mcp__agentic_qe__learning_store_pattern({
409
+ agentId: "qe-chaos-engineer",
410
+ pattern: "Gradual fault injection with blast radius monitoring prevents cascading failures while still discovering vulnerabilities",
411
+ confidence: 0.95, // How confident you are (0-1)
412
+ domain: "resilience",
413
+ metadata: {
414
+ // Pattern context
415
+ resiliencePatterns: ["circuit-breaker", "bulkhead", "timeout"],
416
+ predictionAccuracy: 0.92
417
+ }
418
+ })
419
+ ```
420
+
421
+ ### Learning Query (Use at Task Start)
422
+
423
+ **Before starting your task**, query for past learnings:
424
+
425
+ ```typescript
426
+ // Query for successful experiences
427
+ const pastLearnings = await mcp__agentic_qe__learning_query({
428
+ agentId: "qe-chaos-engineer",
429
+ taskType: "chaos-testing",
430
+ minReward: 0.8, // Only get successful experiences
431
+ queryType: "all",
432
+ limit: 10
433
+ });
434
+
435
+ // Use the insights to optimize your current approach
436
+ if (pastLearnings.success && pastLearnings.data) {
437
+ const { experiences, qValues, patterns } = pastLearnings.data;
438
+
439
+ // Find best-performing strategy
440
+ const bestStrategy = qValues
441
+ .filter(qv => qv.state_key === "chaos-testing-state")
442
+ .sort((a, b) => b.q_value - a.q_value)[0];
443
+
444
+ console.log(`Using learned best strategy: ${bestStrategy.action_key} (Q-value: ${bestStrategy.q_value})`);
445
+
446
+ // Check for relevant patterns
447
+ const relevantPatterns = patterns
448
+ .filter(p => p.domain === "resilience")
449
+ .sort((a, b) => b.confidence * b.success_rate - a.confidence * a.success_rate);
450
+
451
+ if (relevantPatterns.length > 0) {
452
+ console.log(`Applying pattern: ${relevantPatterns[0].pattern}`);
453
+ }
454
+ }
455
+ ```
456
+
457
+ ### Success Criteria for Learning
458
+
459
+ **Reward Assessment (0-1 scale):**
460
+ - **1.0**: Perfect execution (All vulnerabilities found, <1s recovery, safe blast radius)
461
+ - **0.9**: Excellent (95%+ vulnerabilities found, <5s recovery, controlled)
462
+ - **0.7**: Good (90%+ vulnerabilities found, <10s recovery, safe)
463
+ - **0.5**: Acceptable (Key vulnerabilities found, completed safely)
464
+ - **<0.5**: Needs improvement (Missed vulnerabilities, slow recovery, unsafe)
465
+
466
+ **When to Call Learning Tools:**
467
+ - ✅ **ALWAYS** after completing main task
468
+ - ✅ **ALWAYS** after detecting significant findings
469
+ - ✅ **ALWAYS** after generating recommendations
470
+ - ✅ When discovering new effective strategies
471
+ - ✅ When achieving exceptional performance metrics
472
+
473
+ ## Learning Integration (Phase 6)
474
+
475
+ This agent integrates with the **Learning Engine** to continuously improve chaos experiment design and failure prediction.
476
+
477
+ ### Learning Protocol
478
+
479
+ ```typescript
480
+ import { LearningEngine } from '@/learning/LearningEngine';
481
+
482
+ // Initialize learning engine
483
+ const learningEngine = new LearningEngine({
484
+ agentId: 'qe-chaos-engineer',
485
+ taskType: 'chaos-engineering',
486
+ domain: 'chaos-engineering',
487
+ learningRate: 0.01,
488
+ epsilon: 0.1,
489
+ discountFactor: 0.95
490
+ });
491
+
492
+ await learningEngine.initialize();
493
+
494
+ // Record chaos experiment episode
495
+ await learningEngine.recordEpisode({
496
+ state: {
497
+ experimentType: 'network-partition',
498
+ target: 'database-cluster',
499
+ systemHealth: 'healthy',
500
+ blastRadius: 'controlled'
501
+ },
502
+ action: {
503
+ faultType: 'network-partition',
504
+ duration: 120,
505
+ intensity: 'gradual',
506
+ autoRollback: true
507
+ },
508
+ reward: hypothesisValidated ? 1.0 : (systemRecovered ? 0.5 : -1.0),
509
+ nextState: {
510
+ steadyStateValidated: true,
511
+ recoveryTime: 23,
512
+ rollbackTriggered: false
513
+ }
514
+ });
515
+
516
+ // Learn from chaos experiment outcomes
517
+ await learningEngine.learn();
518
+
519
+ // Get learned experiment parameters
520
+ const prediction = await learningEngine.predict({
521
+ experimentType: 'network-partition',
522
+ target: 'database-cluster',
523
+ systemHealth: 'healthy'
524
+ });
525
+ ```
526
+
527
+ ### Reward Function
528
+
529
+ ```typescript
530
+ function calculateChaosReward(outcome: ChaosExperimentOutcome): number {
531
+ let reward = 0;
532
+
533
+ // Base reward for hypothesis validation
534
+ if (outcome.hypothesisValidated) {
535
+ reward += 1.0;
536
+ } else {
537
+ reward -= 0.5;
538
+ }
539
+
540
+ // Reward for controlled blast radius
541
+ if (outcome.blastRadiusContained) {
542
+ reward += 0.5;
543
+ } else {
544
+ reward -= 2.0; // Large penalty for uncontrolled chaos
545
+ }
546
+
547
+ // Reward for quick recovery
548
+ const recoveryBonus = Math.max(0, (60 - outcome.recoveryTime) / 60);
549
+ reward += recoveryBonus * 0.5;
550
+
551
+ // Penalty for needing rollback (but less than uncontrolled)
552
+ if (outcome.rollbackTriggered) {
553
+ reward -= 0.3;
554
+ }
555
+
556
+ // Bonus for discovering new failure modes
557
+ if (outcome.newFailureModeDiscovered) {
558
+ reward += 1.0;
559
+ }
560
+
561
+ // Penalty for zero learning (experiment too safe or trivial)
562
+ if (outcome.steadyStateNeverDisturbed) {
563
+ reward -= 0.2;
564
+ }
565
+
566
+ return reward;
567
+ }
568
+ ```
569
+
570
+ ### Learning Metrics
571
+
572
+ Track learning progress:
573
+ - **Hypothesis Validation Rate**: Percentage of experiments that validate hypotheses
574
+ - **Blast Radius Control**: Success rate of blast radius containment
575
+ - **Recovery Time**: Average and p95 recovery time
576
+ - **Rollback Rate**: Percentage of experiments requiring rollback
577
+ - **Failure Mode Discovery**: Rate of discovering new failure modes
578
+
579
+ ```bash
580
+ # View learning metrics
581
+ aqe learn status --agent qe-chaos-engineer
582
+
583
+ # Export learning history
584
+ aqe learn export --agent qe-chaos-engineer --format json
585
+
586
+ # Analyze resilience trends
587
+ aqe learn analyze --agent qe-chaos-engineer --metric resilience
588
+ ```
589
+
275
590
  ## Memory Keys
276
591
 
277
592
  ### Input Keys