claude-flow-novice 2.9.1 → 2.10.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 (349) hide show
  1. package/.claude/agents/cfn-dev-team/CLAUDE.md +1086 -0
  2. package/.claude/agents/cfn-dev-team/README.md +116 -0
  3. package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
  4. package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
  5. package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
  6. package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
  7. package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
  8. package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
  9. package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
  10. package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
  11. package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
  12. package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
  13. package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
  14. package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
  15. package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
  16. package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
  17. package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
  18. package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
  19. package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
  20. package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
  21. package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
  22. package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
  23. package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
  24. package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
  25. package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
  26. package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
  27. package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
  28. package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
  29. package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
  30. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
  31. package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
  32. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
  33. package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
  34. package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
  35. package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
  36. package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
  37. package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
  38. package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
  39. package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
  40. package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
  41. package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
  42. package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
  43. package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
  44. package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
  45. package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
  46. package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
  47. package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
  48. package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
  49. package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
  50. package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
  51. package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
  52. package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
  53. package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
  54. package/.claude/commands/cfn/cfn-loop.md +168 -7
  55. package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
  56. package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
  57. package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
  58. package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
  59. package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
  60. package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
  61. package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
  62. package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
  63. package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
  64. package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
  65. package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
  66. package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
  67. package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
  68. package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
  69. package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
  70. package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
  71. package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
  72. package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
  73. package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
  74. package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
  75. package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
  76. package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
  77. package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
  78. package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
  79. package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
  80. package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
  81. package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
  82. package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
  83. package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
  84. package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
  85. package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
  86. package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
  87. package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
  88. package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
  89. package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
  90. package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
  91. package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
  92. package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
  93. package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
  94. package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
  95. package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
  96. package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
  97. package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
  98. package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
  99. package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
  100. package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
  101. package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
  102. package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
  103. package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
  104. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
  105. package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
  106. package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
  107. package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
  108. package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
  109. package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
  110. package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
  111. package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
  112. package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
  113. package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
  114. package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
  115. package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
  116. package/.claude/skills/cfn-config-management/SKILL.md +34 -0
  117. package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
  118. package/.claude/skills/cfn-config-management/config.json +32 -0
  119. package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
  120. package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
  121. package/.claude/skills/cfn-event-bus/config.json +111 -0
  122. package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
  123. package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
  124. package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
  125. package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
  126. package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
  127. package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
  128. package/.claude/skills/cfn-fleet-manager/config.json +60 -0
  129. package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
  130. package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
  131. package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
  132. package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
  133. package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
  134. package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
  135. package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
  136. package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
  137. package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
  138. package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
  139. package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
  140. package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
  141. package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
  142. package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
  143. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
  144. package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
  145. package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
  146. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  147. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  148. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  149. package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
  150. package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
  151. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  152. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  153. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  154. package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
  155. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  156. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  157. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  158. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
  159. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
  160. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  161. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  162. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  163. package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
  164. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
  165. package/.claude/skills/cfn-loop-validation/config.json +161 -0
  166. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
  167. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
  168. package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
  169. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
  170. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
  171. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
  172. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
  173. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
  174. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
  175. package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
  176. package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
  177. package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
  178. package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
  179. package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
  180. package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
  181. package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
  182. package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
  183. package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
  184. package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
  185. package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
  186. package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
  187. package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
  188. package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
  189. package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
  190. package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
  191. package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
  192. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
  193. package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
  194. package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
  195. package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
  196. package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
  197. package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
  198. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
  199. package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
  200. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
  201. package/.claude/skills/cfn-redis-coordination/config.json +61 -0
  202. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  203. package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
  204. package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
  205. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
  206. package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
  207. package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
  208. package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
  209. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
  210. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
  211. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
  212. package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
  213. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
  214. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
  215. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
  216. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
  217. package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
  218. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
  219. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
  220. package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
  221. package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
  222. package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
  223. package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
  224. package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
  225. package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
  226. package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
  227. package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
  228. package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
  229. package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
  230. package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
  231. package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
  232. package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
  233. package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
  234. package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
  235. package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
  236. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
  237. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  238. package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
  239. package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
  240. package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
  241. package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
  242. package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
  243. package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
  244. package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
  245. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  246. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
  247. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  248. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  249. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  250. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  251. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  252. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  253. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  254. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  255. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  256. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  257. package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
  258. package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
  259. package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
  260. package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
  261. package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
  262. package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
  263. package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
  264. package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
  265. package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
  266. package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
  267. package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
  268. package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
  269. package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
  270. package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
  271. package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
  272. package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
  273. package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
  274. package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
  275. package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
  276. package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
  277. package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
  278. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
  279. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
  280. package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
  281. package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
  282. package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  283. package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
  284. package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  285. package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
  286. package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
  287. package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
  288. package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
  289. package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
  290. package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
  291. package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
  292. package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
  293. package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
  294. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
  295. package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
  296. package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
  297. package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
  298. package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
  299. package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
  300. package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
  301. package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
  302. package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
  303. package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
  304. package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
  305. package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
  306. package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
  307. package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
  308. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
  309. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
  310. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
  311. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
  312. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
  313. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
  314. package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
  315. package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
  316. package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
  317. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
  318. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
  319. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
  320. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
  321. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
  322. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
  323. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
  324. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
  325. package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  326. package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
  327. package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
  328. package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
  329. package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
  330. package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
  331. package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
  332. package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
  333. package/README.md +51 -2
  334. package/dist/ace/ace-reflector.js +109 -10
  335. package/dist/ace/ace-reflector.js.map +1 -1
  336. package/dist/cli/agent-executor.js +1 -1
  337. package/dist/cli/agent-executor.js.map +1 -1
  338. package/package.json +43 -7
  339. package/readme/README.md +15 -4
  340. package/scripts/init-project.js +76 -6
  341. package/scripts/run-marketing-tests.sh +43 -0
  342. package/scripts/update_paths.sh +47 -0
  343. package/tools/install-lizard.sh +37 -0
  344. package/tools/simple-complexity.sh +44 -0
  345. package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
  346. package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
  347. package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
  348. /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
  349. /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
