agentic-qe 3.4.1 → 3.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.
Files changed (496) hide show
  1. package/.claude/skills/.validation/README.md +111 -0
  2. package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -0
  3. package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -0
  4. package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -0
  5. package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -0
  6. package/.claude/skills/.validation/schemas/skill-eval.schema.json +452 -0
  7. package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -0
  8. package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -0
  9. package/.claude/skills/.validation/schemas/skill-output.template.json +610 -0
  10. package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -0
  11. package/.claude/skills/.validation/templates/eval.template.yaml +366 -0
  12. package/.claude/skills/.validation/templates/schemas/output.json +145 -0
  13. package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -0
  14. package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -0
  15. package/.claude/skills/.validation/templates/validate.template.sh +1060 -0
  16. package/.claude/skills/.validation/templates/validator-lib.sh +1031 -0
  17. package/.claude/skills/.validation/test-data/invalid-output.json +5 -0
  18. package/.claude/skills/.validation/test-data/minimal-output.json +9 -0
  19. package/.claude/skills/.validation/test-data/sample-output.json +73 -0
  20. package/.claude/skills/TRUST-TIERS.md +158 -0
  21. package/.claude/skills/a11y-ally/SKILL.md +1664 -1658
  22. package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -0
  23. package/.claude/skills/a11y-ally/schemas/output.json +549 -0
  24. package/.claude/skills/a11y-ally/scripts/validate.sh +690 -0
  25. package/.claude/skills/accessibility-testing/SKILL.md +8 -1
  26. package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -0
  27. package/.claude/skills/accessibility-testing/schemas/output.json +776 -0
  28. package/.claude/skills/accessibility-testing/scripts/validate.sh +943 -0
  29. package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -0
  30. package/.claude/skills/agentic-quality-engineering/SKILL.md +4 -0
  31. package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -0
  32. package/.claude/skills/api-testing-patterns/SKILL.md +5 -0
  33. package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -0
  34. package/.claude/skills/api-testing-patterns/schemas/output.json +845 -0
  35. package/.claude/skills/api-testing-patterns/scripts/validate.sh +931 -0
  36. package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -0
  37. package/.claude/skills/aqe-v2-v3-migration/skill.md +4 -0
  38. package/.claude/skills/brutal-honesty-review/SKILL.md +5 -0
  39. package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -0
  40. package/.claude/skills/brutal-honesty-review/scripts/validate.sh +130 -0
  41. package/.claude/skills/bug-reporting-excellence/SKILL.md +5 -0
  42. package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -0
  43. package/.claude/skills/bug-reporting-excellence/scripts/validate.sh +108 -0
  44. package/.claude/skills/chaos-engineering-resilience/SKILL.md +5 -0
  45. package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
  46. package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -0
  47. package/.claude/skills/chaos-engineering-resilience/scripts/validate.sh +1107 -0
  48. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -0
  49. package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -0
  50. package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -0
  51. package/.claude/skills/cicd-pipeline-qe-orchestrator/scripts/validate.sh +310 -0
  52. package/.claude/skills/code-review-quality/SKILL.md +5 -0
  53. package/.claude/skills/code-review-quality/schemas/output.json +264 -0
  54. package/.claude/skills/code-review-quality/scripts/validate.sh +113 -0
  55. package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -0
  56. package/.claude/skills/compatibility-testing/schemas/output.json +551 -0
  57. package/.claude/skills/compatibility-testing/scripts/validate.sh +605 -0
  58. package/.claude/skills/compliance-testing/SKILL.md +7 -0
  59. package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -0
  60. package/.claude/skills/compliance-testing/schemas/output.json +845 -0
  61. package/.claude/skills/compliance-testing/scripts/validate.sh +888 -0
  62. package/.claude/skills/consultancy-practices/SKILL.md +4 -0
  63. package/.claude/skills/consultancy-practices/schemas/output.json +282 -0
  64. package/.claude/skills/context-driven-testing/SKILL.md +3 -0
  65. package/.claude/skills/contract-testing/SKILL.md +5 -0
  66. package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -0
  67. package/.claude/skills/contract-testing/schemas/output.json +638 -0
  68. package/.claude/skills/contract-testing/scripts/validate.sh +1033 -0
  69. package/.claude/skills/database-testing/SKILL.md +5 -0
  70. package/.claude/skills/database-testing/evals/database-testing.yaml +968 -0
  71. package/.claude/skills/database-testing/schemas/output.json +1446 -0
  72. package/.claude/skills/database-testing/scripts/validate.sh +1099 -0
  73. package/.claude/skills/exploratory-testing-advanced/SKILL.md +3 -0
  74. package/.claude/skills/holistic-testing-pact/SKILL.md +3 -0
  75. package/.claude/skills/localization-testing/SKILL.md +6 -0
  76. package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -0
  77. package/.claude/skills/localization-testing/schemas/output.json +325 -0
  78. package/.claude/skills/localization-testing/scripts/validate.sh +131 -0
  79. package/.claude/skills/mobile-testing/SKILL.md +6 -0
  80. package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -0
  81. package/.claude/skills/mobile-testing/schemas/output.json +318 -0
  82. package/.claude/skills/mobile-testing/scripts/validate.sh +127 -0
  83. package/.claude/skills/mutation-testing/SKILL.md +8 -1
  84. package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -0
  85. package/.claude/skills/mutation-testing/schemas/output.json +707 -0
  86. package/.claude/skills/mutation-testing/scripts/validate.sh +992 -0
  87. package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -0
  88. package/.claude/skills/n8n-expression-testing/SKILL.md +6 -0
  89. package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -0
  90. package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -0
  91. package/.claude/skills/n8n-expression-testing/scripts/validate.sh +162 -0
  92. package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +6 -0
  93. package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -0
  94. package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -0
  95. package/.claude/skills/n8n-integration-testing-patterns/scripts/validate.sh +104 -0
  96. package/.claude/skills/n8n-security-testing/SKILL.md +6 -0
  97. package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -0
  98. package/.claude/skills/n8n-security-testing/schemas/output.json +293 -0
  99. package/.claude/skills/n8n-security-testing/scripts/validate.sh +120 -0
  100. package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +6 -0
  101. package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -0
  102. package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -0
  103. package/.claude/skills/n8n-trigger-testing-strategies/scripts/validate.sh +121 -0
  104. package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +6 -0
  105. package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -0
  106. package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -0
  107. package/.claude/skills/n8n-workflow-testing-fundamentals/scripts/validate.sh +126 -0
  108. package/.claude/skills/performance-analysis/SKILL.md +6 -0
  109. package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -0
  110. package/.claude/skills/performance-analysis/schemas/output.json +588 -0
  111. package/.claude/skills/performance-analysis/scripts/validate.sh +63 -0
  112. package/.claude/skills/performance-testing/SKILL.md +5 -0
  113. package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -0
  114. package/.claude/skills/performance-testing/schemas/output.json +1184 -0
  115. package/.claude/skills/performance-testing/scripts/validate.sh +1090 -0
  116. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1759 -1753
  117. package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  118. package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -0
  119. package/.claude/skills/qcsd-ideation-swarm/scripts/validate.sh +56 -0
  120. package/.claude/skills/qe-chaos-resilience/SKILL.md +6 -0
  121. package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -0
  122. package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -0
  123. package/.claude/skills/qe-chaos-resilience/scripts/validate.sh +401 -0
  124. package/.claude/skills/qe-code-intelligence/SKILL.md +6 -0
  125. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -0
  126. package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -0
  127. package/.claude/skills/qe-code-intelligence/scripts/validate.sh +408 -0
  128. package/.claude/skills/qe-contract-testing/SKILL.md +6 -0
  129. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -0
  130. package/.claude/skills/qe-contract-testing/schemas/output.json +295 -0
  131. package/.claude/skills/qe-contract-testing/scripts/validate.sh +421 -0
  132. package/.claude/skills/qe-coverage-analysis/SKILL.md +6 -0
  133. package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
  134. package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -0
  135. package/.claude/skills/qe-coverage-analysis/scripts/validate.sh +453 -0
  136. package/.claude/skills/qe-defect-intelligence/SKILL.md +6 -0
  137. package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -0
  138. package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -0
  139. package/.claude/skills/qe-defect-intelligence/scripts/validate.sh +466 -0
  140. package/.claude/skills/qe-iterative-loop/SKILL.md +445 -440
  141. package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -0
  142. package/.claude/skills/qe-iterative-loop/scripts/validate.sh +474 -0
  143. package/.claude/skills/qe-learning-optimization/SKILL.md +6 -0
  144. package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -0
  145. package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -0
  146. package/.claude/skills/qe-learning-optimization/scripts/validate.sh +56 -0
  147. package/.claude/skills/qe-quality-assessment/SKILL.md +6 -0
  148. package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -0
  149. package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -0
  150. package/.claude/skills/qe-quality-assessment/scripts/validate.sh +352 -0
  151. package/.claude/skills/qe-requirements-validation/SKILL.md +6 -0
  152. package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
  153. package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -0
  154. package/.claude/skills/qe-requirements-validation/scripts/validate.sh +275 -0
  155. package/.claude/skills/qe-security-compliance/SKILL.md +6 -0
  156. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -0
  157. package/.claude/skills/qe-security-compliance/schemas/output.json +498 -0
  158. package/.claude/skills/qe-security-compliance/scripts/validate.sh +305 -0
  159. package/.claude/skills/qe-test-execution/SKILL.md +6 -0
  160. package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -0
  161. package/.claude/skills/qe-test-execution/schemas/output.json +529 -0
  162. package/.claude/skills/qe-test-execution/scripts/validate.sh +323 -0
  163. package/.claude/skills/qe-test-generation/SKILL.md +6 -0
  164. package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -0
  165. package/.claude/skills/qe-test-generation/schemas/output.json +439 -0
  166. package/.claude/skills/qe-test-generation/scripts/validate.sh +56 -0
  167. package/.claude/skills/qe-visual-accessibility/SKILL.md +6 -0
  168. package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -0
  169. package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -0
  170. package/.claude/skills/qe-visual-accessibility/scripts/validate.sh +56 -0
  171. package/.claude/skills/quality-metrics/SKILL.md +6 -0
  172. package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -0
  173. package/.claude/skills/quality-metrics/schemas/output.json +403 -0
  174. package/.claude/skills/quality-metrics/scripts/validate.sh +434 -0
  175. package/.claude/skills/refactoring-patterns/SKILL.md +5 -0
  176. package/.claude/skills/refactoring-patterns/schemas/output.json +475 -0
  177. package/.claude/skills/refactoring-patterns/scripts/validate.sh +241 -0
  178. package/.claude/skills/regression-testing/SKILL.md +6 -0
  179. package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -0
  180. package/.claude/skills/regression-testing/schemas/output.json +311 -0
  181. package/.claude/skills/regression-testing/scripts/validate.sh +130 -0
  182. package/.claude/skills/risk-based-testing/SKILL.md +6 -0
  183. package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -0
  184. package/.claude/skills/risk-based-testing/schemas/output.json +480 -0
  185. package/.claude/skills/risk-based-testing/scripts/validate.sh +56 -0
  186. package/.claude/skills/security-testing/SKILL.md +5 -0
  187. package/.claude/skills/security-testing/evals/security-testing.yaml +789 -0
  188. package/.claude/skills/security-testing/schemas/output.json +879 -0
  189. package/.claude/skills/security-testing/scripts/validate.sh +967 -0
  190. package/.claude/skills/security-visual-testing/SKILL.md +223 -217
  191. package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -0
  192. package/.claude/skills/security-visual-testing/schemas/output.json +486 -0
  193. package/.claude/skills/security-visual-testing/scripts/validate.sh +748 -0
  194. package/.claude/skills/sherlock-review/SKILL.md +5 -0
  195. package/.claude/skills/sherlock-review/schemas/output.json +297 -0
  196. package/.claude/skills/sherlock-review/scripts/validate.sh +115 -0
  197. package/.claude/skills/shift-left-testing/SKILL.md +6 -0
  198. package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -0
  199. package/.claude/skills/shift-left-testing/schemas/output.json +459 -0
  200. package/.claude/skills/shift-left-testing/scripts/validate.sh +56 -0
  201. package/.claude/skills/shift-right-testing/SKILL.md +6 -0
  202. package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -0
  203. package/.claude/skills/shift-right-testing/schemas/output.json +418 -0
  204. package/.claude/skills/shift-right-testing/scripts/validate.sh +56 -0
  205. package/.claude/skills/six-thinking-hats/SKILL.md +3 -0
  206. package/.claude/skills/tdd-london-chicago/SKILL.md +5 -0
  207. package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -0
  208. package/.claude/skills/tdd-london-chicago/scripts/validate.sh +214 -0
  209. package/.claude/skills/technical-writing/SKILL.md +4 -0
  210. package/.claude/skills/technical-writing/schemas/output.json +268 -0
  211. package/.claude/skills/test-automation-strategy/SKILL.md +6 -0
  212. package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -0
  213. package/.claude/skills/test-automation-strategy/schemas/output.json +444 -0
  214. package/.claude/skills/test-automation-strategy/scripts/validate.sh +195 -0
  215. package/.claude/skills/test-data-management/SKILL.md +6 -0
  216. package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -0
  217. package/.claude/skills/test-data-management/schemas/output.json +284 -0
  218. package/.claude/skills/test-data-management/scripts/validate.sh +137 -0
  219. package/.claude/skills/test-design-techniques/SKILL.md +6 -0
  220. package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -0
  221. package/.claude/skills/test-design-techniques/schemas/output.json +295 -0
  222. package/.claude/skills/test-design-techniques/scripts/validate.sh +91 -0
  223. package/.claude/skills/test-environment-management/SKILL.md +4 -0
  224. package/.claude/skills/test-environment-management/schemas/output.json +310 -0
  225. package/.claude/skills/test-reporting-analytics/SKILL.md +6 -0
  226. package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -0
  227. package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -0
  228. package/.claude/skills/test-reporting-analytics/scripts/validate.sh +77 -0
  229. package/.claude/skills/testability-scoring/SKILL.md +5 -0
  230. package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
  231. package/.claude/skills/testability-scoring/schemas/output.json +606 -0
  232. package/.claude/skills/testability-scoring/scripts/validate.sh +891 -0
  233. package/.claude/skills/trust-tier-manifest.json +2333 -0
  234. package/.claude/skills/verification-quality/SKILL.md +6 -0
  235. package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -0
  236. package/.claude/skills/verification-quality/schemas/output.json +432 -0
  237. package/.claude/skills/verification-quality/scripts/validate.sh +77 -0
  238. package/.claude/skills/visual-testing-advanced/SKILL.md +6 -0
  239. package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -0
  240. package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -0
  241. package/.claude/skills/visual-testing-advanced/scripts/validate.sh +77 -0
  242. package/.claude/skills/xp-practices/SKILL.md +3 -0
  243. package/README.md +39 -2
  244. package/package.json +4 -1
  245. package/scripts/run-skill-eval.ts +1097 -0
  246. package/scripts/test-schema-validation.js +301 -0
  247. package/scripts/update-skill-manifest.ts +751 -0
  248. package/scripts/validate-skill-frontmatter.js +141 -0
  249. package/v3/CHANGELOG.md +21 -0
  250. package/v3/README.md +43 -3
  251. package/v3/assets/agents/v3/qe-test-idea-rewriter.md +375 -375
  252. package/v3/assets/skills/.validation/README.md +111 -0
  253. package/v3/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -0
  254. package/v3/assets/skills/.validation/examples/performance-testing-output.example.json +252 -0
  255. package/v3/assets/skills/.validation/examples/security-testing-output.example.json +413 -0
  256. package/v3/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -0
  257. package/v3/assets/skills/.validation/schemas/skill-eval.schema.json +452 -0
  258. package/v3/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -0
  259. package/v3/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -0
  260. package/v3/assets/skills/.validation/schemas/skill-output.template.json +610 -0
  261. package/v3/assets/skills/.validation/skill-validation-mcp-integration.md +250 -0
  262. package/v3/assets/skills/.validation/templates/eval.template.yaml +366 -0
  263. package/v3/assets/skills/.validation/templates/schemas/output.json +145 -0
  264. package/v3/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -0
  265. package/v3/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -0
  266. package/v3/assets/skills/.validation/templates/validate.template.sh +1060 -0
  267. package/v3/assets/skills/.validation/templates/validator-lib.sh +1031 -0
  268. package/v3/assets/skills/.validation/test-data/invalid-output.json +5 -0
  269. package/v3/assets/skills/.validation/test-data/minimal-output.json +9 -0
  270. package/v3/assets/skills/.validation/test-data/sample-output.json +73 -0
  271. package/v3/assets/skills/accessibility-testing/SKILL.md +8 -1
  272. package/v3/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -0
  273. package/v3/assets/skills/accessibility-testing/schemas/output.json +776 -0
  274. package/v3/assets/skills/accessibility-testing/scripts/validate.sh +943 -0
  275. package/v3/assets/skills/accessibility-testing/test-data/sample-output.json +191 -0
  276. package/v3/assets/skills/agentic-quality-engineering/SKILL.md +4 -0
  277. package/v3/assets/skills/agentic-quality-engineering/schemas/output.json +577 -0
  278. package/v3/assets/skills/api-testing-patterns/SKILL.md +5 -0
  279. package/v3/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -0
  280. package/v3/assets/skills/api-testing-patterns/schemas/output.json +845 -0
  281. package/v3/assets/skills/api-testing-patterns/scripts/validate.sh +931 -0
  282. package/v3/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -0
  283. package/v3/assets/skills/aqe-v2-v3-migration/skill.md +20 -16
  284. package/v3/assets/skills/bug-reporting-excellence/SKILL.md +5 -0
  285. package/v3/assets/skills/bug-reporting-excellence/schemas/output.json +288 -0
  286. package/v3/assets/skills/bug-reporting-excellence/scripts/validate.sh +108 -0
  287. package/v3/assets/skills/chaos-engineering-resilience/SKILL.md +5 -0
  288. package/v3/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
  289. package/v3/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -0
  290. package/v3/assets/skills/chaos-engineering-resilience/scripts/validate.sh +1107 -0
  291. package/v3/assets/skills/code-review-quality/SKILL.md +5 -0
  292. package/v3/assets/skills/code-review-quality/schemas/output.json +264 -0
  293. package/v3/assets/skills/code-review-quality/scripts/validate.sh +113 -0
  294. package/v3/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -0
  295. package/v3/assets/skills/compatibility-testing/schemas/output.json +551 -0
  296. package/v3/assets/skills/compatibility-testing/scripts/validate.sh +605 -0
  297. package/v3/assets/skills/compliance-testing/SKILL.md +7 -0
  298. package/v3/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -0
  299. package/v3/assets/skills/compliance-testing/schemas/output.json +845 -0
  300. package/v3/assets/skills/compliance-testing/scripts/validate.sh +888 -0
  301. package/v3/assets/skills/consultancy-practices/SKILL.md +4 -0
  302. package/v3/assets/skills/consultancy-practices/schemas/output.json +282 -0
  303. package/v3/assets/skills/context-driven-testing/SKILL.md +3 -0
  304. package/v3/assets/skills/contract-testing/SKILL.md +5 -0
  305. package/v3/assets/skills/contract-testing/evals/contract-testing.yaml +748 -0
  306. package/v3/assets/skills/contract-testing/schemas/output.json +638 -0
  307. package/v3/assets/skills/contract-testing/scripts/validate.sh +1033 -0
  308. package/v3/assets/skills/database-testing/SKILL.md +5 -0
  309. package/v3/assets/skills/database-testing/evals/database-testing.yaml +968 -0
  310. package/v3/assets/skills/database-testing/schemas/output.json +1446 -0
  311. package/v3/assets/skills/database-testing/scripts/validate.sh +1099 -0
  312. package/v3/assets/skills/exploratory-testing-advanced/SKILL.md +3 -0
  313. package/v3/assets/skills/holistic-testing-pact/SKILL.md +3 -0
  314. package/v3/assets/skills/localization-testing/SKILL.md +6 -0
  315. package/v3/assets/skills/localization-testing/evals/localization-testing.yaml +544 -0
  316. package/v3/assets/skills/localization-testing/schemas/output.json +325 -0
  317. package/v3/assets/skills/localization-testing/scripts/validate.sh +131 -0
  318. package/v3/assets/skills/mobile-testing/SKILL.md +6 -0
  319. package/v3/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -0
  320. package/v3/assets/skills/mobile-testing/schemas/output.json +318 -0
  321. package/v3/assets/skills/mobile-testing/scripts/validate.sh +127 -0
  322. package/v3/assets/skills/mutation-testing/SKILL.md +8 -1
  323. package/v3/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -0
  324. package/v3/assets/skills/mutation-testing/schemas/output.json +707 -0
  325. package/v3/assets/skills/mutation-testing/scripts/validate.sh +992 -0
  326. package/v3/assets/skills/mutation-testing/test-data/sample-output.json +295 -0
  327. package/v3/assets/skills/n8n-expression-testing/scripts/validate.sh +162 -0
  328. package/v3/assets/skills/n8n-integration-testing-patterns/scripts/validate.sh +104 -0
  329. package/v3/assets/skills/n8n-security-testing/scripts/validate.sh +120 -0
  330. package/v3/assets/skills/n8n-trigger-testing-strategies/scripts/validate.sh +121 -0
  331. package/v3/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate.sh +126 -0
  332. package/v3/assets/skills/performance-testing/SKILL.md +5 -0
  333. package/v3/assets/skills/performance-testing/evals/performance-testing.yaml +772 -0
  334. package/v3/assets/skills/performance-testing/schemas/output.json +1184 -0
  335. package/v3/assets/skills/performance-testing/scripts/validate.sh +1090 -0
  336. package/v3/assets/skills/qe-chaos-resilience/SKILL.md +6 -0
  337. package/v3/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -0
  338. package/v3/assets/skills/qe-chaos-resilience/schemas/output.json +314 -0
  339. package/v3/assets/skills/qe-chaos-resilience/scripts/validate.sh +401 -0
  340. package/v3/assets/skills/qe-code-intelligence/SKILL.md +6 -0
  341. package/v3/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -0
  342. package/v3/assets/skills/qe-code-intelligence/schemas/output.json +315 -0
  343. package/v3/assets/skills/qe-code-intelligence/scripts/validate.sh +408 -0
  344. package/v3/assets/skills/qe-contract-testing/SKILL.md +6 -0
  345. package/v3/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -0
  346. package/v3/assets/skills/qe-contract-testing/schemas/output.json +295 -0
  347. package/v3/assets/skills/qe-contract-testing/scripts/validate.sh +421 -0
  348. package/v3/assets/skills/qe-coverage-analysis/SKILL.md +6 -0
  349. package/v3/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
  350. package/v3/assets/skills/qe-coverage-analysis/schemas/output.json +286 -0
  351. package/v3/assets/skills/qe-coverage-analysis/scripts/validate.sh +453 -0
  352. package/v3/assets/skills/qe-defect-intelligence/SKILL.md +6 -0
  353. package/v3/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -0
  354. package/v3/assets/skills/qe-defect-intelligence/schemas/output.json +283 -0
  355. package/v3/assets/skills/qe-defect-intelligence/scripts/validate.sh +466 -0
  356. package/v3/assets/skills/qe-iterative-loop/SKILL.md +445 -443
  357. package/v3/assets/skills/qe-iterative-loop/schemas/output.json +264 -0
  358. package/v3/assets/skills/qe-iterative-loop/scripts/validate.sh +474 -0
  359. package/v3/assets/skills/qe-learning-optimization/SKILL.md +6 -0
  360. package/v3/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -0
  361. package/v3/assets/skills/qe-learning-optimization/schemas/output.json +288 -0
  362. package/v3/assets/skills/qe-learning-optimization/scripts/validate.sh +56 -0
  363. package/v3/assets/skills/qe-quality-assessment/SKILL.md +6 -0
  364. package/v3/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -0
  365. package/v3/assets/skills/qe-quality-assessment/schemas/output.json +550 -0
  366. package/v3/assets/skills/qe-quality-assessment/scripts/validate.sh +352 -0
  367. package/v3/assets/skills/qe-requirements-validation/SKILL.md +6 -0
  368. package/v3/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
  369. package/v3/assets/skills/qe-requirements-validation/schemas/output.json +587 -0
  370. package/v3/assets/skills/qe-requirements-validation/scripts/validate.sh +275 -0
  371. package/v3/assets/skills/qe-security-compliance/SKILL.md +6 -0
  372. package/v3/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -0
  373. package/v3/assets/skills/qe-security-compliance/schemas/output.json +498 -0
  374. package/v3/assets/skills/qe-security-compliance/scripts/validate.sh +305 -0
  375. package/v3/assets/skills/qe-test-execution/SKILL.md +6 -0
  376. package/v3/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -0
  377. package/v3/assets/skills/qe-test-execution/schemas/output.json +529 -0
  378. package/v3/assets/skills/qe-test-execution/scripts/validate.sh +323 -0
  379. package/v3/assets/skills/qe-test-generation/SKILL.md +6 -0
  380. package/v3/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -0
  381. package/v3/assets/skills/qe-test-generation/schemas/output.json +439 -0
  382. package/v3/assets/skills/qe-test-generation/scripts/validate.sh +56 -0
  383. package/v3/assets/skills/qe-visual-accessibility/SKILL.md +6 -0
  384. package/v3/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -0
  385. package/v3/assets/skills/qe-visual-accessibility/schemas/output.json +491 -0
  386. package/v3/assets/skills/qe-visual-accessibility/scripts/validate.sh +56 -0
  387. package/v3/assets/skills/quality-metrics/SKILL.md +6 -0
  388. package/v3/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -0
  389. package/v3/assets/skills/quality-metrics/schemas/output.json +403 -0
  390. package/v3/assets/skills/quality-metrics/scripts/validate.sh +434 -0
  391. package/v3/assets/skills/refactoring-patterns/SKILL.md +5 -0
  392. package/v3/assets/skills/refactoring-patterns/schemas/output.json +475 -0
  393. package/v3/assets/skills/refactoring-patterns/scripts/validate.sh +241 -0
  394. package/v3/assets/skills/regression-testing/SKILL.md +6 -0
  395. package/v3/assets/skills/regression-testing/evals/regression-testing.yaml +504 -0
  396. package/v3/assets/skills/regression-testing/schemas/output.json +311 -0
  397. package/v3/assets/skills/regression-testing/scripts/validate.sh +130 -0
  398. package/v3/assets/skills/risk-based-testing/SKILL.md +6 -0
  399. package/v3/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -0
  400. package/v3/assets/skills/risk-based-testing/schemas/output.json +480 -0
  401. package/v3/assets/skills/risk-based-testing/scripts/validate.sh +56 -0
  402. package/v3/assets/skills/security-testing/SKILL.md +5 -0
  403. package/v3/assets/skills/security-testing/evals/security-testing.yaml +789 -0
  404. package/v3/assets/skills/security-testing/schemas/output.json +879 -0
  405. package/v3/assets/skills/security-testing/scripts/validate.sh +967 -0
  406. package/v3/assets/skills/shift-left-testing/SKILL.md +6 -0
  407. package/v3/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -0
  408. package/v3/assets/skills/shift-left-testing/schemas/output.json +459 -0
  409. package/v3/assets/skills/shift-left-testing/scripts/validate.sh +56 -0
  410. package/v3/assets/skills/shift-right-testing/SKILL.md +6 -0
  411. package/v3/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -0
  412. package/v3/assets/skills/shift-right-testing/schemas/output.json +418 -0
  413. package/v3/assets/skills/shift-right-testing/scripts/validate.sh +56 -0
  414. package/v3/assets/skills/six-thinking-hats/SKILL.md +3 -0
  415. package/v3/assets/skills/tdd-london-chicago/SKILL.md +5 -0
  416. package/v3/assets/skills/tdd-london-chicago/schemas/output.json +444 -0
  417. package/v3/assets/skills/tdd-london-chicago/scripts/validate.sh +214 -0
  418. package/v3/assets/skills/technical-writing/SKILL.md +4 -0
  419. package/v3/assets/skills/technical-writing/schemas/output.json +268 -0
  420. package/v3/assets/skills/test-automation-strategy/SKILL.md +6 -0
  421. package/v3/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -0
  422. package/v3/assets/skills/test-automation-strategy/schemas/output.json +444 -0
  423. package/v3/assets/skills/test-automation-strategy/scripts/validate.sh +195 -0
  424. package/v3/assets/skills/test-data-management/SKILL.md +6 -0
  425. package/v3/assets/skills/test-data-management/evals/test-data-management.yaml +504 -0
  426. package/v3/assets/skills/test-data-management/schemas/output.json +284 -0
  427. package/v3/assets/skills/test-data-management/scripts/validate.sh +137 -0
  428. package/v3/assets/skills/test-design-techniques/SKILL.md +6 -0
  429. package/v3/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -0
  430. package/v3/assets/skills/test-design-techniques/schemas/output.json +295 -0
  431. package/v3/assets/skills/test-design-techniques/scripts/validate.sh +91 -0
  432. package/v3/assets/skills/test-environment-management/SKILL.md +4 -0
  433. package/v3/assets/skills/test-environment-management/schemas/output.json +310 -0
  434. package/v3/assets/skills/test-reporting-analytics/SKILL.md +6 -0
  435. package/v3/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -0
  436. package/v3/assets/skills/test-reporting-analytics/schemas/output.json +329 -0
  437. package/v3/assets/skills/test-reporting-analytics/scripts/validate.sh +77 -0
  438. package/v3/assets/skills/verification-quality/SKILL.md +6 -0
  439. package/v3/assets/skills/verification-quality/evals/verification-quality.yaml +150 -0
  440. package/v3/assets/skills/verification-quality/schemas/output.json +432 -0
  441. package/v3/assets/skills/verification-quality/scripts/validate.sh +77 -0
  442. package/v3/assets/skills/visual-testing-advanced/SKILL.md +6 -0
  443. package/v3/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -0
  444. package/v3/assets/skills/visual-testing-advanced/schemas/output.json +294 -0
  445. package/v3/assets/skills/visual-testing-advanced/scripts/validate.sh +77 -0
  446. package/v3/assets/skills/xp-practices/SKILL.md +3 -0
  447. package/v3/assets/templates/validation-report.md.hbs +139 -0
  448. package/v3/assets/templates/validation-summary.json +56 -0
  449. package/v3/dist/cli/bundle.js +7368 -3418
  450. package/v3/dist/cli/commands/eval.d.ts +18 -0
  451. package/v3/dist/cli/commands/eval.d.ts.map +1 -0
  452. package/v3/dist/cli/commands/eval.js +505 -0
  453. package/v3/dist/cli/commands/eval.js.map +1 -0
  454. package/v3/dist/cli/commands/validate-swarm.d.ts +16 -0
  455. package/v3/dist/cli/commands/validate-swarm.d.ts.map +1 -0
  456. package/v3/dist/cli/commands/validate-swarm.js +251 -0
  457. package/v3/dist/cli/commands/validate-swarm.js.map +1 -0
  458. package/v3/dist/cli/commands/validate.d.ts +14 -0
  459. package/v3/dist/cli/commands/validate.d.ts.map +1 -0
  460. package/v3/dist/cli/commands/validate.js +408 -0
  461. package/v3/dist/cli/commands/validate.js.map +1 -0
  462. package/v3/dist/cli/index.js +6 -0
  463. package/v3/dist/cli/index.js.map +1 -1
  464. package/v3/dist/index.d.ts +2 -0
  465. package/v3/dist/index.d.ts.map +1 -1
  466. package/v3/dist/index.js +10 -0
  467. package/v3/dist/index.js.map +1 -1
  468. package/v3/dist/init/skills-installer.d.ts +6 -0
  469. package/v3/dist/init/skills-installer.d.ts.map +1 -1
  470. package/v3/dist/init/skills-installer.js +48 -0
  471. package/v3/dist/init/skills-installer.js.map +1 -1
  472. package/v3/dist/learning/index.d.ts +2 -0
  473. package/v3/dist/learning/index.d.ts.map +1 -1
  474. package/v3/dist/learning/index.js +4 -0
  475. package/v3/dist/learning/index.js.map +1 -1
  476. package/v3/dist/learning/skill-validation-learner.d.ts +264 -0
  477. package/v3/dist/learning/skill-validation-learner.d.ts.map +1 -0
  478. package/v3/dist/learning/skill-validation-learner.js +515 -0
  479. package/v3/dist/learning/skill-validation-learner.js.map +1 -0
  480. package/v3/dist/validation/index.d.ts +19 -0
  481. package/v3/dist/validation/index.d.ts.map +1 -0
  482. package/v3/dist/validation/index.js +31 -0
  483. package/v3/dist/validation/index.js.map +1 -0
  484. package/v3/dist/validation/parallel-eval-runner.d.ts +307 -0
  485. package/v3/dist/validation/parallel-eval-runner.d.ts.map +1 -0
  486. package/v3/dist/validation/parallel-eval-runner.js +566 -0
  487. package/v3/dist/validation/parallel-eval-runner.js.map +1 -0
  488. package/v3/dist/validation/swarm-skill-validator.d.ts +282 -0
  489. package/v3/dist/validation/swarm-skill-validator.d.ts.map +1 -0
  490. package/v3/dist/validation/swarm-skill-validator.js +460 -0
  491. package/v3/dist/validation/swarm-skill-validator.js.map +1 -0
  492. package/v3/dist/validation/validation-result-aggregator.d.ts +232 -0
  493. package/v3/dist/validation/validation-result-aggregator.d.ts.map +1 -0
  494. package/v3/dist/validation/validation-result-aggregator.js +630 -0
  495. package/v3/dist/validation/validation-result-aggregator.js.map +1 -0
  496. package/v3/package.json +1 -1
