claude-flow-novice 2.5.2 → 2.8.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 (370) hide show
  1. package/.claude/adaptive-context/cfn-v3-reflection.json +21 -0
  2. package/.claude/agents/AGENT_LIFECYCLE.md +495 -0
  3. package/.claude/agents/CLAUDE.md +1002 -1233
  4. package/.claude/agents/accessibility-advocate.md +457 -0
  5. package/.claude/agents/agent-principles/README.md +226 -226
  6. package/.claude/agents/agent-principles/agent-type-guidelines.md +10 -0
  7. package/.claude/agents/agent-principles/format-selection.md +10 -0
  8. package/.claude/agents/agent-principles/phase4-template-optimization.md +502 -494
  9. package/.claude/agents/agent-principles/prompt-engineering.md +8 -0
  10. package/.claude/agents/agent-principles/quality-metrics.md +8 -0
  11. package/.claude/agents/analysis/code-analyzer.md +7 -17
  12. package/.claude/agents/analysis/code-review/analyze-code-quality.md +2 -104
  13. package/.claude/agents/analysis/perf-analyzer.md +2 -196
  14. package/.claude/agents/context/context-curator.md +78 -84
  15. package/.claude/agents/context/context-reflector.md +27 -81
  16. package/.claude/agents/coordinators/README.md +42 -0
  17. package/.claude/agents/coordinators/cfn-v3-coordinator.md +440 -0
  18. package/.claude/agents/{product-owner-team → coordinators}/cto-agent.md +154 -187
  19. package/.claude/agents/coordinators/multi-sprint-coordinator.md +50 -0
  20. package/.claude/agents/{product-owner-team → coordinators}/product-owner-agent.md +6 -39
  21. package/.claude/agents/{cfn-loop → coordinators}/product-owner.md +72 -17
  22. package/.claude/agents/core-agents/reviewer.md +114 -135
  23. package/.claude/agents/custom/agent-builder.md +637 -0
  24. package/.claude/agents/developers/README.md +69 -0
  25. package/.claude/agents/developers/backend-dev.md +77 -0
  26. package/.claude/agents/{core-agents → developers}/coder.md +131 -26
  27. package/.claude/agents/developers/react-frontend-engineer.md +121 -0
  28. package/.claude/agents/{frontend → developers}/state-architect.md +1 -0
  29. package/.claude/agents/{frontend → developers}/ui-designer.md +1 -0
  30. package/.claude/agents/development/backend/dev-backend-api.md +0 -29
  31. package/.claude/agents/development/npm-package-specialist.md +355 -347
  32. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +8 -0
  33. package/.claude/agents/documentation/api-docs.md +8 -0
  34. package/.claude/agents/github/github-commit-agent.md +125 -117
  35. package/.claude/agents/goal/goal-planner.md +8 -0
  36. package/.claude/agents/infrastructure/README.md +100 -0
  37. package/.claude/agents/{specialized → infrastructure}/devops-engineer.md +131 -150
  38. package/.claude/agents/planners/README.md +94 -0
  39. package/.claude/agents/{core-agents → planners}/analyst.md +1 -22
  40. package/.claude/agents/{planning-team → planners}/api-designer-persona.md +8 -0
  41. package/.claude/agents/{core-agents → planners}/architect.md +7 -20
  42. package/.claude/agents/{core-agents → planners}/planner.md +0 -21
  43. package/.claude/agents/{planning-team → planners}/security-architect-persona.md +8 -28
  44. package/.claude/agents/{planning-team → planners}/system-architect-persona.md +6 -38
  45. package/.claude/agents/{architecture → planners}/system-architect.md +12 -17
  46. package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +132 -161
  47. package/.claude/agents/product-owner-team/power-user-persona.md +149 -182
  48. package/.claude/agents/retrospective-analyst.md +84 -0
  49. package/.claude/agents/reviewers/README.md +58 -0
  50. package/.claude/agents/{analysis → reviewers}/code-quality-validator.md +8 -17
  51. package/.claude/agents/reviewers/reviewer.md +181 -0
  52. package/.claude/agents/sparc/architecture.md +6 -25
  53. package/.claude/agents/sparc/pseudocode.md +6 -0
  54. package/.claude/agents/sparc/refinement.md +6 -0
  55. package/.claude/agents/sparc/specification.md +1 -0
  56. package/.claude/agents/specialists/README.md +60 -0
  57. package/.claude/agents/{core-agents → specialists}/base-template-generator.md +8 -21
  58. package/.claude/agents/{specialized → specialists}/cli-agent-optimizer.md +1 -1
  59. package/.claude/agents/{specialized → specialists}/code-booster.md +1 -0
  60. package/.claude/agents/{consensus → specialists}/consensus-builder.md +1 -17
  61. package/.claude/agents/{specialized/mobile → specialists}/mobile-dev.md +0 -20
  62. package/.claude/agents/{core-agents → specialists}/performance-benchmarker.md +134 -148
  63. package/.claude/agents/{specialized → specialists}/rust-developer.md +1 -20
  64. package/.claude/agents/{specialized → specialists}/rust-enterprise-developer.md +1 -20
  65. package/.claude/agents/{specialized → specialists}/rust-mvp-developer.md +1 -20
  66. package/.claude/agents/{core-agents → specialists}/security-manager.md +68 -88
  67. package/.claude/agents/{security → specialists}/security-specialist-existing.md +6 -57
  68. package/.claude/agents/{security → specialists}/security-specialist.md +6 -30
  69. package/.claude/agents/{specialized/mobile → specialists}/spec-mobile-react-native.md +2 -21
  70. package/.claude/agents/testers/README.md +94 -0
  71. package/.claude/agents/{testing → testers}/e2e/playwright-agent.md +1 -20
  72. package/.claude/agents/{testing → testers}/interaction-tester.md +1 -20
  73. package/.claude/agents/{testing → testers}/playwright-tester.md +1 -1
  74. package/.claude/agents/testers/tester.md +139 -0
  75. package/.claude/agents/testers/unit/tdd-london-swarm.md +49 -0
  76. package/.claude/agents/testers/validation/production-validator.md +33 -0
  77. package/.claude/agents-ignore/cfn-loop-coordinator.md +157 -0
  78. package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +156 -0
  79. package/.claude/agents-ignore/coordinator.md.backup +182 -0
  80. package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +760 -0
  81. package/.claude/agents-ignore/cost-savings-coordinator.md +173 -0
  82. package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +39 -0
  83. package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +47 -0
  84. package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +61 -0
  85. package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
  86. package/.claude/commands/cfn-loop-epic.md +43 -19
  87. package/.claude/commands/cfn-loop-single.md +3 -3
  88. package/.claude/commands/cfn-loop-sprints.md +1 -1
  89. package/.claude/commands/cfn-loop.md +45 -32
  90. package/.claude/commands/cfn-mode.md +20 -0
  91. package/.claude/commands/custom-routing-activate.md +37 -123
  92. package/.claude/commands/custom-routing-deactivate.md +27 -124
  93. package/.claude/commands/switch-api.md +41 -16
  94. package/.claude/commands/write-plan.md +104 -0
  95. package/.claude/data/cfn-loop.db +0 -0
  96. package/.claude/data/cfn_loop_logs.db +0 -0
  97. package/.claude/hooks/BACKUP_USAGE.md +243 -0
  98. package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
  99. package/.claude/hooks/post-edit.sh +21 -0
  100. package/.claude/hooks/pre-edit-backup.sh +71 -0
  101. package/.claude/hooks/restore-from-backup.sh +37 -0
  102. package/.claude/prompts/cfn-loop-context.md +115 -0
  103. package/.claude/prompts/loop-specific/loop2.md +50 -0
  104. package/.claude/prompts/loop-specific/loop3.md +43 -0
  105. package/.claude/prompts/loop-specific/loop4.md +54 -0
  106. package/.claude/root-claude-distribute/CLAUDE.md +76 -2
  107. package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
  108. package/.claude/skills/ace-system/store-reflection.sh +33 -136
  109. package/.claude/skills/agent-discovery/SKILL.md +40 -0
  110. package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
  111. package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
  112. package/.claude/skills/agent-discovery/agents-registry.json +718 -0
  113. package/.claude/skills/agent-discovery/discover-agents.py +175 -0
  114. package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
  115. package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
  116. package/.claude/skills/agent-discovery/temp_script.py +0 -0
  117. package/.claude/skills/agent-execution/execute-agent.sh +126 -0
  118. package/.claude/skills/agent-output-processing/SKILL.md +359 -0
  119. package/.claude/skills/agent-selector/SKILL.md +90 -0
  120. package/.claude/skills/agent-selector/select-agents.sh +96 -0
  121. package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
  122. package/.claude/skills/agent-swap/SKILL.md +36 -0
  123. package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
  124. package/.claude/skills/api-validation/test-endpoints.sh +54 -0
  125. package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
  126. package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
  127. package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
  128. package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
  129. package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
  130. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  131. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  132. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  133. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  134. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  135. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  136. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  137. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  138. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  139. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +840 -0
  140. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  141. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  142. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  143. package/.claude/skills/cfn-loop-validation/SKILL.md +307 -217
  144. package/.claude/skills/complexity-estimator/SKILL.md +96 -0
  145. package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
  146. package/.claude/skills/context-pruner/SKILL.md +75 -0
  147. package/.claude/skills/context-pruner/prune-context.sh +73 -0
  148. package/.claude/skills/defense-in-depth/SKILL.md +133 -0
  149. package/.claude/skills/dependency-extractor/SKILL.md +35 -0
  150. package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
  151. package/.claude/skills/epic-decomposer/SKILL.md +44 -0
  152. package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
  153. package/.claude/skills/improvement-recommender/SKILL.md +33 -0
  154. package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
  155. package/.claude/skills/intervention-detector/SKILL.md +39 -0
  156. package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
  157. package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
  158. package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
  159. package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
  160. package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
  161. package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
  162. package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
  163. package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
  164. package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
  165. package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
  166. package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
  167. package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
  168. package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
  169. package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
  170. package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
  171. package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
  172. package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
  173. package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
  174. package/.claude/skills/pattern-extraction/SKILL.md +30 -0
  175. package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
  176. package/.claude/skills/playbook/SKILL.md +113 -0
  177. package/.claude/skills/playbook/init-playbook.sh +54 -0
  178. package/.claude/skills/playbook/playbook.db +0 -0
  179. package/.claude/skills/playbook/query-playbook.sh +79 -0
  180. package/.claude/skills/playbook/update-playbook.sh +69 -0
  181. package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
  182. package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
  183. package/.claude/skills/product-owner-decision/SKILL.md +332 -0
  184. package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
  185. package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
  186. package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
  187. package/.claude/skills/redis-coordination/AGENT_LOGGING.md +280 -0
  188. package/.claude/skills/redis-coordination/LOGGING.md +260 -0
  189. package/.claude/skills/redis-coordination/README.md +30 -29
  190. package/.claude/skills/redis-coordination/SKILL.md +685 -83
  191. package/.claude/skills/redis-coordination/agent-log.sh +124 -0
  192. package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
  193. package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
  194. package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
  195. package/.claude/skills/redis-coordination/collect-results.sh +75 -0
  196. package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
  197. package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +320 -0
  198. package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
  199. package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
  200. package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
  201. package/.claude/skills/redis-coordination/init-swarm.sh +6 -1
  202. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +106 -183
  203. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  204. package/.claude/skills/redis-coordination/log-event.sh +109 -0
  205. package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
  206. package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  207. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -933
  208. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  209. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  210. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  211. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  212. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  213. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  214. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  215. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  216. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  217. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  218. package/.claude/skills/redis-coordination/query-logs.sh +103 -0
  219. package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
  220. package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
  221. package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
  222. package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
  223. package/.claude/skills/redis-coordination/signal.sh +38 -0
  224. package/.claude/skills/redis-coordination/store-context.sh +86 -0
  225. package/.claude/skills/redis-coordination/store-epic-context.sh +123 -0
  226. package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
  227. package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
  228. package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
  229. package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
  230. package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
  231. package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
  232. package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
  233. package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
  234. package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
  235. package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
  236. package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
  237. package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  238. package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
  239. package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  240. package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
  241. package/.claude/skills/retrospective-report/SKILL.md +31 -0
  242. package/.claude/skills/retrospective-report/generate-report.sh +101 -0
  243. package/.claude/skills/run-all-skill-tests.sh +124 -0
  244. package/.claude/skills/scope-simplifier/SKILL.md +37 -0
  245. package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
  246. package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
  247. package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
  248. package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
  249. package/.claude/skills/skill-builder/SKILL.md +910 -0
  250. package/.claude/skills/specialist-injection/SKILL.md +41 -0
  251. package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
  252. package/.claude/skills/sprint-execution/SKILL.md +27 -0
  253. package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
  254. package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
  255. package/.claude/skills/sprint-planner/SKILL.md +37 -0
  256. package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
  257. package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
  258. package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
  259. package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
  260. package/.claude/skills/task-classifier/SKILL.md +94 -0
  261. package/.claude/skills/task-classifier/classify-task.sh +115 -0
  262. package/.claude/skills/validation-templates/SKILL.md +47 -0
  263. package/.claude/skills/validation-templates/content.json +38 -0
  264. package/.claude/skills/validation-templates/data.json +38 -0
  265. package/.claude/skills/validation-templates/design.json +38 -0
  266. package/.claude/skills/validation-templates/infrastructure.json +38 -0
  267. package/.claude/skills/validation-templates/research.json +38 -0
  268. package/.claude/skills/validation-templates/software.json +38 -0
  269. package/.claude/skills/webapp-testing/README.md +142 -0
  270. package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  271. package/.claude/skills/webapp-testing/SKILL.md +877 -0
  272. package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
  273. package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
  274. package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
  275. package/.claude/skills/webapp-testing/init-storage.sh +150 -0
  276. package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
  277. package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
  278. package/.claude/spawn-pattern-examples.md +3 -3
  279. package/CLAUDE.md +364 -16
  280. package/README.md +598 -251
  281. package/dist/agents/agent-loader.js +146 -165
  282. package/dist/agents/agent-loader.js.map +1 -1
  283. package/dist/cli/agent-command.js +153 -0
  284. package/dist/cli/agent-command.js.map +1 -0
  285. package/dist/cli/agent-definition-parser.js +183 -0
  286. package/dist/cli/agent-definition-parser.js.map +1 -0
  287. package/dist/cli/agent-executor.js +310 -0
  288. package/dist/cli/agent-executor.js.map +1 -0
  289. package/dist/cli/agent-prompt-builder.js +268 -0
  290. package/dist/cli/agent-prompt-builder.js.map +1 -0
  291. package/dist/cli/agent-spawn.js +56 -2
  292. package/dist/cli/agent-spawn.js.map +1 -1
  293. package/dist/cli/anthropic-client.js +421 -0
  294. package/dist/cli/anthropic-client.js.map +1 -0
  295. package/dist/cli/cfn-context.js +150 -0
  296. package/dist/cli/cfn-context.js.map +1 -1
  297. package/dist/cli/cfn-fork.js +159 -0
  298. package/dist/cli/cfn-fork.js.map +1 -0
  299. package/dist/cli/cli-agent-context.js +358 -0
  300. package/dist/cli/cli-agent-context.js.map +1 -0
  301. package/dist/cli/config-manager.js +109 -91
  302. package/dist/cli/config-manager.js.map +1 -1
  303. package/dist/cli/conversation-fork.js +201 -0
  304. package/dist/cli/conversation-fork.js.map +1 -0
  305. package/dist/cli/index.js +119 -2
  306. package/dist/cli/index.js.map +1 -1
  307. package/dist/cli/iteration-history.js +188 -0
  308. package/dist/cli/iteration-history.js.map +1 -0
  309. package/dist/cli/tool-definitions.js +263 -0
  310. package/dist/cli/tool-definitions.js.map +1 -0
  311. package/dist/cli/tool-executor.js +247 -0
  312. package/dist/cli/tool-executor.js.map +1 -0
  313. package/dist/hello.js +8 -0
  314. package/dist/hello.js.map +1 -0
  315. package/package.json +16 -6
  316. package/scripts/README.md +68 -0
  317. package/scripts/cfn-intervention-example.sh +21 -0
  318. package/scripts/migrate-test-infrastructure.sh +40 -0
  319. package/scripts/switch-api.sh +233 -0
  320. package/scripts/validate-test-migration.sh +49 -0
  321. package/scripts/verify-no-secrets.sh +55 -0
  322. package/.claude/agents/architecture/system-architect.md.backup +0 -603
  323. package/.claude/agents/code-booster.md +0 -131
  324. package/.claude/agents/consensus/performance-benchmarker.md +0 -101
  325. package/.claude/agents/consensus/security-manager.md +0 -107
  326. package/.claude/agents/context-curator.md +0 -167
  327. package/.claude/agents/context-reflector.md +0 -65
  328. package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
  329. package/.claude/agents/core-agents/code-quality-validator.md +0 -149
  330. package/.claude/agents/core-agents/context-curator.md +0 -452
  331. package/.claude/agents/core-agents/context-reflector.md +0 -273
  332. package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -190
  333. package/.claude/agents/core-agents/tester.md +0 -170
  334. package/.claude/agents/development/backend-dev.md +0 -165
  335. package/.claude/agents/devops/devops-engineer.md +0 -148
  336. package/.claude/agents/frontend/interaction-tester.md +0 -139
  337. package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
  338. package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
  339. package/.claude/agents/testing/production-validator.md +0 -179
  340. package/.claude/agents/testing/tdd-london-swarm.md +0 -209
  341. package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
  342. package/.claude/agents/testing/validation/production-validator.md +0 -43
  343. package/dist/coordination/fleet-manager.test.js +0 -141
  344. package/dist/coordination/fleet-manager.test.js.map +0 -1
  345. package/dist/middleware/transparency-middleware.test.js +0 -184
  346. package/dist/middleware/transparency-middleware.test.js.map +0 -1
  347. /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
  348. /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
  349. /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
  350. /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
  351. /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
  352. /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
  353. /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
  354. /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
  355. /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
  356. /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
  357. /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
  358. /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
  359. /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
  360. /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
  361. /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
  362. /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
  363. /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
  364. /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
  365. /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
  366. /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
  367. /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
  368. /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
  369. /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
  370. /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +0 -0