@@ -0,0 +1,477 @@
1
+ const sqlite3 = require('sqlite3').verbose();
2
+ const path = require('path');
3
+
4
+ class CFNLoopValidator {
5
+ constructor(config = {}) {
6
+ this.mode = config.mode || 'standard';
7
+ this.maxRetries = config.maxRetries || 10;
8
+ this.consensusThreshold = this.getThresholdForMode(this.mode);
9
+ this.validatorCount = config.validatorCount || 3;
10
+
11
+ // Initialize database
12
+ this.db = new sqlite3.Database(path.join(__dirname, 'evidence-chain.db'));
13
+ this.initializeDatabase();
14
+ }
15
+
16
+ getThresholdForMode(mode) {
17
+ const thresholds = {
18
+ mvp: 0.7,
19
+ standard: 0.85,
20
+ enterprise: 0.95,
21
+ };
22
+ return thresholds[mode] || thresholds.standard;
23
+ }
24
+
25
+ async initializeDatabase() {
26
+ return new Promise((resolve, reject) => {
27
+ this.db.serialize(() => {
28
+ this.db.run(`
29
+ CREATE TABLE IF NOT EXISTS validation_evidence (
30
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
31
+ template_id TEXT,
32
+ validator_id TEXT,
33
+ score REAL,
34
+ evidence_type TEXT,
35
+ evidence_data TEXT,
36
+ timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
37
+ )
38
+ `);
39
+
40
+ this.db.run(`
41
+ CREATE TABLE IF NOT EXISTS consensus_sessions (
42
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
43
+ session_id TEXT,
44
+ template_id TEXT,
45
+ mode TEXT,
46
+ final_score REAL,
47
+ consensus_achieved BOOLEAN,
48
+ retry_count INTEGER,
49
+ timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
50
+ )
51
+ `);
52
+
53
+ this.db.run(`
54
+ CREATE TABLE IF NOT EXISTS validator_scores (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ session_id TEXT,
57
+ validator_id TEXT,
58
+ score REAL,
59
+ validation_time INTEGER,
60
+ errors TEXT,
61
+ timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
62
+ )
63
+ `);
64
+
65
+ resolve();
66
+ });
67
+ });
68
+ }
69
+
70
+ async validate(template, templateId = null) {
71
+ const sessionId = this.generateSessionId();
72
+ let retryCount = 0;
73
+ let consensusAchieved = false;
74
+ let finalScore = 0;
75
+
76
+ while (retryCount < this.maxRetries && !consensusAchieved) {
77
+ try {
78
+ // Spawn validators in parallel
79
+ const validators = this.spawnValidators(
80
+ this.validatorCount,
81
+ template,
82
+ sessionId
83
+ );
84
+ const results = await Promise.all(validators);
85
+
86
+ // Calculate consensus
87
+ const consensusResult = await this.calculateConsensus(
88
+ results,
89
+ sessionId
90
+ );
91
+ consensusAchieved = consensusResult.consensusAchieved;
92
+ finalScore = consensusResult.averageScore;
93
+
94
+ if (consensusAchieved) {
95
+ await this.recordConsensusSession(
96
+ sessionId,
97
+ templateId,
98
+ finalScore,
99
+ true,
100
+ retryCount
101
+ );
102
+ } else {
103
+ retryCount++;
104
+ await new Promise((resolve) =>
105
+ setTimeout(resolve, 1000 * retryCount)
106
+ ); // Exponential backoff
107
+ }
108
+ } catch (error) {
109
+ retryCount++;
110
+ console.error(
111
+ `Validation attempt ${retryCount} failed:`,
112
+ error.message
113
+ );
114
+ }
115
+ }
116
+
117
+ if (!consensusAchieved) {
118
+ await this.recordConsensusSession(
119
+ sessionId,
120
+ templateId,
121
+ finalScore,
122
+ false,
123
+ retryCount
124
+ );
125
+ throw new Error(
126
+ `Consensus not achieved after ${this.maxRetries} attempts`
127
+ );
128
+ }
129
+
130
+ return {
131
+ sessionId,
132
+ score: finalScore,
133
+ consensusThreshold: this.consensusThreshold,
134
+ mode: this.mode,
135
+ achievedConsensus: true,
136
+ };
137
+ }
138
+
139
+ spawnValidators(count, template, sessionId) {
140
+ const validators = [];
141
+
142
+ for (let i = 0; i < count; i++) {
143
+ const validatorId = `validator_${i}_${Date.now()}`;
144
+ validators.push(this.runValidator(validatorId, template, sessionId));
145
+ }
146
+
147
+ return validators;
148
+ }
149
+
150
+ async runValidator(validatorId, template, sessionId) {
151
+ const startTime = Date.now();
152
+
153
+ try {
154
+ // Simulate different validation strategies
155
+ const validationStrategies = [
156
+ this.detectLoopsBasic,
157
+ this.detectLoopsAdvanced,
158
+ this.detectLoopsDeepAnalysis,
159
+ ];
160
+
161
+ const strategy =
162
+ validationStrategies[
163
+ Math.floor(Math.random() * validationStrategies.length)
164
+ ];
165
+ const score = await strategy.call(this, template);
166
+ const validationTime = Date.now() - startTime;
167
+
168
+ // Store validator result
169
+ await this.storeValidatorScore(
170
+ sessionId,
171
+ validatorId,
172
+ score,
173
+ validationTime,
174
+ null
175
+ );
176
+
177
+ // Store evidence
178
+ await this.storeEvidence(
179
+ sessionId,
180
+ validatorId,
181
+ 'validation_score',
182
+ JSON.stringify({
183
+ score,
184
+ validationTime,
185
+ strategy: strategy.name,
186
+ })
187
+ );
188
+
189
+ return {
190
+ validatorId,
191
+ score,
192
+ validationTime,
193
+ sessionId,
194
+ };
195
+ } catch (error) {
196
+ const validationTime = Date.now() - startTime;
197
+ await this.storeValidatorScore(
198
+ sessionId,
199
+ validatorId,
200
+ 0,
201
+ validationTime,
202
+ error.message
203
+ );
204
+ throw error;
205
+ }
206
+ }
207
+
208
+ detectLoopsBasic(template) {
209
+ // Basic loop detection - simplified for demonstration
210
+ const resources = template.Resources || {};
211
+ const hasLoops = Object.keys(resources).length > 10; // Simplified logic
212
+ return hasLoops ? Math.random() * 0.3 + 0.6 : Math.random() * 0.2 + 0.8;
213
+ }
214
+
215
+ detectLoopsAdvanced(template) {
216
+ // Advanced loop detection
217
+ const resources = template.Resources || {};
218
+ const conditions = template.Conditions || {};
219
+
220
+ let loopScore = 0.5;
221
+
222
+ // Check for circular references
223
+ const resourceNames = Object.keys(resources);
224
+ for (let i = 0; i < resourceNames.length; i++) {
225
+ for (let j = i + 1; j < resourceNames.length; j++) {
226
+ if (
227
+ this.hasCircularDependency(
228
+ resources[resourceNames[i]],
229
+ resources[resourceNames[j]]
230
+ )
231
+ ) {
232
+ loopScore += 0.1;
233
+ }
234
+ }
235
+ }
236
+
237
+ return Math.min(loopScore, 1.0);
238
+ }
239
+
240
+ detectLoopsDeepAnalysis(template) {
241
+ // Deep analysis with comprehensive checks
242
+ const resources = template.Resources || {};
243
+ const conditions = template.Conditions || {};
244
+ const outputs = template.Outputs || {};
245
+
246
+ let score = 0.5;
247
+
248
+ // Analyze resource dependencies
249
+ score += this.analyzeResourceDependencies(resources) * 0.3;
250
+
251
+ // Check condition loops
252
+ score += this.analyzeConditionLoops(conditions) * 0.2;
253
+
254
+ // Check output dependencies
255
+ score += this.analyzeOutputDependencies(outputs, resources) * 0.2;
256
+
257
+ // Check intrinsic function complexity
258
+ score += this.analyzeIntrinsicFunctions(template) * 0.3;
259
+
260
+ return Math.min(score, 1.0);
261
+ }
262
+
263
+ hasCircularDependency(resource1, resource2) {
264
+ // Simplified circular dependency check
265
+ return Math.random() > 0.7; // Random for demo
266
+ }
267
+
268
+ analyzeResourceDependencies(resources) {
269
+ const resourceNames = Object.keys(resources);
270
+ let complexity = 0;
271
+
272
+ resourceNames.forEach((name) => {
273
+ const resource = resources[name];
274
+ const properties = resource.Properties || {};
275
+ const dependsOn = resource.DependsOn || [];
276
+
277
+ complexity += dependsOn.length * 0.1;
278
+ });
279
+
280
+ return Math.min(complexity / resourceNames.length, 1.0);
281
+ }
282
+
283
+ analyzeConditionLoops(conditions) {
284
+ const conditionNames = Object.keys(conditions);
285
+ let loopCount = 0;
286
+
287
+ // Check for condition references
288
+ conditionNames.forEach((name) => {
289
+ const condition = conditions[name];
290
+ if (condition && typeof condition === 'object') {
291
+ const fn = condition.Fn || condition.Ref || condition.Condition;
292
+ if (fn && conditionNames.includes(fn)) {
293
+ loopCount++;
294
+ }
295
+ }
296
+ });
297
+
298
+ return Math.min(loopCount / conditionNames.length, 1.0);
299
+ }
300
+
301
+ analyzeOutputDependencies(outputs, resources) {
302
+ const outputNames = Object.keys(outputs);
303
+ let dependencyCount = 0;
304
+
305
+ outputNames.forEach((name) => {
306
+ const output = outputs[name];
307
+ const value = output.Value;
308
+ if (value && typeof value === 'string') {
309
+ // Check if output references resources
310
+ const resourceNames = Object.keys(resources);
311
+ resourceNames.forEach((resourceName) => {
312
+ if (
313
+ value.includes(`!Ref ${resourceName}`) ||
314
+ value.includes(`!GetAtt ${resourceName}`)
315
+ ) {
316
+ dependencyCount++;
317
+ }
318
+ });
319
+ }
320
+ });
321
+
322
+ return Math.min(dependencyCount / outputNames.length, 1.0);
323
+ }
324
+
325
+ analyzeIntrinsicFunctions(template) {
326
+ const templateString = JSON.stringify(template);
327
+ const intrinsicFunctions = [
328
+ 'Fn::If',
329
+ 'Fn::Join',
330
+ 'Fn::Select',
331
+ 'Fn::Split',
332
+ 'Fn::FindInMap',
333
+ 'Fn::GetAZs',
334
+ 'Fn::ImportValue',
335
+ 'Fn::GetAtt',
336
+ 'Fn::Join',
337
+ 'Fn::Select',
338
+ 'Fn::Split',
339
+ ];
340
+
341
+ let functionCount = 0;
342
+ intrinsicFunctions.forEach((fn) => {
343
+ const regex = new RegExp(`"${fn}"`, 'g');
344
+ const matches = templateString.match(regex);
345
+ if (matches) {
346
+ functionCount += matches.length;
347
+ }
348
+ });
349
+
350
+ return Math.min(functionCount / 10, 1.0); // Normalize to 0-1
351
+ }
352
+
353
+ async calculateConsensus(results, sessionId) {
354
+ if (results.length === 0) {
355
+ return { consensusAchieved: false, averageScore: 0 };
356
+ }
357
+
358
+ const scores = results.map((r) => r.score);
359
+ const averageScore =
360
+ scores.reduce((sum, score) => sum + score, 0) / scores.length;
361
+ const standardDeviation = Math.sqrt(
362
+ scores.reduce(
363
+ (sum, score) => sum + Math.pow(score - averageScore, 2),
364
+ 0
365
+ ) / scores.length
366
+ );
367
+
368
+ const consensusAchieved =
369
+ averageScore >= this.consensusThreshold && standardDeviation <= 0.1;
370
+
371
+ await this.storeEvidence(
372
+ sessionId,
373
+ 'consensus_calculator',
374
+ 'consensus_result',
375
+ JSON.stringify({
376
+ scores,
377
+ averageScore,
378
+ standardDeviation,
379
+ consensusThreshold: this.consensusThreshold,
380
+ consensusAchieved,
381
+ })
382
+ );
383
+
384
+ return { consensusAchieved, averageScore, standardDeviation };
385
+ }
386
+
387
+ async storeValidatorScore(
388
+ sessionId,
389
+ validatorId,
390
+ score,
391
+ validationTime,
392
+ errors
393
+ ) {
394
+ return new Promise((resolve, reject) => {
395
+ const stmt = this.db.prepare(`
396
+ INSERT INTO validator_scores (session_id, validator_id, score, validation_time, errors)
397
+ VALUES (?, ?, ?, ?, ?)
398
+ `);
399
+
400
+ stmt.run(
401
+ [sessionId, validatorId, score, validationTime, errors],
402
+ (err) => {
403
+ if (err) reject(err);
404
+ else resolve();
405
+ }
406
+ );
407
+
408
+ stmt.finalize();
409
+ });
410
+ }
411
+
412
+ async storeEvidence(sessionId, validatorId, evidenceType, evidenceData) {
413
+ return new Promise((resolve, reject) => {
414
+ const stmt = this.db.prepare(`
415
+ INSERT INTO validation_evidence (template_id, validator_id, score, evidence_type, evidence_data)
416
+ VALUES (?, ?, ?, ?, ?)
417
+ `);
418
+
419
+ stmt.run(
420
+ [sessionId, validatorId, 0, evidenceType, evidenceData],
421
+ (err) => {
422
+ if (err) reject(err);
423
+ else resolve();
424
+ }
425
+ );
426
+
427
+ stmt.finalize();
428
+ });
429
+ }
430
+
431
+ async recordConsensusSession(
432
+ sessionId,
433
+ templateId,
434
+ finalScore,
435
+ consensusAchieved,
436
+ retryCount
437
+ ) {
438
+ return new Promise((resolve, reject) => {
439
+ const stmt = this.db.prepare(`
440
+ INSERT INTO consensus_sessions (session_id, template_id, mode, final_score, consensus_achieved, retry_count)
441
+ VALUES (?, ?, ?, ?, ?, ?)
442
+ `);
443
+
444
+ stmt.run(
445
+ [
446
+ sessionId,
447
+ templateId,
448
+ this.mode,
449
+ finalScore,
450
+ consensusAchieved,
451
+ retryCount,
452
+ ],
453
+ (err) => {
454
+ if (err) reject(err);
455
+ else resolve();
456
+ }
457
+ );
458
+
459
+ stmt.finalize();
460
+ });
461
+ }
462
+
463
+ generateSessionId() {
464
+ return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
465
+ }
466
+
467
+ async close() {
468
+ return new Promise((resolve, reject) => {
469
+ this.db.close((err) => {
470
+ if (err) reject(err);
471
+ else resolve();
472
+ });
473
+ });
474
+ }
475
+ }
476
+
477
+ module.exports = CFNLoopValidator;
@@ -0,0 +1,163 @@
1
+ -- CFN Loop Validation Evidence Chain Schema
2
+ -- SQLite database schema for storing validation results and audit trails
3
+
4
+ -- Main validation runs table
5
+ CREATE TABLE IF NOT EXISTS validation_runs (
6
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
7
+ run_id TEXT NOT NULL UNIQUE,
8
+ template_id TEXT NOT NULL,
9
+ template_version TEXT NOT NULL,
10
+ validation_mode TEXT NOT NULL CHECK (validation_mode IN ('mvp', 'standard', 'enterprise')),
11
+ status TEXT NOT NULL CHECK (status IN ('pending', 'running', 'completed', 'failed', 'retrying')),
12
+ start_time INTEGER NOT NULL,
13
+ end_time INTEGER,
14
+ consensus_score REAL,
15
+ consensus_threshold REAL,
16
+ validator_count INTEGER,
17
+ max_retries INTEGER,
18
+ retry_count INTEGER DEFAULT 0,
19
+ error_message TEXT,
20
+ created_at INTEGER DEFAULT (strftime('%s', 'now'))
21
+ );
22
+
23
+ -- Individual validator results table
24
+ CREATE TABLE IF NOT EXISTS validator_results (
25
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
26
+ run_id TEXT NOT NULL,
27
+ validator_id TEXT NOT NULL,
28
+ validator_type TEXT NOT NULL,
29
+ score REAL NOT NULL CHECK (score >= 0 AND score <= 1),
30
+ execution_time INTEGER NOT NULL,
31
+ status TEXT NOT NULL CHECK (status IN ('success', 'failed', 'timeout', 'error')),
32
+ error_message TEXT,
33
+ metadata TEXT, -- JSON blob for additional data
34
+ created_at INTEGER DEFAULT (strftime('%s', 'now')),
35
+ FOREIGN KEY (run_id) REFERENCES validation_runs(run_id) ON DELETE CASCADE
36
+ );
37
+
38
+ -- Evidence chain table for detailed validation steps
39
+ CREATE TABLE IF NOT EXISTS evidence_chain (
40
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
41
+ run_id TEXT NOT NULL,
42
+ step_type TEXT NOT NULL,
43
+ step_order INTEGER NOT NULL,
44
+ validator_id TEXT,
45
+ input_data TEXT, -- JSON blob
46
+ output_data TEXT, -- JSON blob
47
+ validation_result TEXT, -- JSON blob
48
+ timestamp INTEGER NOT NULL,
49
+ created_at INTEGER DEFAULT (strftime('%s', 'now')),
50
+ FOREIGN KEY (run_id) REFERENCES validation_runs(run_id) ON DELETE CASCADE
51
+ );
52
+
53
+ -- Retry log table for tracking retry attempts
54
+ CREATE TABLE IF NOT EXISTS retry_log (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ run_id TEXT NOT NULL,
57
+ attempt_number INTEGER NOT NULL,
58
+ delay_ms INTEGER NOT NULL,
59
+ reason TEXT NOT NULL,
60
+ consensus_score REAL,
61
+ validator_count INTEGER,
62
+ timestamp INTEGER NOT NULL,
63
+ created_at INTEGER DEFAULT (strftime('%s', 'now')),
64
+ FOREIGN KEY (run_id) REFERENCES validation_runs(run_id) ON DELETE CASCADE
65
+ );
66
+
67
+ -- Performance metrics table
68
+ CREATE TABLE IF NOT EXISTS performance_metrics (
69
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
70
+ run_id TEXT NOT NULL,
71
+ metric_name TEXT NOT NULL,
72
+ metric_value REAL NOT NULL,
73
+ unit TEXT NOT NULL,
74
+ timestamp INTEGER NOT NULL,
75
+ created_at INTEGER DEFAULT (strftime('%s', 'now')),
76
+ FOREIGN KEY (run_id) REFERENCES validation_runs(run_id) ON DELETE CASCADE
77
+ );
78
+
79
+ -- Error tracking table
80
+ CREATE TABLE IF NOT EXISTS error_tracking (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ run_id TEXT NOT NULL,
83
+ error_type TEXT NOT NULL,
84
+ error_message TEXT NOT NULL,
85
+ stack_trace TEXT,
86
+ validator_id TEXT,
87
+ timestamp INTEGER NOT NULL,
88
+ created_at INTEGER DEFAULT (strftime('%s', 'now')),
89
+ FOREIGN KEY (run_id) REFERENCES validation_runs(run_id) ON DELETE CASCADE
90
+ );
91
+
92
+ -- Indexes for performance optimization
93
+ CREATE INDEX IF NOT EXISTS idx_validation_runs_status ON validation_runs(status);
94
+ CREATE INDEX IF NOT EXISTS idx_validation_runs_mode ON validation_runs(validation_mode);
95
+ CREATE INDEX IF NOT EXISTS idx_validation_runs_created_at ON validation_runs(created_at);
96
+ CREATE INDEX IF NOT EXISTS idx_validator_results_run_id ON validator_results(run_id);
97
+ CREATE INDEX IF NOT EXISTS idx_validator_results_validator_id ON validator_results(validator_id);
98
+ CREATE INDEX IF NOT EXISTS idx_validator_results_created_at ON validator_results(created_at);
99
+ CREATE INDEX IF NOT EXISTS idx_evidence_chain_run_id ON evidence_chain(run_id);
100
+ CREATE INDEX IF NOT EXISTS idx_evidence_chain_timestamp ON evidence_chain(timestamp);
101
+ CREATE INDEX IF NOT EXISTS idx_retry_log_run_id ON retry_log(run_id);
102
+ CREATE INDEX IF NOT EXISTS idx_performance_metrics_run_id ON performance_metrics(run_id);
103
+ CREATE INDEX IF NOT EXISTS idx_error_tracking_run_id ON error_tracking(run_id);
104
+
105
+ -- View for completed validation runs
106
+ CREATE VIEW IF NOT EXISTS completed_validation_runs AS
107
+ SELECT
108
+ vr.run_id,
109
+ vr.template_id,
110
+ vr.template_version,
111
+ vr.validation_mode,
112
+ vr.status,
113
+ vr.start_time,
114
+ vr.end_time,
115
+ vr.consensus_score,
116
+ vr.consensus_threshold,
117
+ vr.validator_count,
118
+ vr.error_message,
119
+ (vr.end_time - vr.start_time) as duration_ms,
120
+ COUNT(vr.id) as total_validators,
121
+ SUM(CASE WHEN vrs.status = 'success' THEN 1 ELSE 0 END) as successful_validators,
122
+ AVG(vrs.score) as average_score
123
+ FROM validation_runs vr
124
+ LEFT JOIN validator_results vrs ON vr.run_id = vrs.run_id
125
+ WHERE vr.status = 'completed'
126
+ GROUP BY vr.run_id, vr.template_id, vr.template_version, vr.validation_mode, vr.status;
127
+
128
+ -- View for retry statistics
129
+ CREATE VIEW IF NOT EXISTS retry_statistics AS
130
+ SELECT
131
+ rl.run_id,
132
+ vr.template_id,
133
+ vr.validation_mode,
134
+ COUNT(rl.id) as total_retries,
135
+ MAX(rl.attempt_number) as max_attempt,
136
+ AVG(rl.delay_ms) as avg_delay_ms,
137
+ MIN(rl.consensus_score) as min_consensus_score,
138
+ MAX(rl.consensus_score) as max_consensus_score
139
+ FROM retry_log rl
140
+ JOIN validation_runs vr ON rl.run_id = vr.run_id
141
+ GROUP BY rl.run_id, vr.template_id, vr.validation_mode;
142
+
143
+ -- Trigger to cleanup old records (optional - uncomment if needed)
144
+ -- CREATE TRIGGER IF NOT EXISTS cleanup_old_records
145
+ -- AFTER INSERT ON validation_runs
146
+ -- FOR EACH ROW
147
+ -- BEGIN
148
+ -- DELETE FROM validator_results WHERE run_id IN (
149
+ -- SELECT run_id FROM validation_runs WHERE created_at < strftime('%s', 'now') - 2592000 -- 30 days
150
+ -- );
151
+ -- DELETE FROM evidence_chain WHERE run_id IN (
152
+ -- SELECT run_id FROM validation_runs WHERE created_at < strftime('%s', 'now') - 2592000
153
+ -- );
154
+ -- DELETE FROM retry_log WHERE run_id IN (
155
+ -- SELECT run_id FROM validation_runs WHERE created_at < strftime('%s', 'now') - 2592000
156
+ -- );
157
+ -- DELETE FROM performance_metrics WHERE run_id IN (
158
+ -- SELECT run_id FROM validation_runs WHERE created_at < strftime('%s', 'now') - 2592000
159
+ -- );
160
+ -- DELETE FROM error_tracking WHERE run_id IN (
161
+ -- SELECT run_id FROM validation_runs WHERE created_at < strftime('%s', 'now') - 2592000
162
+ -- );
163
+ -- END;