@@ -0,0 +1,630 @@
1
+ /**
2
+ * Validation Result Aggregator
3
+ * ADR-056 Phase 5: Aggregates validation results from parallel runs
4
+ *
5
+ * This module provides:
6
+ * - Aggregation of multiple skill validation results
7
+ * - Cross-model anomaly detection
8
+ * - Regression detection against historical data
9
+ * - Unified markdown and JSON report generation
10
+ * - Trust tier manifest auto-updates
11
+ *
12
+ * @module validation/validation-result-aggregator
13
+ * @see docs/adrs/ADR-056-trust-but-verify.md
14
+ */
15
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
16
+ // ============================================================================
17
+ // Default Configuration
18
+ // ============================================================================
19
+ const DEFAULT_CONFIG = {
20
+ varianceThreshold: 0.04, // ~20% standard deviation
21
+ regressionThreshold: 0.1, // 10% drop triggers regression
22
+ minSamples: 3,
23
+ autoUpdateManifest: false,
24
+ };
25
+ // ============================================================================
26
+ // Validation Result Aggregator
27
+ // ============================================================================
28
+ /**
29
+ * Aggregates validation results from parallel runs, detects anomalies,
30
+ * and generates unified reports.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const aggregator = new ValidationResultAggregator(learner, manifestPath);
35
+ *
36
+ * // Aggregate results from multiple parallel runs
37
+ * const report = await aggregator.aggregateResults([
38
+ * { runId: 'run-1', model: 'sonnet', outcomes: [...], ... },
39
+ * { runId: 'run-2', model: 'opus', outcomes: [...], ... },
40
+ * ]);
41
+ *
42
+ * // Generate markdown report
43
+ * const markdown = aggregator.generateMarkdownReport(report);
44
+ *
45
+ * // Update manifest with new pass rates
46
+ * await aggregator.updateManifest(report);
47
+ * ```
48
+ */
49
+ export class ValidationResultAggregator {
50
+ learner;
51
+ manifestPath;
52
+ config;
53
+ constructor(learner, manifestPath, config = {}) {
54
+ this.learner = learner;
55
+ this.manifestPath = manifestPath;
56
+ this.config = { ...DEFAULT_CONFIG, ...config };
57
+ }
58
+ /**
59
+ * Aggregate results from parallel validation runs
60
+ */
61
+ async aggregateResults(results) {
62
+ const runId = `agg-${Date.now()}`;
63
+ const timestamp = new Date();
64
+ // Build skill results map
65
+ const skillResults = this.buildSkillResultsMap(results);
66
+ // Calculate summary
67
+ const summary = this.calculateSummary(skillResults, results);
68
+ // Perform cross-model analysis
69
+ const crossModelAnalysis = await this.detectCrossModelAnomalies(results);
70
+ // Detect regressions
71
+ const regressions = await this.detectRegressions(results, this.config.regressionThreshold);
72
+ // Generate recommendations
73
+ const recommendations = this.generateRecommendations(skillResults, crossModelAnalysis, regressions);
74
+ const report = {
75
+ timestamp,
76
+ runId,
77
+ summary,
78
+ skillResults,
79
+ crossModelAnalysis,
80
+ regressions,
81
+ recommendations,
82
+ metadata: {
83
+ version: '1.0.0',
84
+ environment: results[0]?.metadata?.environment,
85
+ generatedBy: 'ValidationResultAggregator',
86
+ inputs: {
87
+ runIds: results.map(r => r.runId),
88
+ models: [...new Set(results.map(r => r.model))],
89
+ },
90
+ },
91
+ };
92
+ // Auto-update manifest if configured
93
+ if (this.config.autoUpdateManifest) {
94
+ await this.updateManifest(report);
95
+ }
96
+ return report;
97
+ }
98
+ /**
99
+ * Build skill results map from multiple validation runs
100
+ */
101
+ buildSkillResultsMap(results) {
102
+ const skillMap = new Map();
103
+ for (const result of results) {
104
+ for (const outcome of result.outcomes) {
105
+ const skillName = outcome.skillName;
106
+ if (!skillMap.has(skillName)) {
107
+ skillMap.set(skillName, {
108
+ skill: skillName,
109
+ trustTier: outcome.trustTier,
110
+ passRateByModel: new Map(),
111
+ avgPassRate: 0,
112
+ schemaValid: true,
113
+ validatorPassed: true,
114
+ evalPassed: true,
115
+ issues: [],
116
+ executionTimeMs: 0,
117
+ testCount: 0,
118
+ passedTests: 0,
119
+ failedTests: 0,
120
+ });
121
+ }
122
+ const summary = skillMap.get(skillName);
123
+ // Update model-specific pass rate
124
+ const passRate = outcome.testCaseResults.filter(t => t.passed).length /
125
+ (outcome.testCaseResults.length || 1);
126
+ summary.passRateByModel.set(result.model, passRate);
127
+ // Update test counts
128
+ summary.testCount += outcome.testCaseResults.length;
129
+ summary.passedTests += outcome.testCaseResults.filter(t => t.passed).length;
130
+ summary.failedTests += outcome.testCaseResults.filter(t => !t.passed).length;
131
+ // Update execution time
132
+ summary.executionTimeMs += outcome.metadata?.duration || 0;
133
+ // Track validation level results
134
+ if (outcome.validationLevel === 'schema' && !outcome.passed) {
135
+ summary.schemaValid = false;
136
+ }
137
+ if (outcome.validationLevel === 'validator' && !outcome.passed) {
138
+ summary.validatorPassed = false;
139
+ }
140
+ if (outcome.validationLevel === 'eval' && !outcome.passed) {
141
+ summary.evalPassed = false;
142
+ }
143
+ // Collect issues from failed tests
144
+ for (const testCase of outcome.testCaseResults) {
145
+ if (!testCase.passed && testCase.error) {
146
+ summary.issues.push({
147
+ skill: skillName,
148
+ model: result.model,
149
+ severity: testCase.priority === 'critical' ? 'critical' :
150
+ testCase.priority === 'high' ? 'high' :
151
+ testCase.priority === 'medium' ? 'medium' : 'low',
152
+ type: this.categorizeIssueType(outcome.validationLevel, testCase.error),
153
+ message: testCase.error,
154
+ testId: testCase.testId,
155
+ });
156
+ }
157
+ }
158
+ }
159
+ }
160
+ // Calculate average pass rates
161
+ for (const summary of skillMap.values()) {
162
+ const passRates = Array.from(summary.passRateByModel.values());
163
+ summary.avgPassRate = passRates.length > 0
164
+ ? passRates.reduce((a, b) => a + b, 0) / passRates.length
165
+ : 0;
166
+ }
167
+ return skillMap;
168
+ }
169
+ /**
170
+ * Categorize issue type based on validation level and error message
171
+ */
172
+ categorizeIssueType(level, error) {
173
+ if (error.toLowerCase().includes('timeout'))
174
+ return 'timeout';
175
+ if (level === 'schema')
176
+ return 'schema_failure';
177
+ if (level === 'validator')
178
+ return 'validator_failure';
179
+ if (level === 'eval')
180
+ return 'eval_failure';
181
+ return 'error';
182
+ }
183
+ /**
184
+ * Calculate summary statistics
185
+ */
186
+ calculateSummary(skillResults, results) {
187
+ const skills = Array.from(skillResults.values());
188
+ const passedSkills = skills.filter(s => s.avgPassRate >= 0.9).length;
189
+ const avgPassRate = skills.length > 0
190
+ ? skills.reduce((sum, s) => sum + s.avgPassRate, 0) / skills.length
191
+ : 0;
192
+ return {
193
+ totalSkills: skills.length,
194
+ passedSkills,
195
+ failedSkills: skills.length - passedSkills,
196
+ avgPassRate,
197
+ totalDurationMs: results.reduce((sum, r) => sum + r.durationMs, 0),
198
+ totalTests: skills.reduce((sum, s) => sum + s.testCount, 0),
199
+ passedTests: skills.reduce((sum, s) => sum + s.passedTests, 0),
200
+ failedTests: skills.reduce((sum, s) => sum + s.failedTests, 0),
201
+ modelsUsed: [...new Set(results.map(r => r.model))],
202
+ };
203
+ }
204
+ /**
205
+ * Detect cross-model anomalies
206
+ */
207
+ async detectCrossModelAnomalies(results) {
208
+ const modelPassRates = new Map();
209
+ const modelStats = new Map();
210
+ const skillConsistency = new Map();
211
+ // Collect pass rates by model and skill
212
+ for (const result of results) {
213
+ if (!modelPassRates.has(result.model)) {
214
+ modelPassRates.set(result.model, []);
215
+ modelStats.set(result.model, { totalTests: 0, passedTests: 0, skillCount: 0 });
216
+ }
217
+ for (const outcome of result.outcomes) {
218
+ const passRate = outcome.testCaseResults.filter(t => t.passed).length /
219
+ (outcome.testCaseResults.length || 1);
220
+ modelPassRates.get(result.model).push(passRate);
221
+ const stats = modelStats.get(result.model);
222
+ stats.totalTests += outcome.testCaseResults.length;
223
+ stats.passedTests += outcome.testCaseResults.filter(t => t.passed).length;
224
+ stats.skillCount++;
225
+ // Track skill consistency across models
226
+ if (!skillConsistency.has(outcome.skillName)) {
227
+ skillConsistency.set(outcome.skillName, { passRates: [], models: [] });
228
+ }
229
+ skillConsistency.get(outcome.skillName).passRates.push(passRate);
230
+ skillConsistency.get(outcome.skillName).models.push(result.model);
231
+ }
232
+ }
233
+ // Calculate overall variance
234
+ const allPassRates = [];
235
+ for (const rates of modelPassRates.values()) {
236
+ allPassRates.push(...rates);
237
+ }
238
+ const avgPassRate = allPassRates.length > 0
239
+ ? allPassRates.reduce((a, b) => a + b, 0) / allPassRates.length
240
+ : 0;
241
+ const variance = allPassRates.length > 1
242
+ ? allPassRates.reduce((sum, r) => sum + Math.pow(r - avgPassRate, 2), 0) / allPassRates.length
243
+ : 0;
244
+ const stdDeviation = Math.sqrt(variance);
245
+ // Detect model anomalies
246
+ const anomalies = [];
247
+ const modelPerformance = new Map();
248
+ for (const [model, rates] of modelPassRates.entries()) {
249
+ const modelAvg = rates.reduce((a, b) => a + b, 0) / rates.length;
250
+ const deviation = modelAvg - avgPassRate;
251
+ const stats = modelStats.get(model);
252
+ modelPerformance.set(model, {
253
+ avgPassRate: modelAvg,
254
+ skillCount: stats.skillCount,
255
+ totalTests: stats.totalTests,
256
+ });
257
+ // Check for significant deviation
258
+ if (Math.abs(deviation) > this.config.varianceThreshold * 2) {
259
+ anomalies.push({
260
+ model,
261
+ type: deviation < 0 ? 'low_performance' : 'high_variance',
262
+ description: `Model ${model} has ${(deviation * 100).toFixed(1)}% difference from average`,
263
+ passRate: modelAvg,
264
+ avgPassRate,
265
+ deviation: Math.abs(deviation),
266
+ });
267
+ }
268
+ }
269
+ // Identify consistent vs inconsistent skills
270
+ const consistentSkills = [];
271
+ const inconsistentSkills = [];
272
+ for (const [skill, data] of skillConsistency.entries()) {
273
+ if (data.passRates.length < 2)
274
+ continue;
275
+ const skillAvg = data.passRates.reduce((a, b) => a + b, 0) / data.passRates.length;
276
+ const skillVariance = data.passRates.reduce((sum, r) => sum + Math.pow(r - skillAvg, 2), 0) / data.passRates.length;
277
+ if (skillVariance < this.config.varianceThreshold) {
278
+ consistentSkills.push(skill);
279
+ }
280
+ else {
281
+ inconsistentSkills.push(skill);
282
+ }
283
+ }
284
+ return {
285
+ variance,
286
+ stdDeviation,
287
+ anomalies,
288
+ consistentSkills,
289
+ inconsistentSkills,
290
+ modelPerformance,
291
+ };
292
+ }
293
+ /**
294
+ * Detect regressions against historical data
295
+ */
296
+ async detectRegressions(results, threshold) {
297
+ const regressions = [];
298
+ const processedSkills = new Set();
299
+ for (const result of results) {
300
+ for (const outcome of result.outcomes) {
301
+ const key = `${outcome.skillName}-${result.model}`;
302
+ if (processedSkills.has(key))
303
+ continue;
304
+ processedSkills.add(key);
305
+ // Get historical trends from learner
306
+ const trends = await this.learner.getValidationTrends(outcome.skillName);
307
+ if (!trends)
308
+ continue;
309
+ const currentPassRate = outcome.testCaseResults.filter(t => t.passed).length /
310
+ (outcome.testCaseResults.length || 1);
311
+ const previousPassRate = trends.recentPassRate;
312
+ const regressionAmount = previousPassRate - currentPassRate;
313
+ if (regressionAmount >= threshold) {
314
+ regressions.push({
315
+ skill: outcome.skillName,
316
+ model: result.model,
317
+ previousPassRate,
318
+ currentPassRate,
319
+ regressionAmount,
320
+ trend: trends.overall,
321
+ possibleCauses: this.analyzePossibleCauses(outcome, regressionAmount),
322
+ severity: this.categorizeRegressionSeverity(regressionAmount),
323
+ });
324
+ }
325
+ }
326
+ }
327
+ // Sort by severity and regression amount
328
+ return regressions.sort((a, b) => {
329
+ const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
330
+ const severityDiff = severityOrder[a.severity] - severityOrder[b.severity];
331
+ if (severityDiff !== 0)
332
+ return severityDiff;
333
+ return b.regressionAmount - a.regressionAmount;
334
+ });
335
+ }
336
+ /**
337
+ * Analyze possible causes for regression
338
+ */
339
+ analyzePossibleCauses(outcome, regressionAmount) {
340
+ const causes = [];
341
+ // Check for new failing tests
342
+ const failedTests = outcome.testCaseResults.filter(t => !t.passed);
343
+ if (failedTests.length > 0) {
344
+ const categories = [...new Set(failedTests.map(t => t.category).filter(Boolean))];
345
+ if (categories.length > 0) {
346
+ causes.push(`Failures in categories: ${categories.join(', ')}`);
347
+ }
348
+ }
349
+ // Check for critical test failures
350
+ const criticalFailures = failedTests.filter(t => t.priority === 'critical');
351
+ if (criticalFailures.length > 0) {
352
+ causes.push(`${criticalFailures.length} critical test(s) failing`);
353
+ }
354
+ // Check for low reasoning quality
355
+ const avgReasoning = outcome.testCaseResults.reduce((sum, t) => sum + t.reasoningQuality, 0) /
356
+ (outcome.testCaseResults.length || 1);
357
+ if (avgReasoning < 0.7) {
358
+ causes.push(`Low reasoning quality score: ${(avgReasoning * 100).toFixed(1)}%`);
359
+ }
360
+ // Suggest model-related issues for large regressions
361
+ if (regressionAmount > 0.3) {
362
+ causes.push('Possible model behavior change or prompt drift');
363
+ }
364
+ if (causes.length === 0) {
365
+ causes.push('No specific cause identified - review test details');
366
+ }
367
+ return causes;
368
+ }
369
+ /**
370
+ * Categorize regression severity
371
+ */
372
+ categorizeRegressionSeverity(regressionAmount) {
373
+ if (regressionAmount >= 0.5)
374
+ return 'critical';
375
+ if (regressionAmount >= 0.3)
376
+ return 'high';
377
+ if (regressionAmount >= 0.15)
378
+ return 'medium';
379
+ return 'low';
380
+ }
381
+ /**
382
+ * Generate recommendations based on analysis
383
+ */
384
+ generateRecommendations(skillResults, crossModel, regressions) {
385
+ const recommendations = [];
386
+ // Recommendations based on cross-model analysis
387
+ if (crossModel.inconsistentSkills.length > 0) {
388
+ recommendations.push(`Review ${crossModel.inconsistentSkills.length} skills with inconsistent cross-model behavior: ` +
389
+ crossModel.inconsistentSkills.slice(0, 3).join(', ') +
390
+ (crossModel.inconsistentSkills.length > 3 ? ` and ${crossModel.inconsistentSkills.length - 3} more` : ''));
391
+ }
392
+ if (crossModel.anomalies.some(a => a.type === 'low_performance')) {
393
+ const lowPerfModels = crossModel.anomalies
394
+ .filter(a => a.type === 'low_performance')
395
+ .map(a => a.model);
396
+ recommendations.push(`Investigate low performance on model(s): ${lowPerfModels.join(', ')}`);
397
+ }
398
+ // Recommendations based on regressions
399
+ const criticalRegressions = regressions.filter(r => r.severity === 'critical');
400
+ if (criticalRegressions.length > 0) {
401
+ recommendations.push(`URGENT: ${criticalRegressions.length} critical regression(s) detected - immediate review required`);
402
+ }
403
+ // Recommendations based on skill results
404
+ const failingSkills = Array.from(skillResults.values()).filter(s => s.avgPassRate < 0.9);
405
+ if (failingSkills.length > 0) {
406
+ const schemaFailures = failingSkills.filter(s => !s.schemaValid);
407
+ const validatorFailures = failingSkills.filter(s => !s.validatorPassed);
408
+ if (schemaFailures.length > 0) {
409
+ recommendations.push(`Fix schema validation for: ${schemaFailures.map(s => s.skill).slice(0, 3).join(', ')}`);
410
+ }
411
+ if (validatorFailures.length > 0) {
412
+ recommendations.push(`Review validator scripts for: ${validatorFailures.map(s => s.skill).slice(0, 3).join(', ')}`);
413
+ }
414
+ }
415
+ // General improvement recommendations
416
+ const avgPassRate = Array.from(skillResults.values())
417
+ .reduce((sum, s) => sum + s.avgPassRate, 0) / skillResults.size;
418
+ if (avgPassRate < 0.8) {
419
+ recommendations.push('Overall pass rate below 80% - consider reviewing skill definitions and test expectations');
420
+ }
421
+ if (recommendations.length === 0) {
422
+ recommendations.push('All validations passing - no immediate action required');
423
+ }
424
+ return recommendations;
425
+ }
426
+ /**
427
+ * Update trust tier manifest with new pass rates
428
+ */
429
+ async updateManifest(report) {
430
+ if (!existsSync(this.manifestPath)) {
431
+ throw new Error(`Manifest file not found: ${this.manifestPath}`);
432
+ }
433
+ const manifest = JSON.parse(readFileSync(this.manifestPath, 'utf-8'));
434
+ // Update skill pass rates and validation status
435
+ for (const [skillName, summary] of report.skillResults.entries()) {
436
+ if (manifest.skills && manifest.skills[skillName]) {
437
+ const skill = manifest.skills[skillName];
438
+ // Update validation status
439
+ if (!skill.validation) {
440
+ skill.validation = {};
441
+ }
442
+ skill.validation.passRate = summary.avgPassRate;
443
+ skill.validation.lastValidated = report.timestamp.toISOString();
444
+ skill.validation.status = summary.avgPassRate >= 0.9 ? 'passing' : 'failing';
445
+ // Update model-specific pass rates
446
+ skill.validation.passRateByModel = Object.fromEntries(summary.passRateByModel);
447
+ }
448
+ }
449
+ // Update validation status summary
450
+ const skills = Array.from(report.skillResults.values());
451
+ manifest.validationStatus = {
452
+ passing: skills.filter(s => s.avgPassRate >= 0.9).length,
453
+ failing: skills.filter(s => s.avgPassRate < 0.9).length,
454
+ unknown: 0,
455
+ skipped: manifest.summary?.tier0 || 0,
456
+ };
457
+ // Update generation metadata
458
+ manifest.generatedAt = new Date().toISOString();
459
+ manifest.lastValidationRun = {
460
+ runId: report.runId,
461
+ timestamp: report.timestamp.toISOString(),
462
+ avgPassRate: report.summary.avgPassRate,
463
+ modelsUsed: report.summary.modelsUsed,
464
+ };
465
+ writeFileSync(this.manifestPath, JSON.stringify(manifest, null, 2));
466
+ }
467
+ /**
468
+ * Generate markdown report
469
+ */
470
+ generateMarkdownReport(report) {
471
+ const { summary, crossModelAnalysis, regressions, recommendations, skillResults } = report;
472
+ const statusEmoji = summary.avgPassRate >= 0.9 ? '`' :
473
+ summary.avgPassRate >= 0.7 ? '`' : '`';
474
+ const sections = [];
475
+ // Header
476
+ sections.push(`# Validation Report
477
+
478
+ > ${statusEmoji} Generated: ${report.timestamp.toISOString()}
479
+ > Run ID: ${report.runId}
480
+
481
+ ---
482
+
483
+ ## Summary
484
+
485
+ | Metric | Value |
486
+ |--------|-------|
487
+ | Total Skills | ${summary.totalSkills} |
488
+ | Passed Skills | ${summary.passedSkills} (${(summary.passedSkills / summary.totalSkills * 100).toFixed(1)}%) |
489
+ | Failed Skills | ${summary.failedSkills} |
490
+ | Average Pass Rate | ${(summary.avgPassRate * 100).toFixed(1)}% |
491
+ | Total Tests | ${summary.totalTests} |
492
+ | Passed Tests | ${summary.passedTests} |
493
+ | Failed Tests | ${summary.failedTests} |
494
+ | Total Duration | ${(summary.totalDurationMs / 1000).toFixed(1)}s |
495
+ | Models Used | ${summary.modelsUsed.join(', ')} |`);
496
+ // Recommendations
497
+ sections.push(`
498
+ ---
499
+
500
+ ## Recommendations
501
+
502
+ ${recommendations.map((r, i) => `${i + 1}. ${r}`).join('\n')}`);
503
+ // Cross-Model Analysis
504
+ sections.push(`
505
+ ---
506
+
507
+ ## Cross-Model Analysis
508
+
509
+ **Variance:** ${(crossModelAnalysis.variance * 100).toFixed(2)}%
510
+ **Std Deviation:** ${(crossModelAnalysis.stdDeviation * 100).toFixed(2)}%
511
+
512
+ ### Model Performance
513
+
514
+ | Model | Avg Pass Rate | Skills Tested | Total Tests |
515
+ |-------|---------------|---------------|-------------|
516
+ ${Array.from(crossModelAnalysis.modelPerformance.entries())
517
+ .map(([model, perf]) => `| ${model} | ${(perf.avgPassRate * 100).toFixed(1)}% | ${perf.skillCount} | ${perf.totalTests} |`).join('\n')}`);
518
+ if (crossModelAnalysis.anomalies.length > 0) {
519
+ sections.push(`
520
+ ### Anomalies Detected
521
+
522
+ | Model | Type | Description | Deviation |
523
+ |-------|------|-------------|-----------|
524
+ ${crossModelAnalysis.anomalies.map(a => `| ${a.model} | ${a.type} | ${a.description} | ${(a.deviation * 100).toFixed(1)}% |`).join('\n')}`);
525
+ }
526
+ if (crossModelAnalysis.inconsistentSkills.length > 0) {
527
+ sections.push(`
528
+ ### Inconsistent Skills
529
+
530
+ These skills show high variance across models:
531
+
532
+ ${crossModelAnalysis.inconsistentSkills.map(s => `- ${s}`).join('\n')}`);
533
+ }
534
+ // Regressions
535
+ if (regressions.length > 0) {
536
+ sections.push(`
537
+ ---
538
+
539
+ ## Regressions Detected
540
+
541
+ | Skill | Model | Previous | Current | Drop | Severity |
542
+ |-------|-------|----------|---------|------|----------|
543
+ ${regressions.map(r => `| ${r.skill} | ${r.model} | ${(r.previousPassRate * 100).toFixed(1)}% | ${(r.currentPassRate * 100).toFixed(1)}% | ${(r.regressionAmount * 100).toFixed(1)}% | ${r.severity} |`).join('\n')}`);
544
+ // Detailed regression causes
545
+ for (const reg of regressions.filter(r => r.severity === 'critical' || r.severity === 'high')) {
546
+ sections.push(`
547
+ ### ${reg.skill} (${reg.model})
548
+
549
+ **Possible Causes:**
550
+ ${reg.possibleCauses.map(c => `- ${c}`).join('\n')}`);
551
+ }
552
+ }
553
+ // Skill Results
554
+ sections.push(`
555
+ ---
556
+
557
+ ## Skill Results
558
+
559
+ ### Passing Skills (${summary.passedSkills})
560
+
561
+ | Skill | Trust Tier | Pass Rate | Tests | Issues |
562
+ |-------|------------|-----------|-------|--------|
563
+ ${Array.from(skillResults.values())
564
+ .filter(s => s.avgPassRate >= 0.9)
565
+ .sort((a, b) => b.avgPassRate - a.avgPassRate)
566
+ .map(s => `| ${s.skill} | T${s.trustTier} | ${(s.avgPassRate * 100).toFixed(1)}% | ${s.passedTests}/${s.testCount} | ${s.issues.length} |`).join('\n')}`);
567
+ if (summary.failedSkills > 0) {
568
+ sections.push(`
569
+ ### Failing Skills (${summary.failedSkills})
570
+
571
+ | Skill | Trust Tier | Pass Rate | Tests | Critical Issues |
572
+ |-------|------------|-----------|-------|-----------------|
573
+ ${Array.from(skillResults.values())
574
+ .filter(s => s.avgPassRate < 0.9)
575
+ .sort((a, b) => a.avgPassRate - b.avgPassRate)
576
+ .map(s => {
577
+ const criticalCount = s.issues.filter(i => i.severity === 'critical').length;
578
+ return `| ${s.skill} | T${s.trustTier} | ${(s.avgPassRate * 100).toFixed(1)}% | ${s.passedTests}/${s.testCount} | ${criticalCount} |`;
579
+ }).join('\n')}`);
580
+ // Detailed issues for failing skills
581
+ const failingSkills = Array.from(skillResults.values()).filter(s => s.avgPassRate < 0.9);
582
+ for (const skill of failingSkills.slice(0, 5)) { // Top 5 failing skills
583
+ if (skill.issues.length > 0) {
584
+ sections.push(`
585
+ #### ${skill.skill} Issues
586
+
587
+ ${skill.issues.slice(0, 5).map(i => `- **[${i.severity}]** ${i.type}: ${i.message}${i.testId ? ` (${i.testId})` : ''}`).join('\n')}${skill.issues.length > 5 ? `\n- ... and ${skill.issues.length - 5} more issues` : ''}`);
588
+ }
589
+ }
590
+ }
591
+ // Footer
592
+ sections.push(`
593
+ ---
594
+
595
+ *Generated by ValidationResultAggregator v${report.metadata.version}*
596
+ *Policy: ADR-056 Trust But Verify*`);
597
+ return sections.join('\n');
598
+ }
599
+ /**
600
+ * Generate JSON report for CI integration
601
+ */
602
+ generateJsonReport(report) {
603
+ // Convert Maps to plain objects for JSON serialization
604
+ const serializable = {
605
+ ...report,
606
+ skillResults: Object.fromEntries(Array.from(report.skillResults.entries()).map(([key, value]) => [
607
+ key,
608
+ {
609
+ ...value,
610
+ passRateByModel: Object.fromEntries(value.passRateByModel),
611
+ },
612
+ ])),
613
+ crossModelAnalysis: {
614
+ ...report.crossModelAnalysis,
615
+ modelPerformance: Object.fromEntries(report.crossModelAnalysis.modelPerformance),
616
+ },
617
+ };
618
+ return JSON.stringify(serializable, null, 2);
619
+ }
620
+ }
621
+ // ============================================================================
622
+ // Factory
623
+ // ============================================================================
624
+ /**
625
+ * Create a ValidationResultAggregator instance
626
+ */
627
+ export function createValidationResultAggregator(learner, manifestPath, config) {
628
+ return new ValidationResultAggregator(learner, manifestPath, config);
629
+ }
630
+ //# sourceMappingURL=validation-result-aggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-result-aggregator.js","sourceRoot":"","sources":["../../src/validation/validation-result-aggregator.ts"],"names":[],"mappings":"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"}