@@ -0,0 +1,75 @@
1
+ #!/bin/bash
2
+
3
+ # Redis Results Collection Primitive
4
+ # Updated interface to match orchestrator expectations
5
+ # Supports both legacy (--key) and new (--task-id --agent-ids --namespace) interfaces
6
+
7
+ # Initialize variables
8
+ task_id=""
9
+ agent_ids=""
10
+ key=""
11
+ namespace="swarm"
12
+
13
+ # Parse arguments
14
+ while [[ $# -gt 0 ]]; do
15
+ case "$1" in
16
+ --task-id)
17
+ task_id="$2"
18
+ shift 2
19
+ ;;
20
+ --agent-ids)
21
+ agent_ids="$2"
22
+ shift 2
23
+ ;;
24
+ --key)
25
+ key="$2"
26
+ shift 2
27
+ ;;
28
+ --namespace)
29
+ namespace="$2"
30
+ shift 2
31
+ ;;
32
+ *)
33
+ echo "Unknown argument: $1" >&2
34
+ exit 1
35
+ ;;
36
+ esac
37
+ done
38
+
39
+ # Construct Redis key based on interface mode
40
+ if [[ -n "$task_id" && -n "$agent_ids" ]]; then
41
+ # New interface: collect from multiple agents
42
+ # Format: {namespace}:{task_id}:results
43
+ redis_key="${namespace}:${task_id}:results"
44
+
45
+ # Collect results from each agent
46
+ IFS=',' read -ra AGENTS <<< "$agent_ids"
47
+ results=""
48
+ for agent in "${AGENTS[@]}"; do
49
+ agent_key="${namespace}:${task_id}:${agent}:result"
50
+ agent_result=$(redis-cli get "$agent_key" 2>/dev/null)
51
+ if [[ -n "$agent_result" && "$agent_result" != "(nil)" ]]; then
52
+ results="${results}${agent}:${agent_result}"$'\n'
53
+ fi
54
+ done
55
+
56
+ # Print collected results
57
+ echo -n "$results"
58
+ elif [[ -n "$key" ]]; then
59
+ # Legacy interface: key is used directly (list-based)
60
+ redis_key="$key"
61
+
62
+ # Collect results from Redis list
63
+ results=$(redis-cli lrange "$redis_key" 0 -1 2>/dev/null)
64
+
65
+ # Print the results
66
+ echo "$results"
67
+ else
68
+ echo "Error: Either (--task-id and --agent-ids) or --key is required" >&2
69
+ echo "Usage: $0 --task-id <id> --agent-ids <comma-separated-ids> [--namespace <ns>]" >&2
70
+ echo " or: $0 --key <full-key>" >&2
71
+ exit 1
72
+ fi
73
+
74
+ # Exit successfully
75
+ exit 0
@@ -0,0 +1,320 @@
1
+ #!/bin/bash
2
+ #
3
+ # Test Script: Iteration Feedback Mechanism
4
+ #
5
+ # Validates that:
6
+ # 1. Validators can report feedback with confidence scores
7
+ # 2. Orchestrator collects and aggregates feedback
8
+ # 3. Feedback is passed to Loop 3 agents via wake signal
9
+ # 4. Feedback is stored in Redis with TTL
10
+ # 5. Agents can read feedback for iteration N
11
+
12
+ set -euo pipefail
13
+
14
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
+ TASK_ID="test-feedback-$(date +%s)"
16
+
17
+ echo "=========================================="
18
+ echo "Iteration Feedback Mechanism Test"
19
+ echo "=========================================="
20
+ echo "Task ID: $TASK_ID"
21
+ echo ""
22
+
23
+ # Cleanup function
24
+ cleanup() {
25
+ echo ""
26
+ echo "Cleaning up Redis keys..."
27
+ redis-cli --scan --pattern "swarm:${TASK_ID}:*" | xargs -r redis-cli del >/dev/null 2>&1 || true
28
+ echo "✅ Cleanup complete"
29
+ }
30
+
31
+ # Register cleanup on exit
32
+ trap cleanup EXIT
33
+
34
+ # Test 1: Validators report confidence with feedback
35
+ echo "=== Test 1: Validators Report Feedback ==="
36
+ echo ""
37
+
38
+ VALIDATOR_1="reviewer-1"
39
+ VALIDATOR_2="tester-1"
40
+ VALIDATOR_3="security-1"
41
+
42
+ # Validator 1: Low confidence with specific feedback
43
+ echo "[$VALIDATOR_1] Reporting confidence 0.65 with 2 feedback items..."
44
+ $SCRIPT_DIR/invoke-waiting-mode.sh report \
45
+ --task-id "$TASK_ID" \
46
+ --agent-id "$VALIDATOR_1" \
47
+ --confidence 0.65 \
48
+ --iteration 1 \
49
+ --feedback "Add error handling for null inputs,Improve documentation for API endpoints"
50
+
51
+ echo ""
52
+
53
+ # Validator 2: Medium confidence with 3 feedback items
54
+ echo "[$VALIDATOR_2] Reporting confidence 0.72 with 3 feedback items..."
55
+ $SCRIPT_DIR/invoke-waiting-mode.sh report \
56
+ --task-id "$TASK_ID" \
57
+ --agent-id "$VALIDATOR_2" \
58
+ --confidence 0.72 \
59
+ --iteration 1 \
60
+ --feedback "Increase test coverage to 80%,Add edge case tests for empty arrays,Fix flaky timeout test"
61
+
62
+ echo ""
63
+
64
+ # Validator 3: Low confidence with security feedback
65
+ echo "[$VALIDATOR_3] Reporting confidence 0.60 with 2 feedback items..."
66
+ $SCRIPT_DIR/invoke-waiting-mode.sh report \
67
+ --task-id "$TASK_ID" \
68
+ --agent-id "$VALIDATOR_3" \
69
+ --confidence 0.60 \
70
+ --iteration 1 \
71
+ --feedback "Fix SQL injection vulnerability in query builder,Add rate limiting to API endpoints"
72
+
73
+ echo ""
74
+
75
+ # Test 2: Collect feedback from validators
76
+ echo "=== Test 2: Orchestrator Collects Feedback ==="
77
+ echo ""
78
+
79
+ COLLECT_OUTPUT=$($SCRIPT_DIR/invoke-waiting-mode.sh collect \
80
+ --task-id "$TASK_ID" \
81
+ --agent-ids "$VALIDATOR_1,$VALIDATOR_2,$VALIDATOR_3")
82
+
83
+ echo "$COLLECT_OUTPUT"
84
+ echo ""
85
+
86
+ # Extract consensus and feedback
87
+ CONSENSUS=$(echo "$COLLECT_OUTPUT" | tail -1)
88
+ echo "Calculated Consensus: $CONSENSUS"
89
+
90
+ # Verify feedback aggregation
91
+ if echo "$COLLECT_OUTPUT" | grep -q "Aggregated Feedback"; then
92
+ echo "✅ Feedback aggregated successfully"
93
+ FEEDBACK_COUNT=$(echo "$COLLECT_OUTPUT" | grep -c '^\s*-' || echo "0")
94
+ echo " Total feedback items: $FEEDBACK_COUNT"
95
+ else
96
+ echo "❌ No aggregated feedback found"
97
+ exit 1
98
+ fi
99
+
100
+ echo ""
101
+
102
+ # Test 3: Wake Loop 3 agent with validator feedback
103
+ echo "=== Test 3: Wake Loop 3 Agent with Feedback ==="
104
+ echo ""
105
+
106
+ LOOP3_AGENT="backend-dev"
107
+
108
+ # Extract aggregated feedback for passing to Loop 3
109
+ LOOP2_FEEDBACK=$(echo "$COLLECT_OUTPUT" | sed -n '/Aggregated Feedback/,/Consensus:/p' | grep '^\s*-' | sed 's/^\s*-\s*//' | paste -sd ',' -)
110
+
111
+ # Build full feedback message
112
+ FULL_FEEDBACK="Improve consensus from $CONSENSUS to >=0.90,$LOOP2_FEEDBACK"
113
+
114
+ echo "Waking $LOOP3_AGENT with comprehensive feedback..."
115
+ echo "Feedback items: $(echo "$FULL_FEEDBACK" | tr ',' '\n' | wc -l)"
116
+ echo ""
117
+
118
+ $SCRIPT_DIR/invoke-waiting-mode.sh wake \
119
+ --task-id "$TASK_ID" \
120
+ --agent-id "$LOOP3_AGENT" \
121
+ --reason "cfn_loop_iteration" \
122
+ --iteration 2 \
123
+ --priority 30 \
124
+ --feedback "$FULL_FEEDBACK"
125
+
126
+ echo ""
127
+
128
+ # Test 4: Verify feedback stored in Redis
129
+ echo "=== Test 4: Verify Feedback Storage ==="
130
+ echo ""
131
+
132
+ FEEDBACK_KEY="swarm:${TASK_ID}:${LOOP3_AGENT}:feedback:iteration-2"
133
+ echo "Checking Redis key: $FEEDBACK_KEY"
134
+
135
+ STORED_FEEDBACK=$(redis-cli get "$FEEDBACK_KEY")
136
+
137
+ if [ -n "$STORED_FEEDBACK" ] && [ "$STORED_FEEDBACK" != "(nil)" ]; then
138
+ echo "✅ Feedback stored successfully"
139
+ echo ""
140
+ echo "Stored feedback (JSON array):"
141
+ echo "$STORED_FEEDBACK" | jq '.'
142
+ echo ""
143
+
144
+ # Verify TTL
145
+ TTL=$(redis-cli ttl "$FEEDBACK_KEY")
146
+ echo "TTL: $TTL seconds ($(echo "scale=1; $TTL / 3600" | bc) hours)"
147
+
148
+ if [ "$TTL" -gt 0 ] && [ "$TTL" -le 86400 ]; then
149
+ echo "✅ TTL is correct (≤24 hours)"
150
+ else
151
+ echo "❌ TTL is incorrect: $TTL"
152
+ exit 1
153
+ fi
154
+ else
155
+ echo "❌ Feedback not found in Redis"
156
+ exit 1
157
+ fi
158
+
159
+ echo ""
160
+
161
+ # Test 5: Agent reads feedback
162
+ echo "=== Test 5: Agent Reads Feedback ==="
163
+ echo ""
164
+
165
+ echo "Simulating agent reading feedback from Redis..."
166
+ AGENT_FEEDBACK=$(redis-cli get "$FEEDBACK_KEY")
167
+
168
+ if [ -n "$AGENT_FEEDBACK" ] && [ "$AGENT_FEEDBACK" != "(nil)" ]; then
169
+ echo "✅ Agent successfully read feedback"
170
+ echo ""
171
+ echo "Feedback items available to agent:"
172
+ echo "$AGENT_FEEDBACK" | jq -r '.[]' | nl -w2 -s'. '
173
+ echo ""
174
+
175
+ ITEM_COUNT=$(echo "$AGENT_FEEDBACK" | jq '. | length')
176
+ echo "Total actionable items: $ITEM_COUNT"
177
+ else
178
+ echo "❌ Agent failed to read feedback"
179
+ exit 1
180
+ fi
181
+
182
+ echo ""
183
+
184
+ # Test 6: Wake queue contains feedback
185
+ echo "=== Test 6: Verify Wake Queue Feedback ==="
186
+ echo ""
187
+
188
+ WAKE_QUEUE="swarm:${TASK_ID}:${LOOP3_AGENT}:wake-queue"
189
+ echo "Checking wake queue: $WAKE_QUEUE"
190
+
191
+ # Pop wake message from queue
192
+ WAKE_MSG=$(redis-cli ZPOPMIN "$WAKE_QUEUE" 1 | sed -n '1p')
193
+
194
+ if [ -n "$WAKE_MSG" ] && [ "$WAKE_MSG" != "(nil)" ]; then
195
+ echo "✅ Wake message found in queue"
196
+ echo ""
197
+ echo "Wake message contents:"
198
+ echo "$WAKE_MSG" | jq '.'
199
+ echo ""
200
+
201
+ # Verify feedback in wake message
202
+ WAKE_FEEDBACK=$(echo "$WAKE_MSG" | jq -r '.feedback[]' 2>/dev/null | head -3)
203
+ if [ -n "$WAKE_FEEDBACK" ]; then
204
+ echo "✅ Feedback included in wake message"
205
+ echo ""
206
+ echo "First 3 feedback items:"
207
+ echo "$WAKE_MSG" | jq -r '.feedback[]' | head -3 | nl -w2 -s'. '
208
+ else
209
+ echo "❌ No feedback in wake message"
210
+ exit 1
211
+ fi
212
+ else
213
+ echo "❌ No wake message in queue"
214
+ exit 1
215
+ fi
216
+
217
+ echo ""
218
+
219
+ # Test 7: Multiple iterations
220
+ echo "=== Test 7: Multiple Iteration Feedback ==="
221
+ echo ""
222
+
223
+ echo "Simulating iteration 3 feedback..."
224
+ ITERATION_3_FEEDBACK="Address remaining issues from iteration 2,Add integration tests,Update changelog"
225
+
226
+ $SCRIPT_DIR/invoke-waiting-mode.sh wake \
227
+ --task-id "$TASK_ID" \
228
+ --agent-id "$LOOP3_AGENT" \
229
+ --reason "cfn_loop_iteration" \
230
+ --iteration 3 \
231
+ --priority 30 \
232
+ --feedback "$ITERATION_3_FEEDBACK"
233
+
234
+ echo ""
235
+
236
+ # Verify both iteration feedbacks are stored separately
237
+ FEEDBACK_KEY_2="swarm:${TASK_ID}:${LOOP3_AGENT}:feedback:iteration-2"
238
+ FEEDBACK_KEY_3="swarm:${TASK_ID}:${LOOP3_AGENT}:feedback:iteration-3"
239
+
240
+ FEEDBACK_2=$(redis-cli get "$FEEDBACK_KEY_2")
241
+ FEEDBACK_3=$(redis-cli get "$FEEDBACK_KEY_3")
242
+
243
+ if [ -n "$FEEDBACK_2" ] && [ "$FEEDBACK_2" != "(nil)" ]; then
244
+ echo "✅ Iteration 2 feedback persists"
245
+ echo " Items: $(echo "$FEEDBACK_2" | jq '. | length')"
246
+ fi
247
+
248
+ if [ -n "$FEEDBACK_3" ] && [ "$FEEDBACK_3" != "(nil)" ]; then
249
+ echo "✅ Iteration 3 feedback stored"
250
+ echo " Items: $(echo "$FEEDBACK_3" | jq '. | length')"
251
+ fi
252
+
253
+ echo ""
254
+
255
+ # Test 8: Edge cases
256
+ echo "=== Test 8: Edge Cases ==="
257
+ echo ""
258
+
259
+ # Empty feedback
260
+ echo "Testing wake with empty feedback..."
261
+ $SCRIPT_DIR/invoke-waiting-mode.sh wake \
262
+ --task-id "$TASK_ID" \
263
+ --agent-id "test-agent" \
264
+ --reason "test" \
265
+ --iteration 1 \
266
+ --priority 50 \
267
+ --feedback ""
268
+
269
+ EMPTY_FEEDBACK_KEY="swarm:${TASK_ID}:test-agent:feedback:iteration-1"
270
+ EMPTY_RESULT=$(redis-cli get "$EMPTY_FEEDBACK_KEY")
271
+
272
+ if [ -z "$EMPTY_RESULT" ] || [ "$EMPTY_RESULT" = "(nil)" ]; then
273
+ echo "✅ Empty feedback not stored (expected)"
274
+ else
275
+ echo "⚠️ Empty feedback stored: $EMPTY_RESULT"
276
+ fi
277
+
278
+ echo ""
279
+
280
+ # Iteration 0 (no feedback storage)
281
+ echo "Testing wake with iteration 0..."
282
+ $SCRIPT_DIR/invoke-waiting-mode.sh wake \
283
+ --task-id "$TASK_ID" \
284
+ --agent-id "test-agent-2" \
285
+ --reason "initial" \
286
+ --iteration 0 \
287
+ --priority 50 \
288
+ --feedback "This should not be stored"
289
+
290
+ ITER_0_KEY="swarm:${TASK_ID}:test-agent-2:feedback:iteration-0"
291
+ ITER_0_RESULT=$(redis-cli get "$ITER_0_KEY")
292
+
293
+ if [ -z "$ITER_0_RESULT" ] || [ "$ITER_0_RESULT" = "(nil)" ]; then
294
+ echo "✅ Iteration 0 feedback not stored (expected)"
295
+ else
296
+ echo "❌ Iteration 0 feedback should not be stored: '$ITER_0_RESULT'"
297
+ exit 1
298
+ fi
299
+
300
+ echo ""
301
+
302
+ # Summary
303
+ echo "=========================================="
304
+ echo "Test Summary"
305
+ echo "=========================================="
306
+ echo "✅ All tests passed!"
307
+ echo ""
308
+ echo "Validated:"
309
+ echo " 1. Validators can report feedback with confidence"
310
+ echo " 2. Orchestrator collects and aggregates feedback"
311
+ echo " 3. Feedback passed to Loop 3 agents via wake signal"
312
+ echo " 4. Feedback stored in Redis with 24-hour TTL"
313
+ echo " 5. Agents can read feedback for iteration N"
314
+ echo " 6. Wake queue contains feedback in message"
315
+ echo " 7. Multiple iterations maintain separate feedback"
316
+ echo " 8. Edge cases handled correctly"
317
+ echo ""
318
+ echo "Task ID: $TASK_ID"
319
+ echo "Feedback mechanism is fully operational!"
320
+ echo ""
@@ -203,6 +203,31 @@ else
203
203
  test_fail "Mode-specific thresholds should be documented (reference: CLAUDE.md)"
