claude-flow-novice 2.6.0 → 2.9.0

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 (659) hide show
  1. package/.claude/agents/cfn-dev-team/coordinators/README.md +42 -0
  2. package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +440 -0
  3. package/.claude/agents/{product-owner-team → cfn-dev-team/coordinators}/cto-agent.md +154 -187
  4. package/.claude/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +50 -0
  5. package/.claude/agents/{product-owner-team → cfn-dev-team/coordinators}/product-owner-agent.md +7 -40
  6. package/.claude/agents/{cfn-loop → cfn-dev-team/coordinators}/product-owner.md +73 -18
  7. package/.claude/agents/cfn-dev-team/developers/README.md +69 -0
  8. package/.claude/agents/cfn-dev-team/developers/backend-dev.md +77 -0
  9. package/.claude/agents/{core-agents → cfn-dev-team/developers}/coder.md +132 -27
  10. package/.claude/agents/cfn-dev-team/developers/react-frontend-engineer.md +121 -0
  11. package/.claude/agents/{frontend → cfn-dev-team/developers}/state-architect.md +1 -0
  12. package/.claude/agents/{frontend → cfn-dev-team/developers}/ui-designer.md +1 -0
  13. package/.claude/agents/cfn-dev-team/reviewers/README.md +58 -0
  14. package/.claude/agents/{analysis → cfn-dev-team/reviewers}/code-quality-validator.md +9 -18
  15. package/.claude/agents/{core-agents → cfn-dev-team/reviewers}/reviewer.md +62 -23
  16. package/.claude/agents/cfn-dev-team/testers/README.md +94 -0
  17. package/.claude/agents/{testing → cfn-dev-team/testers}/e2e/playwright-agent.md +2 -21
  18. package/.claude/agents/{testing → cfn-dev-team/testers}/interaction-tester.md +2 -21
  19. package/.claude/agents/{testing → cfn-dev-team/testers}/playwright-tester.md +1 -1
  20. package/.claude/agents/cfn-dev-team/testers/tester.md +139 -0
  21. package/.claude/agents/cfn-dev-team/testers/unit/tdd-london-swarm.md +49 -0
  22. package/.claude/agents/cfn-dev-team/testers/validation/production-validator.md +33 -0
  23. package/.claude/cfn-data/cfn-loop.db +0 -0
  24. package/.claude/cfn-data/cfn_loop_logs.db +0 -0
  25. package/.claude/commands/{CFN_COORDINATOR_PARAMETERS.md → cfn/CFN_COORDINATOR_PARAMETERS.md} +22 -22
  26. package/.claude/commands/{cfn-loop-epic.md → cfn/cfn-loop-epic.md} +6 -6
  27. package/.claude/commands/{cfn-loop-single.md → cfn/cfn-loop-single.md} +9 -9
  28. package/.claude/commands/{cfn-loop-sprints.md → cfn/cfn-loop-sprints.md} +1 -1
  29. package/.claude/commands/{cfn-loop.md → cfn/cfn-loop.md} +9 -9
  30. package/.claude/commands/cfn/cfn-mode.md +20 -0
  31. package/.claude/commands/{cfn-optimize-agents.md → cfn/cfn-optimize-agents.md} +1 -1
  32. package/.claude/commands/{context-curate.md → cfn/context-curate.md} +2 -2
  33. package/.claude/commands/{context-inject.md → cfn/context-inject.md} +3 -3
  34. package/.claude/commands/{context-reflect.md → cfn/context-reflect.md} +1 -1
  35. package/.claude/commands/{context-stats.md → cfn/context-stats.md} +1 -1
  36. package/.claude/commands/{list-agents-rebuild.md → cfn/list-agents-rebuild.md} +12 -12
  37. package/.claude/commands/cfn/write-plan.md +104 -0
  38. package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -0
  39. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +79 -0
  40. package/.claude/hooks/cfn-post-edit.sh +21 -0
  41. package/.claude/hooks/cfn-pre-edit-backup.sh +71 -0
  42. package/.claude/hooks/cfn-restore-from-backup.sh +37 -0
  43. package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
  44. package/.claude/skills/cfn-redis-coordination/README.md +65 -0
  45. package/.claude/skills/cfn-webapp-testing/README.md +142 -0
  46. package/CFN-CLAUDE.md +776 -0
  47. package/README.md +598 -251
  48. package/dist/agents/agent-loader.js +146 -165
  49. package/dist/agents/agent-loader.js.map +1 -1
  50. package/dist/cli/agent-command.js +2 -0
  51. package/dist/cli/agent-command.js.map +1 -1
  52. package/dist/cli/agent-definition-parser.js +7 -0
  53. package/dist/cli/agent-definition-parser.js.map +1 -1
  54. package/dist/cli/agent-executor.js +145 -11
  55. package/dist/cli/agent-executor.js.map +1 -1
  56. package/dist/cli/agent-prompt-builder.js +81 -1
  57. package/dist/cli/agent-prompt-builder.js.map +1 -1
  58. package/dist/cli/agent-spawn.js +10 -1
  59. package/dist/cli/agent-spawn.js.map +1 -1
  60. package/dist/cli/anthropic-client.js +192 -13
  61. package/dist/cli/anthropic-client.js.map +1 -1
  62. package/dist/cli/cfn-context.js +150 -0
  63. package/dist/cli/cfn-context.js.map +1 -1
  64. package/dist/cli/cfn-fork.js +159 -0
  65. package/dist/cli/cfn-fork.js.map +1 -0
  66. package/dist/cli/cli-agent-context.js +8 -3
  67. package/dist/cli/cli-agent-context.js.map +1 -1
  68. package/dist/cli/conversation-fork.js +201 -0
  69. package/dist/cli/conversation-fork.js.map +1 -0
  70. package/dist/cli/index.js +4 -0
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/cli/init-command.js +20 -0
  73. package/dist/cli/init-command.js.map +1 -0
  74. package/dist/cli/tool-definitions.js +263 -0
  75. package/dist/cli/tool-definitions.js.map +1 -0
  76. package/dist/cli/tool-executor.js +247 -0
  77. package/dist/cli/tool-executor.js.map +1 -0
  78. package/dist/hello.js +8 -0
  79. package/dist/hello.js.map +1 -0
  80. package/package.json +26 -12
  81. package/scripts/README.md +68 -0
  82. package/scripts/cfn-intervention-example.sh +21 -0
  83. package/scripts/init-project.js +148 -0
  84. package/scripts/migrate-test-infrastructure.sh +40 -0
  85. package/scripts/restructure-cfn-namespace.sh +161 -0
  86. package/scripts/validate-test-migration.sh +49 -0
  87. package/scripts/verify-no-secrets.sh +55 -0
  88. package/.claude/SLASH-COMMANDS-READY.md +0 -53
  89. package/.claude/WORKING-SETUP.md +0 -67
  90. package/.claude/ace-system-overview.md +0 -524
  91. package/.claude/agent-principles/agent-template.md +0 -96
  92. package/.claude/agents/CLAUDE.md +0 -995
  93. package/.claude/agents/README-VALIDATION.md +0 -243
  94. package/.claude/agents/agent-principles/README.md +0 -226
  95. package/.claude/agents/agent-principles/agent-type-guidelines.md +0 -465
  96. package/.claude/agents/agent-principles/format-selection.md +0 -224
  97. package/.claude/agents/agent-principles/phase4-template-optimization.md +0 -494
  98. package/.claude/agents/agent-principles/prompt-engineering.md +0 -501
  99. package/.claude/agents/agent-principles/quality-metrics.md +0 -375
  100. package/.claude/agents/analysis/code-analyzer.md +0 -192
  101. package/.claude/agents/analysis/code-review/analyze-code-quality.md +0 -133
  102. package/.claude/agents/analysis/perf-analyzer.md +0 -230
  103. package/.claude/agents/architecture/system-architect.md +0 -161
  104. package/.claude/agents/architecture/system-architect.md.backup +0 -603
  105. package/.claude/agents/code-booster.md +0 -131
  106. package/.claude/agents/consensus/consensus-builder.md +0 -159
  107. package/.claude/agents/consensus/crdt-synchronizer.md +0 -192
  108. package/.claude/agents/consensus/performance-benchmarker.md +0 -101
  109. package/.claude/agents/consensus/quorum-manager.md +0 -168
  110. package/.claude/agents/consensus/raft-manager.md +0 -106
  111. package/.claude/agents/consensus/security-manager.md +0 -107
  112. package/.claude/agents/context/context-curator.md +0 -84
  113. package/.claude/agents/context/context-reflector.md +0 -81
  114. package/.claude/agents/context-curator.md +0 -167
  115. package/.claude/agents/context-reflector.md +0 -65
  116. package/.claude/agents/core-agents/analyst.md +0 -170
  117. package/.claude/agents/core-agents/architect.md +0 -200
  118. package/.claude/agents/core-agents/base-template-generator.md +0 -188
  119. package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
  120. package/.claude/agents/core-agents/code-quality-validator.md +0 -149
  121. package/.claude/agents/core-agents/context-curator.md +0 -452
  122. package/.claude/agents/core-agents/context-reflector.md +0 -273
  123. package/.claude/agents/core-agents/coordinator.md +0 -182
  124. package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -235
  125. package/.claude/agents/core-agents/cost-savings-coordinator.md +0 -167
  126. package/.claude/agents/core-agents/performance-benchmarker.md +0 -148
  127. package/.claude/agents/core-agents/planner.md +0 -174
  128. package/.claude/agents/core-agents/security-manager.md +0 -111
  129. package/.claude/agents/core-agents/tester.md +0 -170
  130. package/.claude/agents/custom/agent-builder.md +0 -637
  131. package/.claude/agents/development/backend/dev-backend-api.md +0 -139
  132. package/.claude/agents/development/backend-dev.md +0 -165
  133. package/.claude/agents/development/npm-package-specialist.md +0 -347
  134. package/.claude/agents/devops/devops-engineer.md +0 -148
  135. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +0 -98
  136. package/.claude/agents/documentation/api-docs.md +0 -103
  137. package/.claude/agents/frontend/README.md +0 -640
  138. package/.claude/agents/frontend/interaction-tester.md +0 -139
  139. package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
  140. package/.claude/agents/github/github-commit-agent.md +0 -118
  141. package/.claude/agents/goal/goal-planner.md +0 -183
  142. package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
  143. package/.claude/agents/planning-team/api-designer-persona.md +0 -147
  144. package/.claude/agents/planning-team/security-architect-persona.md +0 -190
  145. package/.claude/agents/planning-team/system-architect-persona.md +0 -190
  146. package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +0 -161
  147. package/.claude/agents/product-owner-team/power-user-persona.md +0 -182
  148. package/.claude/agents/security/security-specialist-existing.md +0 -154
  149. package/.claude/agents/security/security-specialist.md +0 -185
  150. package/.claude/agents/sparc/architecture.md +0 -149
  151. package/.claude/agents/sparc/pseudocode.md +0 -159
  152. package/.claude/agents/sparc/refinement.md +0 -106
  153. package/.claude/agents/sparc/specification.md +0 -157
  154. package/.claude/agents/specialized/cli-agent-optimizer.md +0 -122
  155. package/.claude/agents/specialized/code-booster.md +0 -143
  156. package/.claude/agents/specialized/devops-engineer.md +0 -150
  157. package/.claude/agents/specialized/mobile/mobile-dev.md +0 -210
  158. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -191
  159. package/.claude/agents/specialized/rust-developer.md +0 -166
  160. package/.claude/agents/specialized/rust-enterprise-developer.md +0 -144
  161. package/.claude/agents/specialized/rust-mvp-developer.md +0 -142
  162. package/.claude/agents/testing/production-validator.md +0 -179
  163. package/.claude/agents/testing/tdd-london-swarm.md +0 -209
  164. package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
  165. package/.claude/agents/testing/validation/production-validator.md +0 -43
  166. package/.claude/agents/validate-agent.js +0 -841
  167. package/.claude/agents-ignore/cfn-coordinator-enterprise.md +0 -1303
  168. package/.claude/agents-ignore/cfn-coordinator-mvp.md +0 -942
  169. package/.claude/agents-ignore/cfn-coordinator-standard.md +0 -1062
  170. package/.claude/agents-ignore/deprecated-coordinators/adaptive-coordinator-enhanced.md +0 -145
  171. package/.claude/agents-ignore/deprecated-coordinators/adaptive-coordinator.md +0 -161
  172. package/.claude/agents-ignore/deprecated-coordinators/blocking-coordinator-example.md +0 -732
  173. package/.claude/agents-ignore/deprecated-coordinators/byzantine-coordinator.md +0 -94
  174. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-enterprise.md +0 -323
  175. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-mvp.md +0 -157
  176. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-standard.md +0 -229
  177. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-unified.md +0 -149
  178. package/.claude/agents-ignore/deprecated-coordinators/coordinator-hybrid.md +0 -231
  179. package/.claude/agents-ignore/deprecated-coordinators/gossip-coordinator.md +0 -165
  180. package/.claude/agents-ignore/deprecated-coordinators/hierarchical-coordinator.md +0 -91
  181. package/.claude/agents-ignore/deprecated-coordinators/mesh-coordinator.md +0 -131
  182. package/.claude/agents-ignore/deprecated-coordinators/task-coordinator.md +0 -105
  183. package/.claude/agents-ignore/deprecated-coordinators/test-coordinator.md +0 -141
  184. package/.claude/api-configs/config-current-zai-config.env +0 -62
  185. package/.claude/api-configs/config-test-zai-config.env +0 -62
  186. package/.claude/api-configs/env-backups/before-anthropic-20251020-025404.env +0 -62
  187. package/.claude/api-configs/env-backups/before-restore-20251020-025431.env +0 -62
  188. package/.claude/architecture/mesh-get-polling-design.md +0 -87
  189. package/.claude/architecture/mesh-get-polling-implementation.md +0 -89
  190. package/.claude/architecture/typescript-microservices.md +0 -50
  191. package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +0 -61
  192. package/.claude/cfn-loop-rules.md +0 -73
  193. package/.claude/cfn-mode-patterns.md +0 -571
  194. package/.claude/claude-md-backup-pre-skills.md +0 -15
  195. package/.claude/commands/agents/README.md +0 -10
  196. package/.claude/commands/agents/agent-capabilities.md +0 -21
  197. package/.claude/commands/agents/agent-coordination.md +0 -28
  198. package/.claude/commands/agents/agent-spawning.md +0 -28
  199. package/.claude/commands/agents/agent-types.md +0 -26
  200. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  201. package/.claude/commands/analysis/README.md +0 -9
  202. package/.claude/commands/analysis/bottleneck-detect.md +0 -162
  203. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  204. package/.claude/commands/analysis/performance-report.md +0 -25
  205. package/.claude/commands/analysis/token-efficiency.md +0 -45
  206. package/.claude/commands/analysis/token-usage.md +0 -25
  207. package/.claude/commands/automation/README.md +0 -9
  208. package/.claude/commands/automation/auto-agent.md +0 -122
  209. package/.claude/commands/automation/self-healing.md +0 -106
  210. package/.claude/commands/automation/session-memory.md +0 -90
  211. package/.claude/commands/automation/smart-agents.md +0 -73
  212. package/.claude/commands/automation/smart-spawn.md +0 -25
  213. package/.claude/commands/automation/workflow-select.md +0 -25
  214. package/.claude/commands/claude-md.js +0 -237
  215. package/.claude/commands/claude-soul.js +0 -28
  216. package/.claude/commands/cli-integration.js +0 -216
  217. package/.claude/commands/coordination/README.md +0 -9
  218. package/.claude/commands/coordination/agent-spawn.md +0 -25
  219. package/.claude/commands/coordination/coordination-system.md +0 -88
  220. package/.claude/commands/coordination/init.md +0 -44
  221. package/.claude/commands/coordination/orchestrate.md +0 -43
  222. package/.claude/commands/coordination/spawn.md +0 -45
  223. package/.claude/commands/coordination/swarm-init.md +0 -85
  224. package/.claude/commands/coordination/task-orchestrate.md +0 -25
  225. package/.claude/commands/github/README.md +0 -11
  226. package/.claude/commands/github/code-review-swarm.md +0 -514
  227. package/.claude/commands/github/code-review.md +0 -25
  228. package/.claude/commands/github/github-modes.md +0 -147
  229. package/.claude/commands/github/github-swarm.md +0 -121
  230. package/.claude/commands/github/issue-tracker.md +0 -292
  231. package/.claude/commands/github/issue-triage.md +0 -25
  232. package/.claude/commands/github/multi-repo-swarm.md +0 -519
  233. package/.claude/commands/github/pr-enhance.md +0 -26
  234. package/.claude/commands/github/pr-manager.md +0 -170
  235. package/.claude/commands/github/project-board-sync.md +0 -471
  236. package/.claude/commands/github/release-manager.md +0 -338
  237. package/.claude/commands/github/release-swarm.md +0 -544
  238. package/.claude/commands/github/repo-analyze.md +0 -25
  239. package/.claude/commands/github/repo-architect.md +0 -367
  240. package/.claude/commands/github/swarm-issue.md +0 -482
  241. package/.claude/commands/github/swarm-pr.md +0 -285
  242. package/.claude/commands/github/sync-coordinator.md +0 -301
  243. package/.claude/commands/github/workflow-automation.md +0 -442
  244. package/.claude/commands/github.js +0 -638
  245. package/.claude/commands/hive-mind/README.md +0 -17
  246. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -8
  247. package/.claude/commands/hive-mind/hive-mind-init.md +0 -18
  248. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -8
  249. package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
  250. package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
  251. package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
  252. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -21
  253. package/.claude/commands/hive-mind/hive-mind-status.md +0 -8
  254. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -8
  255. package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
  256. package/.claude/commands/hive-mind/hive-mind.md +0 -27
  257. package/.claude/commands/hooks/README.md +0 -11
  258. package/.claude/commands/hooks/overview.md +0 -58
  259. package/.claude/commands/hooks/post-edit.md +0 -117
  260. package/.claude/commands/hooks/post-task.md +0 -112
  261. package/.claude/commands/hooks/pre-edit.md +0 -113
  262. package/.claude/commands/hooks/pre-task.md +0 -111
  263. package/.claude/commands/hooks/session-end.md +0 -118
  264. package/.claude/commands/hooks/session-start.md +0 -9
  265. package/.claude/commands/hooks/setup.md +0 -103
  266. package/.claude/commands/hooks.js +0 -651
  267. package/.claude/commands/index.js +0 -119
  268. package/.claude/commands/memory/README.md +0 -9
  269. package/.claude/commands/memory/memory-bank.md +0 -58
  270. package/.claude/commands/memory/memory-persist.md +0 -25
  271. package/.claude/commands/memory/memory-search.md +0 -25
  272. package/.claude/commands/memory/memory-usage.md +0 -25
  273. package/.claude/commands/memory/neural.md +0 -47
  274. package/.claude/commands/memory/usage.md +0 -46
  275. package/.claude/commands/monitoring/README.md +0 -9
  276. package/.claude/commands/monitoring/agent-metrics.md +0 -25
  277. package/.claude/commands/monitoring/agents.md +0 -44
  278. package/.claude/commands/monitoring/real-time-view.md +0 -25
  279. package/.claude/commands/monitoring/status.md +0 -46
  280. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  281. package/.claude/commands/neural.js +0 -572
  282. package/.claude/commands/optimization/README.md +0 -9
  283. package/.claude/commands/optimization/auto-topology.md +0 -62
  284. package/.claude/commands/optimization/cache-manage.md +0 -25
  285. package/.claude/commands/optimization/parallel-execute.md +0 -25
  286. package/.claude/commands/optimization/parallel-execution.md +0 -50
  287. package/.claude/commands/optimization/topology-optimize.md +0 -25
  288. package/.claude/commands/pair/README.md +0 -261
  289. package/.claude/commands/pair/commands.md +0 -546
  290. package/.claude/commands/pair/config.md +0 -510
  291. package/.claude/commands/pair/examples.md +0 -512
  292. package/.claude/commands/pair/modes.md +0 -348
  293. package/.claude/commands/pair/session.md +0 -407
  294. package/.claude/commands/pair/start.md +0 -209
  295. package/.claude/commands/parse-epic.js +0 -180
  296. package/.claude/commands/performance.js +0 -582
  297. package/.claude/commands/register-all-commands.js +0 -320
  298. package/.claude/commands/register-claude-md.js +0 -82
  299. package/.claude/commands/register-claude-soul.js +0 -80
  300. package/.claude/commands/sparc/analyzer.md +0 -52
  301. package/.claude/commands/sparc/architect.md +0 -53
  302. package/.claude/commands/sparc/batch-executor.md +0 -54
  303. package/.claude/commands/sparc/coder.md +0 -54
  304. package/.claude/commands/sparc/debugger.md +0 -54
  305. package/.claude/commands/sparc/designer.md +0 -53
  306. package/.claude/commands/sparc/documenter.md +0 -54
  307. package/.claude/commands/sparc/innovator.md +0 -54
  308. package/.claude/commands/sparc/memory-manager.md +0 -54
  309. package/.claude/commands/sparc/optimizer.md +0 -54
  310. package/.claude/commands/sparc/orchestrator.md +0 -132
  311. package/.claude/commands/sparc/researcher.md +0 -54
  312. package/.claude/commands/sparc/reviewer.md +0 -54
  313. package/.claude/commands/sparc/sparc-modes.md +0 -174
  314. package/.claude/commands/sparc/swarm-coordinator.md +0 -54
  315. package/.claude/commands/sparc/tdd.md +0 -54
  316. package/.claude/commands/sparc/tester.md +0 -54
  317. package/.claude/commands/sparc/workflow-manager.md +0 -54
  318. package/.claude/commands/sparc.js +0 -110
  319. package/.claude/commands/stream-chain/pipeline.md +0 -121
  320. package/.claude/commands/stream-chain/run.md +0 -70
  321. package/.claude/commands/swarm/README.md +0 -15
  322. package/.claude/commands/swarm/analysis.md +0 -95
  323. package/.claude/commands/swarm/development.md +0 -96
  324. package/.claude/commands/swarm/examples.md +0 -168
  325. package/.claude/commands/swarm/maintenance.md +0 -102
  326. package/.claude/commands/swarm/optimization.md +0 -117
  327. package/.claude/commands/swarm/research.md +0 -136
  328. package/.claude/commands/swarm/swarm-analysis.md +0 -8
  329. package/.claude/commands/swarm/swarm-background.md +0 -8
  330. package/.claude/commands/swarm/swarm-init.md +0 -19
  331. package/.claude/commands/swarm/swarm-modes.md +0 -8
  332. package/.claude/commands/swarm/swarm-monitor.md +0 -8
  333. package/.claude/commands/swarm/swarm-spawn.md +0 -19
  334. package/.claude/commands/swarm/swarm-status.md +0 -8
  335. package/.claude/commands/swarm/swarm-strategies.md +0 -8
  336. package/.claude/commands/swarm/swarm.md +0 -27
  337. package/.claude/commands/swarm/testing.md +0 -131
  338. package/.claude/commands/swarm.js +0 -423
  339. package/.claude/commands/testing/playwright-e2e.md +0 -288
  340. package/.claude/commands/training/README.md +0 -9
  341. package/.claude/commands/training/model-update.md +0 -25
  342. package/.claude/commands/training/neural-patterns.md +0 -74
  343. package/.claude/commands/training/neural-train.md +0 -25
  344. package/.claude/commands/training/pattern-learn.md +0 -25
  345. package/.claude/commands/training/specialization.md +0 -63
  346. package/.claude/commands/truth/start.md +0 -143
  347. package/.claude/commands/validate-commands.js +0 -223
  348. package/.claude/commands/verify/check.md +0 -50
  349. package/.claude/commands/verify/start.md +0 -128
  350. package/.claude/commands/workflow.js +0 -606
  351. package/.claude/commands/workflows/README.md +0 -9
  352. package/.claude/commands/workflows/development.md +0 -78
  353. package/.claude/commands/workflows/research.md +0 -63
  354. package/.claude/commands/workflows/workflow-create.md +0 -25
  355. package/.claude/commands/workflows/workflow-execute.md +0 -25
  356. package/.claude/commands/workflows/workflow-export.md +0 -25
  357. package/.claude/coordinator-feedback-pattern.md +0 -326
  358. package/.claude/coordinator-patterns.md +0 -126
  359. package/.claude/core/agent-manager.js +0 -80
  360. package/.claude/core/agent-manager.js.map +0 -1
  361. package/.claude/core/config.js +0 -1221
  362. package/.claude/core/config.js.map +0 -1
  363. package/.claude/core/event-bus.js +0 -136
  364. package/.claude/core/event-bus.js.map +0 -1
  365. package/.claude/core/index.js +0 -6
  366. package/.claude/core/index.js.map +0 -1
  367. package/.claude/core/json-persistence.js +0 -112
  368. package/.claude/core/json-persistence.js.map +0 -1
  369. package/.claude/core/logger.js +0 -245
  370. package/.claude/core/logger.js.map +0 -1
  371. package/.claude/core/orchestrator-fixed.js +0 -236
  372. package/.claude/core/orchestrator-fixed.js.map +0 -1
  373. package/.claude/core/orchestrator.js +0 -1136
  374. package/.claude/core/orchestrator.js.map +0 -1
  375. package/.claude/core/persistence.js +0 -185
  376. package/.claude/core/persistence.js.map +0 -1
  377. package/.claude/core/project-manager.js +0 -80
  378. package/.claude/core/project-manager.js.map +0 -1
  379. package/.claude/core/slash-command.js +0 -24
  380. package/.claude/core/version.js +0 -35
  381. package/.claude/core/version.js.map +0 -1
  382. package/.claude/helpers/checkpoint-manager.sh +0 -251
  383. package/.claude/helpers/github-safe.js +0 -106
  384. package/.claude/helpers/github-setup.sh +0 -28
  385. package/.claude/helpers/quick-start.sh +0 -19
  386. package/.claude/helpers/setup-mcp.sh +0 -18
  387. package/.claude/helpers/standard-checkpoint-hooks.sh +0 -179
  388. package/.claude/hooks.json +0 -21
  389. package/.claude/logs/sprint1-hybrid-routing-v2-decision.json +0 -18
  390. package/.claude/redis-agent-dependencies.md +0 -494
  391. package/.claude/root-claude-distribute/CLAUDE.md +0 -428
  392. package/.claude/settings.json +0 -129
  393. package/.claude/settings.local.json +0 -33
  394. package/.claude/skills/CFN-LOOP-VALIDATION.md +0 -202
  395. package/.claude/skills/REDIS-COORDINATION.md +0 -187
  396. package/.claude/skills/SKILL.md +0 -229
  397. package/.claude/skills/ace-system/SKILL.md +0 -364
  398. package/.claude/skills/ace-system/add-bullet.sh +0 -145
  399. package/.claude/skills/ace-system/invoke-context-curate.sh +0 -192
  400. package/.claude/skills/ace-system/invoke-context-inject.sh +0 -166
  401. package/.claude/skills/ace-system/invoke-context-query.sh +0 -127
  402. package/.claude/skills/ace-system/invoke-context-reflect.sh +0 -98
  403. package/.claude/skills/ace-system/invoke-context-stats.sh +0 -188
  404. package/.claude/skills/ace-system/log-merge.sh +0 -67
  405. package/.claude/skills/ace-system/query-reflections.sh +0 -35
  406. package/.claude/skills/ace-system/store-reflection.sh +0 -149
  407. package/.claude/skills/ace-system/test-ace-skill.sh +0 -312
  408. package/.claude/skills/ace-system/update-reflection.sh +0 -41
  409. package/.claude/skills/agent-execution/execute-agent.sh +0 -126
  410. package/.claude/skills/agent-spawning/SKILL.md +0 -135
  411. package/.claude/skills/agent-spawning/agent-selection-guide.md +0 -814
  412. package/.claude/skills/agent-spawning/check-dependencies.sh +0 -30
  413. package/.claude/skills/agent-spawning/spawn-agent.sh +0 -263
  414. package/.claude/skills/agent-spawning/spawn-templates.sh +0 -613
  415. package/.claude/skills/analytics/description-refinement-guide.md +0 -164
  416. package/.claude/skills/analytics/log-skill-invocation.js +0 -122
  417. package/.claude/skills/analytics/run-production-criteria-tests.sh +0 -126
  418. package/.claude/skills/analytics/skill-analytics-dashboard.js +0 -113
  419. package/.claude/skills/analytics/skill-invocation-hook.sh +0 -28
  420. package/.claude/skills/analytics/skill-invocations.sql +0 -58
  421. package/.claude/skills/analytics/test-corpus.json +0 -32
  422. package/.claude/skills/analytics/test-data-generator.js +0 -115
  423. package/.claude/skills/analytics/test-manual-override-rate.js +0 -285
  424. package/.claude/skills/analytics/validate-skill-selection.js +0 -188
  425. package/.claude/skills/cfn-loop-validation/SKILL.md +0 -263
  426. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +0 -31
  427. package/.claude/skills/cfn-loop-validation/config.json +0 -161
  428. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +0 -477
  429. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +0 -163
  430. package/.claude/skills/cfn-loop-validation/examples/README.md +0 -453
  431. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +0 -234
  432. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +0 -132
  433. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +0 -115
  434. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +0 -186
  435. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +0 -252
  436. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +0 -134
  437. package/.claude/skills/cfn-loop-validation.sh +0 -70
  438. package/.claude/skills/config-management/SKILL.md +0 -34
  439. package/.claude/skills/config-management/check-dependencies.sh +0 -56
  440. package/.claude/skills/config-management/config.json +0 -32
  441. package/.claude/skills/config-management/manage-config.sh +0 -113
  442. package/.claude/skills/consensus-calculator.js +0 -45
  443. package/.claude/skills/event-bus/SKILL.md +0 -412
  444. package/.claude/skills/event-bus/config.json +0 -111
  445. package/.claude/skills/event-bus/eventbus-wrapper.cjs +0 -69
  446. package/.claude/skills/event-bus/invoke-event-publish.sh +0 -147
  447. package/.claude/skills/event-bus/invoke-event-subscribe.sh +0 -171
  448. package/.claude/skills/event-bus/invoke-lifecycle-track.sh +0 -201
  449. package/.claude/skills/event-bus/test-event-bus.sh +0 -280
  450. package/.claude/skills/evidence-chain.sql +0 -66
  451. package/.claude/skills/fleet-manager/SKILL.md +0 -412
  452. package/.claude/skills/fleet-manager/config.json +0 -60
  453. package/.claude/skills/fleet-manager/invoke-fleet-allocate.sh +0 -182
  454. package/.claude/skills/fleet-manager/invoke-fleet-balance.sh +0 -239
  455. package/.claude/skills/fleet-manager/invoke-fleet-metrics.sh +0 -193
  456. package/.claude/skills/fleet-manager/invoke-fleet-register.sh +0 -124
  457. package/.claude/skills/fleet-manager/test-fleet-manager.sh +0 -345
  458. package/.claude/skills/hook-pipeline/SKILL.md +0 -148
  459. package/.claude/skills/hook-pipeline/auto-resolve.sh +0 -66
  460. package/.claude/skills/hook-pipeline/check-dependencies.sh +0 -40
  461. package/.claude/skills/hook-pipeline/feedback-resolver.sh +0 -452
  462. package/.claude/skills/hook-pipeline/post-edit-handler.sh +0 -154
  463. package/.claude/skills/hook-pipeline/security-scan.json +0 -60
  464. package/.claude/skills/hook-pipeline/security-scanner.sh +0 -121
  465. package/.claude/skills/hook-pipeline/test-root-warning-resolution.sh +0 -148
  466. package/.claude/skills/hybrid-routing/SKILL.md +0 -46
  467. package/.claude/skills/hybrid-routing/check-dependencies.sh +0 -52
  468. package/.claude/skills/hybrid-routing/config.json +0 -26
  469. package/.claude/skills/hybrid-routing/spawn-worker.sh +0 -44
  470. package/.claude/skills/process-lifecycle/SKILL.md +0 -39
  471. package/.claude/skills/process-lifecycle/check-dependencies.sh +0 -58
  472. package/.claude/skills/process-lifecycle/config.json +0 -39
  473. package/.claude/skills/process-lifecycle/process-manager.sh +0 -144
  474. package/.claude/skills/redis-coordination/AGENT_LOGGING.md +0 -280
  475. package/.claude/skills/redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
  476. package/.claude/skills/redis-coordination/HEARTBEAT.md +0 -57
  477. package/.claude/skills/redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  478. package/.claude/skills/redis-coordination/README.md +0 -64
  479. package/.claude/skills/redis-coordination/SECURITY_REVIEW.md +0 -25
  480. package/.claude/skills/redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  481. package/.claude/skills/redis-coordination/SKILL.md +0 -118
  482. package/.claude/skills/redis-coordination/agent-log.sh +0 -124
  483. package/.claude/skills/redis-coordination/agent-recovery.sh +0 -75
  484. package/.claude/skills/redis-coordination/cancel-swarm.sh +0 -221
  485. package/.claude/skills/redis-coordination/cfn-loop-relaunch.sh +0 -29
  486. package/.claude/skills/redis-coordination/check-dependencies.sh +0 -32
  487. package/.claude/skills/redis-coordination/complete-swarm.sh +0 -75
  488. package/.claude/skills/redis-coordination/config.json +0 -61
  489. package/.claude/skills/redis-coordination/examples/README.md +0 -73
  490. package/.claude/skills/redis-coordination/examples/grafana-dashboard.json +0 -352
  491. package/.claude/skills/redis-coordination/examples/hierarchical-pattern.sh +0 -127
  492. package/.claude/skills/redis-coordination/examples/mesh-pattern.sh +0 -171
  493. package/.claude/skills/redis-coordination/examples/timeout-handling.sh +0 -227
  494. package/.claude/skills/redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  495. package/.claude/skills/redis-coordination/get-agent-timeout.sh +0 -177
  496. package/.claude/skills/redis-coordination/heartbeat-functions.sh +0 -137
  497. package/.claude/skills/redis-coordination/heartbeat-protocol.md +0 -106
  498. package/.claude/skills/redis-coordination/heartbeat.sh +0 -126
  499. package/.claude/skills/redis-coordination/init-swarm.sh +0 -148
  500. package/.claude/skills/redis-coordination/invoke-redis-pattern.sh +0 -220
  501. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +0 -417
  502. package/.claude/skills/redis-coordination/list-active-swarms.sh +0 -147
  503. package/.claude/skills/redis-coordination/metrics-export.sh +0 -674
  504. package/.claude/skills/redis-coordination/metrics-schema.json +0 -66
  505. package/.claude/skills/redis-coordination/metrics-storage.md +0 -31
  506. package/.claude/skills/redis-coordination/monitor-heartbeats.sh +0 -101
  507. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +0 -993
  508. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1760949407 +0 -933
  509. package/.claude/skills/redis-coordination/phase4-wake-queue-test-report.md +0 -82
  510. package/.claude/skills/redis-coordination/priority-wake-mechanism.md +0 -75
  511. package/.claude/skills/redis-coordination/priority_wake.py +0 -134
  512. package/.claude/skills/redis-coordination/query-dlq.sh +0 -162
  513. package/.claude/skills/redis-coordination/redis-pattern.sh +0 -619
  514. package/.claude/skills/redis-coordination/send-heartbeat.sh +0 -73
  515. package/.claude/skills/redis-coordination/store-epic-context.sh +0 -123
  516. package/.claude/skills/redis-coordination/test-bzpopmin-fix.sh +0 -274
  517. package/.claude/skills/redis-coordination/test-cancel-swarm.sh +0 -276
  518. package/.claude/skills/redis-coordination/test-dlq.sh +0 -129
  519. package/.claude/skills/redis-coordination/test-iteration-feedback.sh +0 -320
  520. package/.claude/skills/redis-coordination/test-orchestrator.sh +0 -224
  521. package/.claude/skills/redis-coordination/test-priority-wake-phase4-unix.sh +0 -148
  522. package/.claude/skills/redis-coordination/test-priority-wake-phase4.sh +0 -163
  523. package/.claude/skills/redis-coordination/test-priority-wake.sh +0 -138
  524. package/.claude/skills/redis-coordination/test-quick-fix.sh +0 -81
  525. package/.claude/skills/redis-coordination/test-quorum-absolute.sh +0 -45
  526. package/.claude/skills/redis-coordination/test-quorum-fallback.sh +0 -68
  527. package/.claude/skills/redis-coordination/test-quorum-percentage.sh +0 -56
  528. package/.claude/skills/redis-coordination/test-quorum-with-retry.sh +0 -81
  529. package/.claude/skills/redis-coordination/test-quorum.sh +0 -57
  530. package/.claude/skills/redis-coordination/test-shutdown-handling.sh +0 -187
  531. package/.claude/skills/redis-coordination/test-shutdown.sh +0 -160
  532. package/.claude/skills/redis-coordination/test-utils-unix.sh +0 -97
  533. package/.claude/skills/redis-coordination/test-utils.sh +0 -97
  534. package/.claude/skills/redis-coordination/test-waiting-mode.sh +0 -59
  535. package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +0 -102
  536. package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +0 -99
  537. package/.claude/skills/redis-coordination/tests/integration-test.sh +0 -170
  538. package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +0 -82
  539. package/.claude/skills/redis-coordination/tests/run-test-suite.sh +0 -92
  540. package/.claude/skills/redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  541. package/.claude/skills/redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  542. package/.claude/skills/redis-coordination/tests/test-utils.sh +0 -122
  543. package/.claude/skills/skill-builder/SKILL.md +0 -910
  544. package/.claude/skills/sqlite-memory/IMPLEMENTATION_REPORT.md +0 -393
  545. package/.claude/skills/sqlite-memory/QUICK_REFERENCE.md +0 -204
  546. package/.claude/skills/sqlite-memory/SKILL.md +0 -415
  547. package/.claude/skills/sqlite-memory/acl-queries.sql +0 -452
  548. package/.claude/skills/sqlite-memory/check-dependencies.sh +0 -36
  549. package/.claude/skills/sqlite-memory/config.json +0 -45
  550. package/.claude/skills/sqlite-memory/memory-cli.sh +0 -88
  551. package/.claude/skills/sqlite-memory/test-state-persistence.js +0 -187
  552. package/.claude/skills/sqlite-memory/ttl-cleanup.sh +0 -274
  553. package/.claude/skills/test-execution/SKILL.md +0 -128
  554. package/.claude/skills/test-execution/check-dependencies.sh +0 -36
  555. package/.claude/skills/test-execution/test-cache-reader.sh +0 -134
  556. package/.claude/skills/test-execution/test-concurrent-conflicts.sh +0 -115
  557. package/.claude/skills/test-execution/test-coordinator-pattern.sh +0 -109
  558. package/.claude/skills/test-execution-coordinator-pattern.md +0 -228
  559. package/.claude/skills/transparency-middleware/Cargo.toml +0 -18
  560. package/.claude/skills/transparency-middleware/SECURITY.md +0 -41
  561. package/.claude/skills/transparency-middleware/SKILL.md +0 -91
  562. package/.claude/skills/transparency-middleware/TEST_RESULTS.md +0 -174
  563. package/.claude/skills/transparency-middleware/config.json +0 -31
  564. package/.claude/skills/transparency-middleware/examples/basic-usage.ts +0 -39
  565. package/.claude/skills/transparency-middleware/examples/batch-processing.ts +0 -52
  566. package/.claude/skills/transparency-middleware/examples/custom-filtering.ts +0 -61
  567. package/.claude/skills/transparency-middleware/invoke-transparency-filter.sh +0 -98
  568. package/.claude/skills/transparency-middleware/invoke-transparency-init.sh +0 -224
  569. package/.claude/skills/transparency-middleware/invoke-transparency-level.sh +0 -333
  570. package/.claude/skills/transparency-middleware/invoke-transparency-metrics.sh +0 -345
  571. package/.claude/skills/transparency-middleware/invoke-transparency-observe.sh +0 -140
  572. package/.claude/skills/transparency-middleware/invoke-transparency-stop.sh +0 -235
  573. package/.claude/skills/transparency-middleware/memory_query.rs +0 -85
  574. package/.claude/skills/transparency-middleware/memory_repository.rs +0 -140
  575. package/.claude/skills/transparency-middleware/memory_schema.rs +0 -64
  576. package/.claude/skills/transparency-middleware/middleware-config.sh +0 -29
  577. package/.claude/skills/transparency-middleware/performance-benchmark.sh +0 -79
  578. package/.claude/skills/transparency-middleware/test-e2e.sh +0 -406
  579. package/.claude/skills/transparency-middleware/test-integration.sh +0 -162
  580. package/.claude/skills/transparency-middleware/test-transparency-skill.sh +0 -368
  581. package/.claude/skills/transparency-middleware/test-transparency-skill.sh.unix +0 -126
  582. package/.claude/skills/transparency-middleware/tests/input-validation.sh +0 -93
  583. package/.claude/skills/transparency-middleware/wrap-agent.sh +0 -132
  584. package/.claude/skills/web-portal/DESIGN.md +0 -117
  585. package/.claude/skills/web-portal/SKILL.md +0 -679
  586. package/.claude/skills/web-portal/invoke-portal-agents.sh +0 -129
  587. package/.claude/skills/web-portal/invoke-portal-dashboard.sh +0 -85
  588. package/.claude/skills/web-portal/invoke-portal-events.sh +0 -125
  589. package/.claude/skills/web-portal/invoke-portal-metrics.sh +0 -112
  590. package/.claude/skills/web-portal/invoke-portal-start.sh +0 -135
  591. package/.claude/skills/web-portal/invoke-portal-stop.sh +0 -121
  592. package/.claude/skills/web-portal/test-web-portal-skill.sh +0 -51
  593. package/.claude/skills/web-portal/validate-deployment.sh +0 -85
  594. package/.claude/slash-commands.json +0 -92
  595. package/.claude/spawn-pattern-examples.md +0 -500
  596. package/.claude/sprint-configs/cfn-naming-standardization.json +0 -729
  597. package/.claude/sprint-reports/sprint-1.4-self-correction-monitoring.json +0 -64
  598. package/.claude/swarm-memory.db +0 -0
  599. package/.claude/templates/agent-optimization-plan.md +0 -439
  600. package/.claude/templates/bulk-optimization-strategy.md +0 -367
  601. package/.claude/templates/cfn-loop-mechanics.md +0 -80
  602. package/.claude/templates/coordinator-patterns.md +0 -75
  603. package/.claude/templates/memory-operations.md +0 -200
  604. package/.claude/templates/post-edit-validation.md +0 -109
  605. package/.claude/templates/redis-coordination.md +0 -140
  606. package/.claude/templates/remaining-agent-analysis.md +0 -121
  607. package/.claude/templates/swarm-coordination.md +0 -103
  608. package/.claude/templates/team-dynamics.md +0 -82
  609. package/CLAUDE.md +0 -502
  610. package/dist/cli/cli-agent-context.test.js +0 -451
  611. package/dist/cli/cli-agent-context.test.js.map +0 -1
  612. package/dist/coordination/fleet-manager.test.js +0 -141
  613. package/dist/coordination/fleet-manager.test.js.map +0 -1
  614. package/dist/middleware/transparency-middleware.test.js +0 -184
  615. package/dist/middleware/transparency-middleware.test.js.map +0 -1
  616. package/readme/CLAUDE.md +0 -429
  617. /package/.claude/agents/{core-agents → cfn-dev-team/developers}/researcher.md +0 -0
  618. /package/.claude/commands/{README.md → cfn/README.md} +0 -0
  619. /package/.claude/commands/{auto-compact.md → cfn/auto-compact.md} +0 -0
  620. /package/.claude/commands/{cfn-claude-sync.md → cfn/cfn-claude-sync.md} +0 -0
  621. /package/.claude/commands/{cfn-loop-document.md → cfn/cfn-loop-document.md} +0 -0
  622. /package/.claude/commands/{claude-md.md → cfn/claude-md.md} +0 -0
  623. /package/.claude/commands/{claude-soul.md → cfn/claude-soul.md} +0 -0
  624. /package/.claude/commands/{context-query.md → cfn/context-query.md} +0 -0
  625. /package/.claude/commands/{cost-savings-off.md → cfn/cost-savings-off.md} +0 -0
  626. /package/.claude/commands/{cost-savings-on.md → cfn/cost-savings-on.md} +0 -0
  627. /package/.claude/commands/{cost-savings-status.md → cfn/cost-savings-status.md} +0 -0
  628. /package/.claude/commands/{custom-routing-activate.md → cfn/custom-routing-activate.md} +0 -0
  629. /package/.claude/commands/{custom-routing-deactivate.md → cfn/custom-routing-deactivate.md} +0 -0
  630. /package/.claude/commands/{dependency-recommendations.md → cfn/dependency-recommendations.md} +0 -0
  631. /package/.claude/commands/{fullstack.md → cfn/fullstack.md} +0 -0
  632. /package/.claude/commands/{github-commit.md → cfn/github-commit.md} +0 -0
  633. /package/.claude/commands/{github.md → cfn/github.md} +0 -0
  634. /package/.claude/commands/{hello-world-tests.md → cfn/hello-world-tests.md} +0 -0
  635. /package/.claude/commands/{hooks.md → cfn/hooks.md} +0 -0
  636. /package/.claude/commands/{launch-web-dashboard.md → cfn/launch-web-dashboard.md} +0 -0
  637. /package/.claude/commands/{metrics-summary.md → cfn/metrics-summary.md} +0 -0
  638. /package/.claude/commands/{neural.md → cfn/neural.md} +0 -0
  639. /package/.claude/commands/{parse-epic.md → cfn/parse-epic.md} +0 -0
  640. /package/.claude/commands/{performance.md → cfn/performance.md} +0 -0
  641. /package/.claude/commands/{sparc.md → cfn/sparc.md} +0 -0
  642. /package/.claude/commands/{suggest-improvements.md → cfn/suggest-improvements.md} +0 -0
  643. /package/.claude/commands/{suggest-templates.md → cfn/suggest-templates.md} +0 -0
  644. /package/.claude/commands/{swarm.md → cfn/swarm.md} +0 -0
  645. /package/.claude/commands/{switch-api.md → cfn/switch-api.md} +0 -0
  646. /package/.claude/commands/{workflow.md → cfn/workflow.md} +0 -0
  647. /package/.claude/hooks/{invoke-post-edit.sh → cfn-invoke-post-edit.sh} +0 -0
  648. /package/.claude/hooks/{post-edit.config.json → cfn-post-edit.config.json} +0 -0
  649. /package/.claude/skills/{agent-spawning → cfn-agent-spawning}/README.md +0 -0
  650. /package/.claude/skills/{analytics → cfn-analytics}/README.md +0 -0
  651. /package/.claude/skills/{config-management → cfn-config-management}/README.md +0 -0
  652. /package/.claude/skills/{event-bus → cfn-event-bus}/README.md +0 -0
  653. /package/.claude/skills/{fleet-manager → cfn-fleet-manager}/README.md +0 -0
  654. /package/.claude/skills/{hook-pipeline → cfn-hook-pipeline}/README.md +0 -0
  655. /package/.claude/skills/{hybrid-routing → cfn-hybrid-routing}/README.md +0 -0
  656. /package/.claude/skills/{process-lifecycle → cfn-process-lifecycle}/README.md +0 -0
  657. /package/.claude/skills/{sqlite-memory → cfn-sqlite-memory}/README.md +0 -0
  658. /package/.claude/skills/{test-execution → cfn-test-execution}/README.md +0 -0
  659. /package/.claude/skills/{transparency-middleware → cfn-transparency-middleware}/README.md +0 -0