204
204
  fi
205
205
 
206
+ # ==============================================================================
207
+ # TEST 9: Deliverable verification (BUG #11 fix)
208
+ # ==============================================================================
209
+ test_start "Deliverable verification - prevents consensus on vapor"
210
+
211
+ TASK_ID="deliverable-test-$(date +%s)"
212
+
213
+ # Simulate Loop 3 completion with high confidence but NO files changed
214
+ redis-cli lpush "swarm:${TASK_ID}:coder-1:done" "complete" > /dev/null 2>&1
215
+ redis-cli lpush "swarm:${TASK_ID}:coder-1:result" "0.95" > /dev/null 2>&1
216
+
217
+ # Verify orchestrator checks git status and overrides confidence when no files exist
218
+ # The implementation should check: git status --short | grep -E "^(A|M|\?\?)" | wc -l
219
+ # If count == 0, override confidence to 0.0
220
+
221
+ # Check that deliverable verification logic exists in orchestrator
222
+ if grep -q "FILES_CHANGED.*git status.*short" /mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh && \
223
+ grep -q "no_deliverables\|DELIVERABLE.*FAILED" /mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh; then
224
+ test_pass
225
+ else
226
+ test_fail "Deliverable verification logic not found in orchestrator"
227
+ fi
228
+
229
+ cleanup_redis "$TASK_ID"
230
+
206
231
  # ==============================================================================
207
232
  # TEST SUMMARY
208
233
  # ==============================================================================
@@ -0,0 +1,258 @@
1
+ #!/bin/bash
2
+ ##############################################################################
3
+ # Product Owner Decision Execution Script
4
+ #
5
+ # Handles the complete Product Owner decision protocol:
6
+ # 1. Query Loop 2 consensus from Redis
7
+ # 2. Apply GOAP decision framework
8
+ # 3. Push decision to Redis
9
+ # 4. Signal completion
10
+ # 5. Report confidence
11
+ #
12
+ # Usage:
13
+ # ./execute-product-owner-decision.sh --task-id <task> --agent-id <agent>
14
+ ##############################################################################
15
+
16
+ set -euo pipefail
17
+
18
+ # Parse arguments
19
+ TASK_ID=""
20
+ AGENT_ID=""
21
+
22
+ while [[ $# -gt 0 ]]; do
23
+ case $1 in
24
+ --task-id)
25
+ TASK_ID="$2"
26
+ shift 2
27
+ ;;
28
+ --agent-id)
29
+ AGENT_ID="$2"
30
+ shift 2
31
+ ;;
32
+ *)
33
+ echo "Unknown option: $1"
34
+ echo "Usage: $0 --task-id <task> --agent-id <agent>"
35
+ exit 1
36
+ ;;
37
+ esac
38
+ done
39
+
40
+ if [ -z "$TASK_ID" ] || [ -z "$AGENT_ID" ]; then
41
+ echo "Error: --task-id and --agent-id are required"
42
+ exit 1
43
+ fi
44
+
45
+ echo "[Product Owner] Starting decision execution for task: $TASK_ID"
46
+ echo ""
47
+
48
+ # Step 1: Query Loop 2 consensus and context
49
+ echo "[Step 1] Querying Loop 2 consensus and context from Redis..."
50
+ CONSENSUS=$(redis-cli lindex "swarm:${TASK_ID}:metrics:loop2_consensus" 0 | jq -r '.consensus')
51
+ ITERATION=$(redis-cli lindex "swarm:${TASK_ID}:metrics:loop2_consensus" 0 | jq -r '.iteration')
52
+
53
+ # Get feedback from validators
54
+ FEEDBACK_JSON=$(redis-cli lrange "swarm:${TASK_ID}:loop2:feedback" 0 -1 | jq -s '.')
55
+
56
+ # Get acceptance criteria and scope
57
+ ACCEPTANCE_CRITERIA=$(redis-cli get "swarm:${TASK_ID}:success-criteria" | jq -r '.acceptanceCriteria // []')
58
+ EPIC_CONTEXT=$(redis-cli get "swarm:${TASK_ID}:epic-context")
59
+ IN_SCOPE=$(echo "$EPIC_CONTEXT" | jq -r '.inScope // []')
60
+ OUT_OF_SCOPE=$(echo "$EPIC_CONTEXT" | jq -r '.outOfScope // []')
61
+ EPIC_GOAL=$(echo "$EPIC_CONTEXT" | jq -r '.epicGoal // ""')
62
+
63
+ echo " Loop 2 Consensus: $CONSENSUS"
64
+ echo " Iteration: $ITERATION"
65
+ echo " Validator Feedback Items: $(echo "$FEEDBACK_JSON" | jq 'length')"
66
+ echo ""
67
+
68
+ # Step 2: Apply scope categorization
69
+ echo "[Step 2] Categorizing validator feedback by scope..."
70
+
71
+ # Initialize arrays
72
+ IN_SCOPE_ITEMS="[]"
73
+ OUT_OF_SCOPE_ITEMS="[]"
74
+ IN_SCOPE_CONSENSUS=0
75
+ OUT_OF_SCOPE_CONSENSUS=0
76
+
77
+ # Process feedback if available
78
+ if [ "$FEEDBACK_JSON" != "null" ] && [ "$FEEDBACK_JSON" != "[]" ]; then
79
+ # Categorize each feedback item
80
+ for feedback_item in $(echo "$FEEDBACK_JSON" | jq -r '.[] | @base64'); do
81
+ _jq() {
82
+ echo "$feedback_item" | base64 --decode | jq -r "$1"
83
+ }
84
+
85
+ FEEDBACK_TEXT=$(_jq '.')
86
+ IS_IN_SCOPE="false"
87
+
88
+ # Check if feedback relates to acceptance criteria or inScope items
89
+ for criterion in $(echo "$ACCEPTANCE_CRITERIA" | jq -r '.[] | @base64'); do
90
+ CRITERION_TEXT=$(echo "$criterion" | base64 --decode)
91
+ if echo "$FEEDBACK_TEXT" | grep -iq "$(echo "$CRITERION_TEXT" | head -c 20)"; then
92
+ IS_IN_SCOPE="true"
93
+ break
94
+ fi
95
+ done
96
+
97
+ # Add to appropriate category
98
+ if [ "$IS_IN_SCOPE" = "true" ]; then
99
+ IN_SCOPE_ITEMS=$(echo "$IN_SCOPE_ITEMS" | jq --arg item "$FEEDBACK_TEXT" '. + [$item]')
100
+ else
101
+ OUT_OF_SCOPE_ITEMS=$(echo "$OUT_OF_SCOPE_ITEMS" | jq --arg item "$FEEDBACK_TEXT" '. + [$item]')
102
+ fi
103
+ done
104
+
105
+ # Calculate in-scope consensus (consensus weighted by in-scope ratio)
106
+ TOTAL_ITEMS=$(echo "$FEEDBACK_JSON" | jq 'length')
107
+ IN_SCOPE_COUNT=$(echo "$IN_SCOPE_ITEMS" | jq 'length')
108
+
109
+ if [ "$TOTAL_ITEMS" -gt 0 ]; then
110
+ # If there's feedback, weight consensus by in-scope ratio
111
+ IN_SCOPE_CONSENSUS=$(echo "scale=2; $CONSENSUS * $IN_SCOPE_COUNT / $TOTAL_ITEMS" | bc -l)
112
+ else
113
+ # No feedback means validators had no concerns - use full consensus
114
+ IN_SCOPE_CONSENSUS=$CONSENSUS
115
+ fi
116
+ else
117
+ # No feedback at all - use full consensus as in-scope
118
+ IN_SCOPE_CONSENSUS=$CONSENSUS
119
+ fi
120
+
121
+ echo " In-Scope Items: $(echo "$IN_SCOPE_ITEMS" | jq 'length')"
122
+ echo " Out-of-Scope Items: $(echo "$OUT_OF_SCOPE_ITEMS" | jq 'length')"
123
+ echo " In-Scope Consensus: $IN_SCOPE_CONSENSUS"
124
+ echo ""
125
+
126
+ # Step 3: Apply GOAP decision framework with scope enforcement
127
+ echo "[Step 3] Applying GOAP decision framework with scope enforcement..."
128
+
129
+ # Default threshold (standard mode)
130
+ CONSENSUS_THRESHOLD=0.90
131
+ MAX_ITERATIONS=10
132
+
133
+ # Determine decision based on scope-aware consensus
134
+ DECISION_TYPE=""
135
+ DECISION_REASONING=""
136
+ DECISION_CONFIDENCE=0
137
+ BACKLOG_ITEMS="[]"
138
+
139
+ if (( $(echo "$CONSENSUS >= $CONSENSUS_THRESHOLD" | bc -l) )); then
140
+ # High consensus - check if there are out-of-scope items
141
+ OUT_OF_SCOPE_COUNT=$(echo "$OUT_OF_SCOPE_ITEMS" | jq 'length')
142
+
143
+ if [ "$OUT_OF_SCOPE_COUNT" -gt 0 ]; then
144
+ DECISION_TYPE="DEFER_AND_PROCEED"
145
+ DECISION_REASONING="In-scope work complete (consensus $CONSENSUS >= $CONSENSUS_THRESHOLD). Deferring $OUT_OF_SCOPE_COUNT out-of-scope items to backlog."
146
+ DECISION_CONFIDENCE=0.92
147
+ BACKLOG_ITEMS="$OUT_OF_SCOPE_ITEMS"
148
+ echo " Decision: DEFER_AND_PROCEED (moving out-of-scope items to backlog)"
149
+ else
150
+ DECISION_TYPE="PROCEED"
151
+ DECISION_REASONING="All work complete, consensus threshold met ($CONSENSUS >= $CONSENSUS_THRESHOLD)"
152
+ DECISION_CONFIDENCE=0.95
153
+ echo " Decision: PROCEED (consensus exceeds threshold, no out-of-scope items)"
154
+ fi
155
+ elif [ "$ITERATION" -lt "$MAX_ITERATIONS" ]; then
156
+ # Below consensus - check if in-scope consensus would meet threshold
157
+ if (( $(echo "$IN_SCOPE_CONSENSUS >= $CONSENSUS_THRESHOLD" | bc -l) )); then
158
+ # In-scope work is good, out-of-scope items preventing consensus
159
+ DECISION_TYPE="DEFER_AND_PROCEED"
160
+ DECISION_REASONING="In-scope consensus met ($IN_SCOPE_CONSENSUS >= $CONSENSUS_THRESHOLD). Out-of-scope items preventing overall consensus - deferring to backlog."
161
+ DECISION_CONFIDENCE=0.88
162
+ BACKLOG_ITEMS="$OUT_OF_SCOPE_ITEMS"
163
+ echo " Decision: DEFER_AND_PROCEED (in-scope work complete, deferring out-of-scope blockers)"
164
+ else
165
+ # In-scope work needs improvement
166
+ DECISION_TYPE="ITERATE"
167
+ DECISION_REASONING="In-scope consensus below threshold ($IN_SCOPE_CONSENSUS < $CONSENSUS_THRESHOLD), targeted improvements needed"
168
+ DECISION_CONFIDENCE=0.90
169
+ BACKLOG_ITEMS="$OUT_OF_SCOPE_ITEMS"
170
+ echo " Decision: ITERATE (in-scope work needs improvement, iteration $ITERATION/$MAX_ITERATIONS)"
171
+ fi
172
+ else
173
+ DECISION_TYPE="ABORT"
174
+ DECISION_REASONING="Max iterations reached ($ITERATION >= $MAX_ITERATIONS) without meeting in-scope consensus threshold"
175
+ DECISION_CONFIDENCE=0.85
176
+ echo " Decision: ABORT (max iterations reached)"
177
+ fi
178
+
179
+ echo ""
180
+
181
+ # Build structured decision JSON with scope analysis
182
+ DECISION=$(jq -n \
183
+ --arg decision "$DECISION_TYPE" \
184
+ --arg reasoning "$DECISION_REASONING" \
185
+ --arg confidence "$DECISION_CONFIDENCE" \
186
+ --argjson in_scope_items "$IN_SCOPE_ITEMS" \
187
+ --argjson out_of_scope_items "$OUT_OF_SCOPE_ITEMS" \
188
+ --arg in_scope_consensus "$IN_SCOPE_CONSENSUS" \
189
+ --argjson backlog_items "$BACKLOG_ITEMS" \
190
+ '{
191
+ decision: $decision,
192
+ reasoning: $reasoning,
193
+ confidence: ($confidence | tonumber),
194
+ scope_analysis: {
195
+ in_scope_consensus: ($in_scope_consensus | tonumber),
196
+ in_scope_items: $in_scope_items,
197
+ out_of_scope_items: $out_of_scope_items
198
+ },
199
+ backlog_items: $backlog_items
200
+ }')
201
+
202
+ echo "[Step 4] Managing backlog items..."
203
+ if [ "$(echo "$BACKLOG_ITEMS" | jq 'length')" -gt 0 ]; then
204
+ # Store backlog items in Redis
205
+ BACKLOG_KEY="swarm:${TASK_ID}:backlog"
206
+ echo "$BACKLOG_ITEMS" | redis-cli -x LPUSH "$BACKLOG_KEY" >/dev/null
207
+ echo " ✓ Stored $(echo "$BACKLOG_ITEMS" | jq 'length') backlog items in Redis: $BACKLOG_KEY"
208
+
209
+ # Persist backlog to file for human review
210
+ BACKLOG_FILE=".claude/data/backlog/${TASK_ID}.json"
211
+ mkdir -p "$(dirname "$BACKLOG_FILE")"
212
+
213
+ BACKLOG_RECORD=$(jq -n \
214
+ --arg task_id "$TASK_ID" \
215
+ --arg timestamp "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
216
+ --arg epic_goal "$EPIC_GOAL" \
217
+ --argjson items "$BACKLOG_ITEMS" \
218
+ '{
219
+ task_id: $task_id,
220
+ timestamp: $timestamp,
221
+ epic_goal: $epic_goal,
222
+ deferred_items: $items,
223
+ status: "pending_review"
224
+ }')
225
+
226
+ echo "$BACKLOG_RECORD" > "$BACKLOG_FILE"
227
+ echo " ✓ Backlog persisted to: $BACKLOG_FILE"
228
+ else
229
+ echo " No backlog items to store"
230
+ fi
231
+ echo ""
232
+
233
+ echo "[Step 5] Pushing decision to Redis..."
234
+ DECISION_KEY="swarm:${TASK_ID}:${AGENT_ID}:decision"
235
+ echo "$DECISION" | redis-cli -x LPUSH "$DECISION_KEY" >/dev/null
236
+ echo " ✓ Decision pushed to: $DECISION_KEY"
237
+ echo " Content: $DECISION"
238
+ echo ""
239
+
240
+ # Step 6: Signal completion
241
+ echo "[Step 6] Signaling completion..."
242
+ DONE_KEY="swarm:${TASK_ID}:${AGENT_ID}:done"
243
+ redis-cli LPUSH "$DONE_KEY" "complete" >/dev/null
244
+ echo " ✓ Completion signaled"
245
+ echo ""
246
+
247
+ # Step 7: Report confidence
248
+ echo "[Step 7] Reporting confidence..."
249
+ ./.claude/skills/redis-coordination/invoke-waiting-mode.sh report \
250
+ --task-id "$TASK_ID" \
251
+ --agent-id "$AGENT_ID" \
252
+ --confidence "$DECISION_CONFIDENCE"
253
+
254
+ echo ""
255
+ echo "🎉 Product Owner decision execution complete!"
256
+ echo " Decision: $DECISION_TYPE"
257
+ echo " Consensus: $CONSENSUS"
258
+ echo " Iteration: $ITERATION"