@@ -1,993 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- ##############################################################################
4
- # CFN Loop Orchestration v2.0.0
5
- # Manages multi-loop CFN execution with dependency tracking and consensus
6
- #
7
- # Usage:
8
- # ./orchestrate-cfn-loop.sh --task-id <id> \
9
- # --mode <mvp|standard|enterprise> \
10
- # --loop3-agents <agent1,agent2,...> \
11
- # --loop2-agents <agent1,agent2,...> \
12
- # --product-owner <agent-id> \
13
- # [--max-iterations <n>] \
14
- # [--min-quorum-loop3 <n|n%|0.n>] \
15
- # [--min-quorum-loop2 <n|n%|0.n>]
16
- #
17
- # CFN Loop Structure (CORRECTED):
18
- # Loop 3 (Primary Swarm - Self Validation)
19
- # ↓
20
- # IF Loop 3 self-validation gate FAILS → RELAUNCH Loop 3 (skip Loop 2)
21
- # IF Loop 3 self-validation gate PASSES → Proceed to Loop 2
22
- # ↓
23
- # Loop 2 (Consensus Validators)
24
- # ↓
25
- # Product Owner Decision
26
- #
27
- # Dependency Enforcement:
28
- # - Loop 3 agents self-validate via confidence scores
29
- # - Gate check determines if Loop 2 validators should be engaged
30
- # - Loop 2 agents WAIT for gate pass signal before starting work
31
- # - Product Owner BLOCKS until all Loop 2 agents signal completion
32
- # - Uses Redis BLPOP for zero-token waiting
33
- #
34
- # Quorum Configuration:
35
- # - Absolute: --min-quorum-loop3 3 (requires exactly 3 agents)
36
- # - Percentage: --min-quorum-loop3 85% (requires 85% of agents)
37
- # - Decimal: --min-quorum-loop3 0.66 (requires 66% of agents)
38
- # - Default: 0.66 (2/3 majority) if not specified
39
- #
40
- # Agent Requirements:
41
- # Loop 3 (Implementers):
42
- # 1. Complete work
43
- # 2. Signal done: redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete"
44
- # 3. Report confidence: invoke-waiting-mode.sh report --confidence <0.0-1.0>
45
- # 4. Enter waiting: invoke-waiting-mode.sh enter (for potential iteration)
46
- #
47
- # Loop 2 (Validators):
48
- # 1. WAIT for gate pass: redis-cli blpop "swarm:${TASK_ID}:gate-passed" 0
49
- # 2. Retrieve Loop 3 results for review
50
- # 3. Perform validation
51
- # 4. Signal done: redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete"
52
- # 5. Report consensus: invoke-waiting-mode.sh report --confidence <0.0-1.0>
53
- # 6. Enter waiting: invoke-waiting-mode.sh enter (for potential iteration)
54
- ##############################################################################
55
-
56
- set -euo pipefail
57
-
58
- # Configuration
59
- TASK_ID=""
60
- MODE="standard"
61
- LOOP3_AGENTS=""
62
- LOOP2_AGENTS=""
63
- PRODUCT_OWNER=""
64
- MAX_ITERATIONS=10
65
- TIMEOUT=3600 # 1 hour timeout for agent completion
66
- RETRY_COUNT=3
67
- RETRY_DELAY=5000 # Base delay in milliseconds
68
- MIN_QUORUM_LOOP3="" # Minimum agents required for Loop 3 (absolute or percentage)
69
- MIN_QUORUM_LOOP2="" # Minimum agents required for Loop 2 (absolute or percentage)
70
- ORCHESTRATOR_PID=$$
71
- SHUTDOWN_MONITOR_PID=""
72
- SHUTDOWN_REQUESTED=0
73
- LOOP3_HEARTBEAT_MONITOR_PID=""
74
- LOOP2_HEARTBEAT_MONITOR_PID=""
75
-
76
- # Thresholds by mode
77
- declare -A GATE_THRESHOLD=(
78
- [mvp]=0.70
79
- [standard]=0.75
80
- [enterprise]=0.75
81
- )
82
-
83
- declare -A CONSENSUS_THRESHOLD=(
84
- [mvp]=0.80
85
- [standard]=0.90
86
- [enterprise]=0.95
87
- )
88
-
89
- # Parse arguments
90
- while [[ $# -gt 0 ]]; do
91
- case $1 in
92
- --task-id)
93
- TASK_ID="$2"
94
- shift 2
95
- ;;
96
- --mode)
97
- MODE="$2"
98
- shift 2
99
- ;;
100
- --loop3-agents)
101
- LOOP3_AGENTS="$2"
102
- shift 2
103
- ;;
104
- --loop2-agents)
105
- LOOP2_AGENTS="$2"
106
- shift 2
107
- ;;
108
- --product-owner)
109
- PRODUCT_OWNER="$2"
110
- shift 2
111
- ;;
112
- --max-iterations)
113
- MAX_ITERATIONS="$2"
114
- shift 2
115
- ;;
116
- --retry-count)
117
- RETRY_COUNT="$2"
118
- shift 2
119
- ;;
120
- --retry-delay)
121
- RETRY_DELAY="$2"
122
- shift 2
123
- ;;
124
- --timeout)
125
- TIMEOUT="$2"
126
- shift 2
127
- ;;
128
- --min-quorum-loop3)
129
- MIN_QUORUM_LOOP3="$2"
130
- shift 2
131
- ;;
132
- --min-quorum-loop2)
133
- MIN_QUORUM_LOOP2="$2"
134
- shift 2
135
- ;;
136
- *)
137
- echo "Unknown option: $1"
138
- exit 1
139
- ;;
140
- esac
141
- done
142
-
143
- # Validation
144
- if [ -z "$TASK_ID" ] || [ -z "$LOOP3_AGENTS" ] || [ -z "$LOOP2_AGENTS" ] || [ -z "$PRODUCT_OWNER" ]; then
145
- echo "Error: Required parameters missing"
146
- echo "Usage: $0 --task-id <id> --mode <mode> --loop3-agents <agents> --loop2-agents <agents> --product-owner <agent>"
147
- exit 1
148
- fi
149
-
150
- GATE=${GATE_THRESHOLD[$MODE]}
151
- CONSENSUS=${CONSENSUS_THRESHOLD[$MODE]}
152
-
153
- # Set default quorum values if not specified (66% = 2/3 majority)
154
- MIN_QUORUM_LOOP3=${MIN_QUORUM_LOOP3:-0.66}
155
- MIN_QUORUM_LOOP2=${MIN_QUORUM_LOOP2:-0.66}
156
-
157
- ##############################################################################
158
- # Shutdown Handling Functions
159
- ##############################################################################
160
- function cleanup_and_exit() {
161
- local exit_code="${1:-130}"
162
- local reason="${2:-user_interrupt}"
163
-
164
- # Set shutdown flag to stop any ongoing operations
165
- SHUTDOWN_REQUESTED=1
166
-
167
- echo ""
168
- echo "=============================================="
169
- echo "🛑 Orchestrator shutting down gracefully..."
170
- echo "=============================================="
171
- echo "Reason: $reason"
172
- echo "Exit Code: $exit_code"
173
-
174
- # Kill shutdown monitor if running
175
- if [ -n "$SHUTDOWN_MONITOR_PID" ] && kill -0 "$SHUTDOWN_MONITOR_PID" 2>/dev/null; then
176
- kill "$SHUTDOWN_MONITOR_PID" 2>/dev/null || true
177
- wait "$SHUTDOWN_MONITOR_PID" 2>/dev/null || true
178
- fi
179
-
180
- # Stop heartbeat monitors if running
181
- if [ -n "${LOOP3_HEARTBEAT_MONITOR_PID:-}" ]; then
182
- echo "Stopping Loop 3 heartbeat monitor..."
183
- stop_heartbeat_monitor "$TASK_ID" "loop3" "$LOOP3_HEARTBEAT_MONITOR_PID"
184
- fi
185
- if [ -n "${LOOP2_HEARTBEAT_MONITOR_PID:-}" ]; then
186
- echo "Stopping Loop 2 heartbeat monitor..."
187
- stop_heartbeat_monitor "$TASK_ID" "loop2" "$LOOP2_HEARTBEAT_MONITOR_PID"
188
- fi
189
-
190
- # Mark swarm as cancelled if initialized
191
- if [ -n "$TASK_ID" ] && [ -n "${SWARM_ID:-}" ]; then
192
- echo "Marking swarm as cancelled..."
193
- ./.claude/skills/redis-coordination/complete-swarm.sh \
194
- --swarm-id "$SWARM_ID" \
195
- --final-metric "status=cancelled" \
196
- --final-metric "shutdown_reason=$reason" 2>/dev/null || echo " ⚠️ Failed to mark swarm as cancelled"
197
- fi
198
-
199
- # Clean up Redis keys
200
- if [ -n "$TASK_ID" ]; then
201
- echo "Cleaning up Redis keys..."
202
- local keys_deleted=$(redis-cli --scan --pattern "swarm:${TASK_ID}:*" | xargs -r redis-cli DEL 2>/dev/null || echo "0")
203
- echo " Deleted $keys_deleted Redis keys"
204
- fi
205
-
206
- # Clean up heartbeat monitor marker files
207
- rm -f /tmp/heartbeat-monitor-${TASK_ID}-*.active 2>/dev/null || true
208
-
209
- echo "=============================================="
210
- echo "Shutdown complete"
211
- echo "=============================================="
212
-
213
- exit "$exit_code"
214
- }
215
-
216
- # Trap SIGTERM and SIGINT for graceful shutdown
217
- trap 'echo "[TRAP] Caught SIGINT" >&2; cleanup_and_exit 130 "SIGINT_received"' SIGINT
218
- trap 'echo "[TRAP] Caught SIGTERM" >&2; cleanup_and_exit 143 "SIGTERM_received"' SIGTERM
219
-
220
- ##############################################################################
221
- # Start Shutdown Monitor (Background Process)
222
- ##############################################################################
223
- function start_shutdown_monitor() {
224
- local task_id="$1"
225
-
226
- (
227
- # Block on shutdown channel (zero-token waiting)
228
- SHUTDOWN_KEY="swarm:${task_id}:shutdown"
229
- SHUTDOWN_RESULT=$(redis-cli BLPOP "$SHUTDOWN_KEY" 0 2>/dev/null || echo "")
230
-
231
- if [ -n "$SHUTDOWN_RESULT" ]; then
232
- # Extract shutdown payload (format: key value)
233
- SHUTDOWN_PAYLOAD=$(echo "$SHUTDOWN_RESULT" | tail -1)
234
- REASON=$(echo "$SHUTDOWN_PAYLOAD" | jq -r '.reason // "external_shutdown"' 2>/dev/null || echo "external_shutdown")
235
-
236
- echo ""
237
- echo "🛑 Shutdown signal received from Redis channel: $REASON"
238
- echo " Sending SIGTERM to orchestrator PID: $ORCHESTRATOR_PID"
239
-
240
- # Send SIGTERM to main orchestrator process
241
- if kill -TERM "$ORCHESTRATOR_PID" 2>/dev/null; then
242
- echo " ✅ SIGTERM sent successfully"
243
- else
244
- echo " ❌ Failed to send SIGTERM (process may have already exited)"
245
- exit 0
246
- fi
247
- fi
248
- ) &
249
-
250
- SHUTDOWN_MONITOR_PID=$!
251
- echo "Shutdown monitor started (PID: $SHUTDOWN_MONITOR_PID)"
252
- }
253
-
254
- ##############################################################################
255
- # Quorum Calculation Function
256
- ##############################################################################
257
- function calculate_quorum() {
258
- local quorum_spec="$1"
259
- local total_agents="$2"
260
-
261
- # If no quorum specified, require all agents
262
- if [ -z "$quorum_spec" ]; then
263
- echo "$total_agents"
264
- return 0
265
- fi
266
-
267
- # Check if percentage format (e.g., "85%")
268
- if [[ "$quorum_spec" =~ %$ ]]; then
269
- # Extract percentage value (remove % suffix)
270
- local pct="${quorum_spec%\%}"
271
- # Calculate: ceil(total_agents * pct / 100)
272
- echo "scale=0; ($total_agents * $pct + 50) / 100" | bc
273
- # Check if decimal (0.0-1.0), treat as fraction
274
- elif [[ "$quorum_spec" =~ ^0?\.[0-9]+$ ]]; then
275
- # Calculate: ceil(total_agents * fraction)
276
- echo "scale=0; ($quorum_spec * $total_agents + 0.5) / 1" | bc
277
- else
278
- # Absolute number - validate it doesn't exceed total
279
- if [ "$quorum_spec" -gt "$total_agents" ]; then
280
- echo "Error: Quorum ($quorum_spec) exceeds total agents ($total_agents)" >&2
281
- return 1
282
- fi
283
- echo "$quorum_spec"
284
- fi
285
- }
286
-
287
- ##############################################################################
288
- # Dead Letter Queue (DLQ) Functions
289
- ##############################################################################
290
- function write_to_dlq() {
291
- local agent="$1"
292
- local reason="$2"
293
- local retry_count="$3"
294
-
295
- DLQ_KEY="swarm:${TASK_ID}:dlq:${agent}"
296
- DLQ_ENTRY=$(jq -n \
297
- --arg reason "$reason" \
298
- --arg retries "$retry_count" \
299
- --arg ts "$(date +%s)" \
300
- '{reason: $reason, retry_count: ($retries | tonumber), timestamp: ($ts | tonumber)}')
301
-
302
- echo "$DLQ_ENTRY" | redis-cli -x LPUSH "$DLQ_KEY" >/dev/null
303
- redis-cli EXPIRE "$DLQ_KEY" 604800 >/dev/null # 7 days TTL
304
-
305
- echo " ❌ $agent → DLQ (reason: $reason, retries: $retry_count)"
306
- }
307
-
308
- ##############################################################################
309
- # Exponential Backoff Retry Function
310
- ##############################################################################
311
- function retry_with_backoff() {
312
- local agent="$1"
313
- local attempt="$2"
314
- local max_retries="$3"
315
- local base_delay="$4"
316
-
317
- # Check for shutdown before sleeping
318
- if [ "$SHUTDOWN_REQUESTED" -eq 1 ]; then
319
- echo " [SHUTDOWN] Skipping backoff delay for $agent" >&2
320
- return 0
321
- fi
322
-
323
- # Exponential backoff: delay = base_delay * (2 ^ attempt)
324
- local delay=$(echo "$base_delay * (2 ^ $attempt)" | bc)
325
- local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
326
-
327
- echo " [$timestamp] [Retry $attempt/$max_retries] Waiting ${delay}ms before retry for $agent..."
328
-
329
- # Use interruptible sleep - sleep in small increments and check for shutdown
330
- local delay_sec=$(echo "scale=3; $delay / 1000" | bc)
331
- local elapsed=0
332
- while (( $(echo "$elapsed < $delay_sec" | bc -l) )); do
333
- # Sleep for 0.5s increments (or remaining time if less)
334
- local remaining=$(echo "$delay_sec - $elapsed" | bc)
335
- local sleep_time=$(echo "if ($remaining < 0.5) $remaining else 0.5" | bc)
336
-
337
- sleep "$sleep_time" &
338
- wait $! 2>/dev/null || return 0 # If wait is interrupted (SIGTERM), return immediately
339
-
340
- elapsed=$(echo "$elapsed + $sleep_time" | bc)
341
-
342
- # Check for shutdown after each sleep increment
343
- if [ "$SHUTDOWN_REQUESTED" -eq 1 ]; then
344
- echo " [SHUTDOWN] Interrupted backoff delay for $agent" >&2
345
- return 0
346
- fi
347
- done
348
- }
349
-
350
- ##############################################################################
351
- # Heartbeat Monitoring Functions
352
- ##############################################################################
353
- declare -A MISSED_HEARTBEATS # Track missed heartbeats per agent
354
-
355
- function check_agent_heartbeat() {
356
- local agent="$1"
357
- local task_id="$2"
358
-
359
- HB_KEY="swarm:${task_id}:${agent}:heartbeat"
360
- HB_DATA=$(redis-cli GET "$HB_KEY" 2>/dev/null || echo "")
361
-
362
- if [ -z "$HB_DATA" ] || [ "$HB_DATA" = "(nil)" ]; then
363
- return 1 # Dead
364
- else
365
- return 0 # Alive
366
- fi
367
- }
368
-
369
- function check_heartbeats_loop() {
370
- local task_id="$1"
371
- local loop_name="$2"
372
- shift 2
373
- local agents=("$@")
374
-
375
- for AGENT in "${agents[@]}"; do
376
- # Skip agents already marked as failed
377
- if [[ " ${LOOP3_FAILED_AGENTS[@]} ${LOOP2_FAILED_AGENTS[@]} " =~ " ${AGENT} " ]]; then
378
- continue
379
- fi
380
-
381
- if ! check_agent_heartbeat "$AGENT" "$task_id"; then
382
- MISSED_HEARTBEATS["$AGENT"]=$((${MISSED_HEARTBEATS["$AGENT"]:-0} + 1))
383
-
384
- if [ ${MISSED_HEARTBEATS["$AGENT"]} -ge 2 ]; then
385
- local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
386
- echo " [$timestamp] [$loop_name] ⚠️ $AGENT appears hung (no heartbeat for 60s)" >&2
387
-
388
- # Determine which loop this agent belongs to and check quorum
389
- if [[ " ${LOOP3_AGENTS} " =~ " ${AGENT} " ]]; then
390
- REMAINING=$((${#LOOP3_COMPLETED_AGENTS[@]}))
391
- REQUIRED=$(calculate_quorum "$MIN_QUORUM_LOOP3" "$LOOP3_TOTAL")
392
- elif [[ " ${LOOP2_AGENTS} " =~ " ${AGENT} " ]]; then
393
- # Safety check: LOOP2_COMPLETED_AGENTS may not be initialized during Loop 3
394
- if [ -z "${LOOP2_COMPLETED_AGENTS+x}" ]; then
395
- continue
396
- fi
397
- REMAINING=$((${#LOOP2_COMPLETED_AGENTS[@]}))
398
- REQUIRED=$(calculate_quorum "$MIN_QUORUM_LOOP2" "$LOOP2_TOTAL")
399
- else
400
- continue
401
- fi
402
-
403
- if [ $REMAINING -ge $REQUIRED ]; then
404
- echo " [$timestamp] [$loop_name] ℹ️ Continuing with quorum (${REMAINING}/${REQUIRED} agents)" >&2
405
- else
406
- echo " [$timestamp] [$loop_name] ⚠️ Cannot meet quorum without $AGENT (${REMAINING}/${REQUIRED})" >&2
407
- fi
408
- fi
409
- else
410
- MISSED_HEARTBEATS["$AGENT"]=0 # Reset counter
411
- fi
412
- done
413
- }
414
-
415
- function start_heartbeat_monitor() {
416
- local task_id="$1"
417
- local loop_name="$2"
418
- shift 2
419
- local agents=("$@")
420
-
421
- # Create marker file for this monitor
422
- local monitor_marker="/tmp/heartbeat-monitor-${task_id}-${loop_name}.active"
423
- touch "$monitor_marker"
424
-
425
- (
426
- while [ -f "$monitor_marker" ]; do
427
- # Check for shutdown
428
- if [ "$SHUTDOWN_REQUESTED" -eq 1 ]; then
429
- break
430
- fi
431
-
432
- check_heartbeats_loop "$task_id" "$loop_name" "${agents[@]}"
433
- sleep 30
434
- done
435
- ) &
436
-
437
- echo "$!" # Return PID
438
- }
439
-
440
- function stop_heartbeat_monitor() {
441
- local task_id="$1"
442
- local loop_name="$2"
443
- local monitor_pid="$3"
444
-
445
- # Remove marker file to stop the monitor loop
446
- rm -f "/tmp/heartbeat-monitor-${task_id}-${loop_name}.active"
447
-
448
- # Kill monitor process if still running
449
- if [ -n "$monitor_pid" ] && kill -0 "$monitor_pid" 2>/dev/null; then
450
- kill "$monitor_pid" 2>/dev/null || true
451
- wait "$monitor_pid" 2>/dev/null || true
452
- fi
453
- }
454
-
455
- ##############################################################################
456
- # Get Agent-Specific Timeout
457
- ##############################################################################
458
- function get_agent_timeout() {
459
- local agent="$1"
460
- local task_id="$2"
461
-
462
- # Use get-agent-timeout.sh helper script
463
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
464
- AGENT_TIMEOUT=$("$SCRIPT_DIR/get-agent-timeout.sh" --task-id "$task_id" --agent-id "$agent" 2>/dev/null || echo "$TIMEOUT")
465
-
466
- echo "$AGENT_TIMEOUT"
467
- }
468
-
469
- ##############################################################################
470
- # BLPOP with Retry Logic
471
- ##############################################################################
472
- function blpop_with_retry() {
473
- local agent="$1"
474
- local done_key="$2"
475
- local timeout="$3"
476
- local retry_count="$4"
477
- local retry_delay="$5"
478
-
479
- for ATTEMPT in $(seq 1 $retry_count); do
480
- # Check for shutdown before attempting BLPOP
481
- if [ "$SHUTDOWN_REQUESTED" -eq 1 ]; then
482
- echo " [SHUTDOWN] Aborting BLPOP for $agent" >&2
483
- return 1
484
- fi
485
-
486
- # Use Redis's native BLPOP timeout instead of shell timeout command
487
- # This allows SIGTERM to properly interrupt the process
488
- RESULT=$(redis-cli blpop "$done_key" "$timeout" 2>/dev/null || echo "")
489
-
490
- if [ -n "$RESULT" ]; then
491
- echo "$RESULT"
492
- return 0 # Success
493
- fi
494
-
495
- # Check for shutdown after BLPOP timeout
496
- if [ "$SHUTDOWN_REQUESTED" -eq 1 ]; then
497
- echo " [SHUTDOWN] Aborting retry for $agent" >&2
498
- return 1
499
- fi
500
-
501
- # Log retry attempt (to stderr so it's visible during command substitution)
502
- local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
503
- echo " [$timestamp] ⚠️ BLPOP attempt $ATTEMPT/$retry_count failed for $agent" >&2
504
-
505
- if [ $ATTEMPT -lt $retry_count ]; then
506
- # METRICS: Increment retry counter
507
- redis-cli INCR "swarm:${TASK_ID}:metrics:retry_count" >/dev/null
508
-
509
- retry_with_backoff "$agent" "$ATTEMPT" "$retry_count" "$retry_delay" >&2
510
- else
511
- # Final failure - write to DLQ
512
- echo " [$timestamp] ❌ FINAL FAILURE: $agent after $retry_count attempts" >&2
513
- write_to_dlq "$agent" "timeout_after_retries" "$retry_count"
514
- return 1
515
- fi
516
- done
517
-
518
- return 1
519
- }
520
-
521
- echo "=== CFN Loop Orchestration ==="
522
- echo "Task ID: $TASK_ID"
523
- echo "Mode: $MODE (Gate: $GATE, Consensus: $CONSENSUS)"
524
- echo "Max Iterations: $MAX_ITERATIONS"
525
- echo ""
526
-
527
- # Initialize swarm using general Redis coordination primitive
528
- SWARM_ID="swarm-${TASK_ID}"
529
- ALL_AGENTS="${LOOP3_AGENTS},${LOOP2_AGENTS},${PRODUCT_OWNER}"
530
-
531
- # Build CFN-specific metadata
532
- CFN_METADATA=$(cat <<EOF
533
- {
534
- "mode": "$MODE",
535
- "loop3_agents": "$LOOP3_AGENTS",
536
- "loop2_agents": "$LOOP2_AGENTS",
537
- "product_owner": "$PRODUCT_OWNER",
538
- "workflow_type": "cfn_loop"
539
- }
540
- EOF
541
- )
542
-
543
- # Use general init-swarm primitive
544
- ./.claude/skills/redis-coordination/init-swarm.sh \
545
- --swarm-id "$SWARM_ID" \
546
- --agents "$ALL_AGENTS" \
547
- --task-id "$TASK_ID" \
548
- --topology "hierarchical" \
549
- --metadata "$CFN_METADATA" > /dev/null
550
-
551
- # Start shutdown monitor in background
552
- start_shutdown_monitor "$TASK_ID"
553
-
554
- echo ""
555
-
556
- # Iteration loop
557
- for ITERATION in $(seq 1 $MAX_ITERATIONS); do
558
- echo "=== Iteration $ITERATION/$MAX_ITERATIONS ==="
559
-
560
- # METRICS: Iteration start timestamp
561
- ITERATION_START=$(date +%s%N | cut -b1-13) # milliseconds
562
- redis-cli LPUSH "swarm:${TASK_ID}:metrics:iteration_start" "$ITERATION_START" >/dev/null
563
-
564
- # Step 1: Spawn Loop 3 agents via CLI
565
- echo "[Loop 3] Spawning implementers via CLI..."
566
- IFS=',' read -ra AGENTS <<< "$LOOP3_AGENTS"
567
-
568
- for AGENT in "${AGENTS[@]}"; do
569
- echo " Spawning: npx cfn-spawn agent $AGENT --task-id $TASK_ID --iteration $ITERATION"
570
-
571
- # Spawn agent in background via CLI (using cfn-spawn pattern)
572
- npx cfn-spawn agent "$AGENT" \
573
- --task-id "$TASK_ID" \
574
- --iteration "$ITERATION" \
575
- --context "Loop 3 implementation" \
576
- --mode "$MODE" &
577
-
578
- AGENT_PID=$!
579
- echo " ✅ Spawned $AGENT (PID: $AGENT_PID)"
580
- done
581
-
582
- echo ""
583
-
584
- # Step 2: Wait for Loop 3 agents to complete
585
- echo "[Loop 3] Waiting for implementers to complete..."
586
-
587
- LOOP3_TOTAL=${#AGENTS[@]}
588
- LOOP3_REQUIRED=$(calculate_quorum "$MIN_QUORUM_LOOP3" "$LOOP3_TOTAL")
589
- LOOP3_COMPLETED_AGENTS=()
590
- LOOP3_FAILED_AGENTS=()
591
-
592
- echo "[Loop 3] Quorum: $LOOP3_REQUIRED/$LOOP3_TOTAL agents required"
593
-
594
- # Start Loop 3 heartbeat monitor
595
- echo "[Loop 3] Starting heartbeat monitor (checking every 30s)..."
596
- LOOP3_HEARTBEAT_MONITOR_PID=$(start_heartbeat_monitor "$TASK_ID" "loop3" "${AGENTS[@]}")
597
-
598
- for AGENT in "${AGENTS[@]}"; do
599
- DONE_KEY="swarm:${TASK_ID}:${AGENT}:done"
600
-
601
- # Get agent-specific timeout
602
- AGENT_TIMEOUT=$(get_agent_timeout "$AGENT" "$TASK_ID")
603
- echo " Waiting for $AGENT (timeout: ${AGENT_TIMEOUT}s)..."
604
-
605
- # METRICS: Agent latency start
606
- AGENT_START=$(date +%s%N | cut -b1-13)
607
-
608
- # BLPOP with retry logic using agent-specific timeout
609
- if RESULT=$(blpop_with_retry "$AGENT" "$DONE_KEY" "$AGENT_TIMEOUT" "$RETRY_COUNT" "$RETRY_DELAY"); then
610
- # METRICS: Agent latency end
611
- AGENT_END=$(date +%s%N | cut -b1-13)
612
- LATENCY=$((AGENT_END - AGENT_START))
613
-
614
- # Store latency metric with agent label and loop context
615
- METRIC=$(jq -nc \
616
- --arg agent "$AGENT" \
617
- --arg latency "$LATENCY" \
618
- --arg loop "loop3" \
619
- --arg iteration "$ITERATION" \
620
- '{agent: $agent, latency_ms: ($latency | tonumber), loop: $loop, iteration: ($iteration | tonumber)}')
621
- echo "$METRIC" | redis-cli -x LPUSH "swarm:${TASK_ID}:metrics:agent_latency" >/dev/null
622
-
623
- echo " ✅ $AGENT complete (${LATENCY}ms)"
624
- LOOP3_COMPLETED_AGENTS+=("$AGENT")
625
- else
626
- echo " ❌ $AGENT failed after $RETRY_COUNT retry attempts"
627
- LOOP3_FAILED_AGENTS+=("$AGENT")
628
-
629
- # METRICS: Increment timeout counter
630
- redis-cli INCR "swarm:${TASK_ID}:metrics:timeout_count" >/dev/null
631
- fi
632
- done
633
-
634
- # Stop Loop 3 heartbeat monitor
635
- echo "[Loop 3] Stopping heartbeat monitor..."
636
- stop_heartbeat_monitor "$TASK_ID" "loop3" "$LOOP3_HEARTBEAT_MONITOR_PID"
637
- LOOP3_HEARTBEAT_MONITOR_PID=""
638
-
639
- # Validate quorum
640
- if [ ${#LOOP3_COMPLETED_AGENTS[@]} -ge "$LOOP3_REQUIRED" ]; then
641
- echo "[Loop 3] ✅ Quorum met: ${#LOOP3_COMPLETED_AGENTS[@]}/$LOOP3_REQUIRED agents completed"
642
- if [ ${#LOOP3_FAILED_AGENTS[@]} -gt 0 ]; then
643
- echo "[Loop 3] ⚠️ Failed agents (continuing with quorum): ${LOOP3_FAILED_AGENTS[*]}"
644
-
645
- # METRICS: Increment quorum fallback counter
646
- redis-cli INCR "swarm:${TASK_ID}:metrics:quorum_fallback" >/dev/null
647
- fi
648
- else
649
- echo "[Loop 3] ❌ Quorum FAILED: ${#LOOP3_COMPLETED_AGENTS[@]} < $LOOP3_REQUIRED"
650
- echo "[Loop 3] Failed agents: ${LOOP3_FAILED_AGENTS[*]}"
651
- exit 1
652
- fi
653
- echo ""
654
-
655
- # Step 2: Collect Loop 3 confidence scores (only from completed agents)
656
- echo "[Loop 3] Collecting confidence scores from ${#LOOP3_COMPLETED_AGENTS[@]} agents..."
657
- LOOP3_COMPLETED_IDS=$(IFS=','; echo "${LOOP3_COMPLETED_AGENTS[*]}")
658
- LOOP3_CONSENSUS=$(./.claude/skills/redis-coordination/invoke-waiting-mode.sh collect \
659
- --task-id "$TASK_ID" \
660
- --agent-ids "$LOOP3_COMPLETED_IDS" | tail -1)
661
-
662
- echo "[Loop 3] Average confidence: $LOOP3_CONSENSUS (from ${#LOOP3_COMPLETED_AGENTS[@]}/${LOOP3_TOTAL} agents)"
663
-
664
- # METRICS: Store Loop 3 consensus score
665
- LOOP3_METRIC=$(jq -nc \
666
- --arg consensus "$LOOP3_CONSENSUS" \
667
- --arg iteration "$ITERATION" \
668
- '{consensus: ($consensus | tonumber), iteration: ($iteration | tonumber)}')
669
- echo "$LOOP3_METRIC" | redis-cli -x LPUSH "swarm:${TASK_ID}:metrics:loop3_consensus" >/dev/null
670
-
671
- # Gate check
672
- if (( $(echo "$LOOP3_CONSENSUS < $GATE" | bc -l) )); then
673
- echo "❌ Gate FAILED ($LOOP3_CONSENSUS < $GATE)"
674
- echo "Decision: RELAUNCH iteration $((ITERATION + 1))"
675
-
676
- # METRICS: Increment gate failure counter
677
- redis-cli INCR "swarm:${TASK_ID}:metrics:gate_failures" >/dev/null
678
-
679
- # Wake Loop 3 agents for next iteration with MEDIUM priority (priority=30)
680
- IFS=',' read -ra AGENTS <<< "$LOOP3_AGENTS"
681
- for AGENT in "${AGENTS[@]}"; do
682
- ./.claude/skills/redis-coordination/invoke-waiting-mode.sh wake \
683
- --task-id "$TASK_ID" \
684
- --agent-id "$AGENT" \
685
- --priority 30 \
686
- --reason "gate_failed" \
687
- --iteration $((ITERATION + 1)) \
688
- --feedback "Improve confidence from $LOOP3_CONSENSUS to >$GATE"
689
- done
690
-
691
- continue # Next iteration
692
- fi
693
-
694
- echo "✅ Gate PASSED ($LOOP3_CONSENSUS >= $GATE)"
695
- echo ""
696
-
697
- # Signal Loop 2 validators that gate has passed (they can start work)
698
- GATE_PASS_KEY="swarm:${TASK_ID}:gate-passed"
699
- redis-cli lpush "$GATE_PASS_KEY" "{\"iteration\": $ITERATION, \"loop3_confidence\": $LOOP3_CONSENSUS}" > /dev/null
700
- echo "[Loop 3] Gate pass signal sent to Loop 2 validators"
701
- echo ""
702
-
703
- # Step 3: Spawn Loop 2 validators via CLI
704
- echo "[Loop 2] Spawning validators via CLI..."
705
- IFS=',' read -ra VALIDATORS <<< "$LOOP2_AGENTS"
706
-
707
- for VALIDATOR in "${VALIDATORS[@]}"; do
708
- echo " Spawning: npx cfn-spawn agent $VALIDATOR --task-id $TASK_ID --iteration $ITERATION"
709
-
710
- # Spawn validator in background via CLI (using cfn-spawn pattern)
711
- npx cfn-spawn agent "$VALIDATOR" \
712
- --task-id "$TASK_ID" \
713
- --iteration "$ITERATION" \
714
- --context "Loop 2 validation" \
715
- --mode "$MODE" &
716
-
717
- VALIDATOR_PID=$!
718
- echo " ✅ Spawned $VALIDATOR (PID: $VALIDATOR_PID)"
719
- done
720
-
721
- echo ""
722
-
723
- # Step 4: Wait for Loop 2 validators to complete
724
- echo "[Loop 2] Waiting for validators to complete..."
725
-
726
- LOOP2_TOTAL=${#VALIDATORS[@]}
727
- LOOP2_REQUIRED=$(calculate_quorum "$MIN_QUORUM_LOOP2" "$LOOP2_TOTAL")
728
- LOOP2_COMPLETED_AGENTS=()
729
- LOOP2_FAILED_AGENTS=()
730
-
731
- echo "[Loop 2] Quorum: $LOOP2_REQUIRED/$LOOP2_TOTAL agents required"
732
-
733
- # Start Loop 2 heartbeat monitor
734
- echo "[Loop 2] Starting heartbeat monitor (checking every 30s)..."
735
- LOOP2_HEARTBEAT_MONITOR_PID=$(start_heartbeat_monitor "$TASK_ID" "loop2" "${VALIDATORS[@]}")
736
-
737
- for VALIDATOR in "${VALIDATORS[@]}"; do
738
- DONE_KEY="swarm:${TASK_ID}:${VALIDATOR}:done"
739
-
740
- # Get agent-specific timeout
741
- AGENT_TIMEOUT=$(get_agent_timeout "$VALIDATOR" "$TASK_ID")
742
- echo " Waiting for $VALIDATOR (timeout: ${AGENT_TIMEOUT}s)..."
743
-
744
- # METRICS: Agent latency start
745
- AGENT_START=$(date +%s%N | cut -b1-13)
746
-
747
- # BLPOP with retry logic using agent-specific timeout
748
- if RESULT=$(blpop_with_retry "$VALIDATOR" "$DONE_KEY" "$AGENT_TIMEOUT" "$RETRY_COUNT" "$RETRY_DELAY"); then
749
- # METRICS: Agent latency end
750
- AGENT_END=$(date +%s%N | cut -b1-13)
751
- LATENCY=$((AGENT_END - AGENT_START))
752
-
753
- # Store latency metric with agent label and loop context
754
- METRIC=$(jq -nc \
755
- --arg agent "$VALIDATOR" \
756
- --arg latency "$LATENCY" \
757
- --arg loop "loop2" \
758
- --arg iteration "$ITERATION" \
759
- '{agent: $agent, latency_ms: ($latency | tonumber), loop: $loop, iteration: ($iteration | tonumber)}')
760
- echo "$METRIC" | redis-cli -x LPUSH "swarm:${TASK_ID}:metrics:agent_latency" >/dev/null
761
-
762
- echo " ✅ $VALIDATOR complete (${LATENCY}ms)"
763
- LOOP2_COMPLETED_AGENTS+=("$VALIDATOR")
764
- else
765
- echo " ❌ $VALIDATOR failed after $RETRY_COUNT retry attempts"
766
- LOOP2_FAILED_AGENTS+=("$VALIDATOR")
767
-
768
- # METRICS: Increment timeout counter
769
- redis-cli INCR "swarm:${TASK_ID}:metrics:timeout_count" >/dev/null
770
- fi
771
- done
772
-
773
- # Stop Loop 2 heartbeat monitor
774
- echo "[Loop 2] Stopping heartbeat monitor..."
775
- stop_heartbeat_monitor "$TASK_ID" "loop2" "$LOOP2_HEARTBEAT_MONITOR_PID"
776
- LOOP2_HEARTBEAT_MONITOR_PID=""
777
-
778
- # Validate quorum
779
- if [ ${#LOOP2_COMPLETED_AGENTS[@]} -ge "$LOOP2_REQUIRED" ]; then
780
- echo "[Loop 2] ✅ Quorum met: ${#LOOP2_COMPLETED_AGENTS[@]}/$LOOP2_REQUIRED agents completed"
781
- if [ ${#LOOP2_FAILED_AGENTS[@]} -gt 0 ]; then
782
- echo "[Loop 2] ⚠️ Failed agents (continuing with quorum): ${LOOP2_FAILED_AGENTS[*]}"
783
-
784
- # METRICS: Increment quorum fallback counter
785
- redis-cli INCR "swarm:${TASK_ID}:metrics:quorum_fallback" >/dev/null
786
- fi
787
- else
788
- echo "[Loop 2] ❌ Quorum FAILED: ${#LOOP2_COMPLETED_AGENTS[@]} < $LOOP2_REQUIRED"
789
- echo "[Loop 2] Failed agents: ${LOOP2_FAILED_AGENTS[*]}"
790
- exit 1
791
- fi
792
- echo ""
793
-
794
- # Step 4: Collect Loop 2 consensus scores and feedback (only from completed agents)
795
- echo "[Loop 2] Collecting consensus scores from ${#LOOP2_COMPLETED_AGENTS[@]} agents..."
796
- LOOP2_COMPLETED_IDS=$(IFS=','; echo "${LOOP2_COMPLETED_AGENTS[*]}")
797
-
798
- # Capture full output to extract both consensus and feedback
799
- COLLECT_OUTPUT=$(./.claude/skills/redis-coordination/invoke-waiting-mode.sh collect \
800
- --task-id "$TASK_ID" \
801
- --agent-ids "$LOOP2_COMPLETED_IDS")
802
-
803
- LOOP2_CONSENSUS=$(echo "$COLLECT_OUTPUT" | tail -1)
804
-
805
- # Extract aggregated feedback from collect output
806
- LOOP2_FEEDBACK=""
807
- if echo "$COLLECT_OUTPUT" | grep -q "Aggregated Feedback"; then
808
- LOOP2_FEEDBACK=$(echo "$COLLECT_OUTPUT" | sed -n '/Aggregated Feedback/,/Consensus:/p' | grep '^\s*-' | sed 's/^\s*-\s*//' | paste -sd ',' -)
809
- fi
810
-
811
- echo "[Loop 2] Average consensus: $LOOP2_CONSENSUS (from ${#LOOP2_COMPLETED_AGENTS[@]}/${LOOP2_TOTAL} agents)"
812
-
813
- # METRICS: Store Loop 2 consensus score
814
- LOOP2_METRIC=$(jq -nc \
815
- --arg consensus "$LOOP2_CONSENSUS" \
816
- --arg iteration "$ITERATION" \
817
- '{consensus: ($consensus | tonumber), iteration: ($iteration | tonumber)}')
818
- echo "$LOOP2_METRIC" | redis-cli -x LPUSH "swarm:${TASK_ID}:metrics:loop2_consensus" >/dev/null
819
-
820
- # SPRINT 3 - Phase 2: Store iteration results for all agents
821
- echo "[Coordinator] Storing iteration results for history..."
822
- IFS=',' read -ra ALL_AGENTS_ARRAY <<< "$LOOP3_AGENTS,$LOOP2_AGENTS"
823
- for AGENT in "${ALL_AGENTS_ARRAY[@]}"; do
824
- # Get agent's confidence score
825
- AGENT_CONFIDENCE=$(redis-cli get "swarm:${TASK_ID}:${AGENT}:confidence:iteration-${ITERATION}" || echo "0")
826
- if [ "$AGENT_CONFIDENCE" = "(nil)" ]; then
827
- AGENT_CONFIDENCE="0"
828
- fi
829
-
830
- # Get agent's result/output (try multiple possible keys)
831
- AGENT_RESULT=$(redis-cli get "swarm:${TASK_ID}:${AGENT}:output" || echo "")
832
- if [ "$AGENT_RESULT" = "(nil)" ] || [ -z "$AGENT_RESULT" ]; then
833
- AGENT_RESULT="Completed iteration $ITERATION"
834
- fi
835
-
836
- # Store result with metadata
837
- RESULT_DATA=$(jq -nc \
838
- --arg result "$AGENT_RESULT" \
839
- --arg confidence "$AGENT_CONFIDENCE" \
840
- --arg iteration "$ITERATION" \
841
- --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
842
- '{result: $result, confidence: ($confidence | tonumber), iteration: ($iteration | tonumber), timestamp: $timestamp}')
843
-
844
- echo "$RESULT_DATA" | redis-cli -x setex "swarm:${TASK_ID}:${AGENT}:result:iteration-${ITERATION}" 86400 >/dev/null
845
-
846
- # Store feedback if available (from Loop 2 validators)
847
- if [ -n "$LOOP2_FEEDBACK" ]; then
848
- FEEDBACK_DATA=$(jq -nc \
849
- --arg feedback "$LOOP2_FEEDBACK" \
850
- --arg iteration "$ITERATION" \
851
- --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
852
- '{feedback: $feedback, iteration: ($iteration | tonumber), timestamp: $timestamp}')
853
- echo "$FEEDBACK_DATA" | redis-cli -x setex "swarm:${TASK_ID}:${AGENT}:feedback:iteration-${ITERATION}" 86400 >/dev/null
854
- fi
855
- done
856
- echo "[Coordinator] Iteration results stored for ${#ALL_AGENTS_ARRAY[@]} agents"
857
-
858
- # Consensus check
859
- if (( $(echo "$LOOP2_CONSENSUS >= $CONSENSUS" | bc -l) )); then
860
- echo "✅ CONSENSUS REACHED ($LOOP2_CONSENSUS >= $CONSENSUS)"
861
- echo ""
862
-
863
- # Wake Product Owner with CRITICAL priority (priority=5)
864
- echo "[Coordinator] Waking Product Owner with CRITICAL priority..."
865
- ./.claude/skills/redis-coordination/invoke-waiting-mode.sh wake \
866
- --task-id "$TASK_ID" \
867
- --agent-id "$PRODUCT_OWNER" \
868
- --priority 5 \
869
- --reason "consensus_ready" \
870
- --iteration "$ITERATION" \
871
- --feedback "Loop 2 consensus: $LOOP2_CONSENSUS"
872
-
873
- # Wait for Product Owner decision
874
- echo "[Product Owner] Waiting for GOAP decision..."
875
- DECISION_KEY="swarm:${TASK_ID}:${PRODUCT_OWNER}:decision"
876
-
877
- # Get agent-specific timeout for Product Owner
878
- PO_TIMEOUT=$(get_agent_timeout "$PRODUCT_OWNER" "$TASK_ID")
879
- echo "[Product Owner] Using timeout: ${PO_TIMEOUT}s"
880
-
881
- # BLPOP with retry logic for decision using agent-specific timeout
882
- if ! DECISION_RESULT=$(blpop_with_retry "$PRODUCT_OWNER" "$DECISION_KEY" "$PO_TIMEOUT" "$RETRY_COUNT" "$RETRY_DELAY"); then
883
- echo "❌ ERROR: Product Owner failed after $RETRY_COUNT retry attempts"
884
- exit 1
885
- fi
886
-
887
- # Extract decision from BLPOP result (format: key value)
888
- DECISION=$(echo "$DECISION_RESULT" | tail -1)
889
-
890
- DECISION_TYPE=$(echo "$DECISION" | jq -r '.decision')
891
-
892
- echo "[Product Owner] Decision: $DECISION_TYPE"
893
-
894
- if [ "$DECISION_TYPE" = "PROCEED" ]; then
895
- echo ""
896
- echo "🎉 CFN Loop Complete!"
897
- echo "Final Consensus: $LOOP2_CONSENSUS (Iteration $ITERATION)"
898
-
899
- # METRICS: Iteration end timestamp and duration
900
- ITERATION_END=$(date +%s%N | cut -b1-13)
901
- ITERATION_DURATION=$((ITERATION_END - ITERATION_START))
902
-
903
- # Store final iteration duration metric
904
- DURATION_METRIC=$(jq -nc \
905
- --arg duration "$ITERATION_DURATION" \
906
- --arg iteration "$ITERATION" \
907
- '{duration_ms: ($duration | tonumber), iteration: ($iteration | tonumber)}')
908
- echo "$DURATION_METRIC" | redis-cli -x LPUSH "swarm:${TASK_ID}:metrics:iteration_duration" >/dev/null
909
-
910
- # Wake all agents with completion signal - CRITICAL priority (priority=5)
911
- echo "[Coordinator] Waking all agents with CRITICAL priority for completion..."
912
- IFS=',' read -ra ALL_AGENTS <<< "$LOOP3_AGENTS,$LOOP2_AGENTS"
913
- for AGENT in "${ALL_AGENTS[@]}"; do
914
- ./.claude/skills/redis-coordination/invoke-waiting-mode.sh wake \
915
- --task-id "$TASK_ID" \
916
- --agent-id "$AGENT" \
917
- --priority 5 \
918
- --reason "cfn_complete" \
919
- --iteration "$ITERATION"
920
- done
921
-
922
- # Use general complete-swarm primitive
923
- ./.claude/skills/redis-coordination/complete-swarm.sh \
924
- --swarm-id "$SWARM_ID" \
925
- --final-metric "final_consensus=$LOOP2_CONSENSUS" \
926
- --final-metric "total_iterations=$ITERATION" > /dev/null
927
-
928
- exit 0
929
- fi
930
-
931
- else
932
- echo "⚠️ CONSENSUS NOT REACHED ($LOOP2_CONSENSUS < $CONSENSUS)"
933
- echo "Decision: RELAUNCH iteration $((ITERATION + 1))"
934
- echo ""
935
- fi
936
-
937
- # METRICS: Iteration end timestamp and duration (for relaunch scenario)
938
- ITERATION_END=$(date +%s%N | cut -b1-13)
939
- ITERATION_DURATION=$((ITERATION_END - ITERATION_START))
940
-
941
- # Store iteration duration metric
942
- DURATION_METRIC=$(jq -nc \
943
- --arg duration "$ITERATION_DURATION" \
944
- --arg iteration "$ITERATION" \
945
- '{duration_ms: ($duration | tonumber), iteration: ($iteration | tonumber)}')
946
- echo "$DURATION_METRIC" | redis-cli -x LPUSH "swarm:${TASK_ID}:metrics:iteration_duration" >/dev/null
947
-
948
- # Relaunch next iteration
949
- if [ $ITERATION -eq $MAX_ITERATIONS ]; then
950
- echo "❌ Maximum iterations ($MAX_ITERATIONS) reached without consensus"
951
- exit 1
952
- fi
953
-
954
- # Wake agents for next iteration with role-based priorities and specific feedback
955
- echo "[Coordinator] Waking agents for iteration $((ITERATION + 1)) with priorities and feedback..."
956
-
957
- # Build feedback message for Loop 3 implementers
958
- LOOP3_FEEDBACK="Improve consensus from $LOOP2_CONSENSUS to >=$CONSENSUS"
959
- if [ -n "$LOOP2_FEEDBACK" ]; then
960
- # Include specific validator feedback
961
- LOOP3_FEEDBACK="$LOOP3_FEEDBACK,$LOOP2_FEEDBACK"
962
- echo "[Coordinator] Passing validator feedback to Loop 3: $(echo "$LOOP2_FEEDBACK" | tr ',' '\n' | wc -l) items"
963
- fi
964
-
965
- # Wake Loop 3 implementers with MEDIUM priority (priority=30)
966
- IFS=',' read -ra LOOP3_ARRAY <<< "$LOOP3_AGENTS"
967
- for AGENT in "${LOOP3_ARRAY[@]}"; do
968
- ./.claude/skills/redis-coordination/invoke-waiting-mode.sh wake \
969
- --task-id "$TASK_ID" \
970
- --agent-id "$AGENT" \
971
- --priority 30 \
972
- --reason "cfn_loop_iteration" \
973
- --iteration $((ITERATION + 1)) \
974
- --feedback "$LOOP3_FEEDBACK"
975
- done
976
-
977
- # Wake Loop 2 validators with HIGH priority (priority=10)
978
- IFS=',' read -ra LOOP2_ARRAY <<< "$LOOP2_AGENTS"
979
- for AGENT in "${LOOP2_ARRAY[@]}"; do
980
- ./.claude/skills/redis-coordination/invoke-waiting-mode.sh wake \
981
- --task-id "$TASK_ID" \
982
- --agent-id "$AGENT" \
983
- --priority 10 \
984
- --reason "cfn_loop_iteration" \
985
- --iteration $((ITERATION + 1)) \
986
- --feedback "Re-validate iteration $((ITERATION + 1)) work against threshold >=$CONSENSUS"
987
- done
988
-
989
- echo ""
990
- done
991
-
992
- echo "❌ CFN Loop failed after $MAX_ITERATIONS iterations"
993
- exit 1