UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes Local RuVector Accelerator and all CFN skills for complete functionality.

178 lines (137 loc) 6.02 kB
# BUG #28: Gate ACK Protocol Integration Missing **Status:** RESOLVED - Protocol Removed (2025-10-22) **Discovered:** 2025-10-22 (Phase 2 validation) **Severity:** P0 - Orchestrator blocks indefinitely **Resolution:** Architecturally incompatible - removed in favor of simple gate signal ## Summary The gate acknowledgment protocol (`invoke-gate-ack.sh`) was created but never integrated with Loop 3 agent completion. Orchestrator calls `verify` but Loop 3 agents never call `acknowledge`, causing indefinite blocking. ## Root Cause **Protocol Design:** ```bash # EXPECTED flow: # 1. Loop 3 agents: invoke-gate-ack.sh acknowledge --gate-confidence $CONF # 2. Orchestrator: invoke-gate-ack.sh verify --required-acks N # 3. verify sends enhanced gate-passed signal ``` **Current Implementation:** ```bash # ACTUAL flow: # 1. Loop 3 agents: (MISSING - no acknowledge call) # 2. Orchestrator: invoke-gate-ack.sh verify --required-acks N (BLOCKS FOREVER) # 3. verify waits for N acknowledgments that never arrive ``` ## Evidence **orchestrate-cfn-loop.sh:1268-1274:** ```bash # Step 2.6: Gate acknowledgment protocol verification if ./.claude/skills/redis-coordination/invoke-gate-ack.sh verify \ --task-id "$TASK_ID" \ --required-acks "$LOOP3_REQUIRED" >/dev/null 2>&1; then echo "[Gate ACK] ✅ Gate verification PASSED using ACK protocol" ``` **invoke-gate-ack.sh:141-144:** ```bash # Get current acknowledgment count CURRENT_COUNT=$(redis-cli GET "$ACK_COUNT_KEY" 2>/dev/null || echo "0") if [ "$CURRENT_COUNT" = "(nil)" ]; then CURRENT_COUNT=0 # Always 0 because Loop 3 never called acknowledge fi ``` **invoke-gate-ack.sh:150:** ```bash if [ "$CURRENT_COUNT" -ge "$REQUIRED_ACKS" ]; then # Never executes because 0 < REQUIRED_ACKS ``` ## Impact **Phase 2 Validation Results:** - Task ID: phase-2-validation-1761172576 - Loop 3: ✅ backend-dev completed (confidence: 0.95) - Gate ACK Verify: ❌ Blocked (waiting for acknowledgments) - Loop 2: ❌ Never spawned - Deliverables: 4/4 created (but validation incomplete) - Execution Time: 12+ minutes (terminated due to blocking) **Blocking Behavior:** - Orchestrator child process (redis-cli) in blocking state - No timeout protection on `verify` call - Loop 2 validators never receive gate-passed signal - Product Owner never consulted - Iteration 2 never spawns ## Fix Required **Location:** `.claude/skills/redis-coordination/orchestrate-cfn-loop.sh` **After Loop 3 completion (lines ~1100-1150), add:** ```bash # Step 2.4: Loop 3 agents acknowledge gate pass (NEW) echo "[Loop 3] Collecting gate acknowledgments from ${LOOP3_COMPLETED} agents..." for unique_id in "${LOOP3_COMPLETED_AGENTS[@]}"; do # Extract confidence from agent output file OUTPUT_FILE="${AGENT_OUTPUT_FILES[$unique_id]}" AGENT_CONFIDENCE=$(jq -r '.confidence // 0.0' "$OUTPUT_FILE" 2>/dev/null || echo "0.75") # Send acknowledgment ./.claude/skills/redis-coordination/invoke-gate-ack.sh acknowledge \ --task-id "$TASK_ID" \ --agent-id "$unique_id" \ --gate-confidence "$AGENT_CONFIDENCE" || { echo " ⚠️ Failed to send ACK from $unique_id (non-fatal)" } done echo "[Loop 3] Gate acknowledgments collected: ${LOOP3_COMPLETED} agents" echo "" ``` **Then continue with existing Step 2.6 (verify call)** ## Alternative Fix: Disable ACK Protocol If ACK protocol is not needed (current gate passing works fine), remove orchestrator lines 1268-1314: ```bash # DELETE these lines: if ./.claude/skills/redis-coordination/invoke-gate-ack.sh verify \ --task-id "$TASK_ID" \ --required-acks "$LOOP3_REQUIRED" >/dev/null 2>&1; then ... else ... fi # KEEP existing fallback behavior: GATE_PASS_KEY="swarm:${TASK_ID}:gate-passed" redis-cli lpush "$GATE_PASS_KEY" "{\"iteration\": $ITERATION, \"loop3_confidence\": $LOOP3_CONSENSUS}" > /dev/null echo "[Loop 3] Gate pass signal sent to Loop 2 validators" ``` This would restore pre-Phase 2 behavior (simple gate signal, no ACK protocol). ## Related Issues - **BUG #25:** Product Owner agent ID mismatch (fixed) - **BUG #27:** Validator default consensus (fixed) - **Phase 2 Blocking:** Direct consequence of this bug ## Testing After fix, validate: 1. Loop 3 agents call `acknowledge` with their confidence scores 2. `verify` collects all acknowledgments 3. Enhanced gate signal sent with average/min/max confidence 4. Loop 2 validators receive signal and spawn correctly 5. No indefinite blocking --- ## Resolution (2025-10-22) **Decision:** Remove ACK protocol entirely **Rationale:** The gate acknowledgment protocol was architecturally incompatible with the orchestrator design: - Loop 2 validators are spawned AFTER the gate signal is sent - Validators receive the signal immediately via BLPOP (blocking read) - No acknowledgment protocol is needed since spawning timing controls signal delivery **Changes Made:** 1. Removed ACK collection code from orchestrate-cfn-loop.sh (lines 1235-1268) 2. Updated Loop 2 requirements in header comments (removed ACK steps) 3. Deleted `.claude/skills/redis-coordination/invoke-gate-ack.sh` (334 lines) 4. Deleted `tests/test-gate-acknowledgment.sh` (test suite) 5. Deleted `docs/GATE_ACK_PROTOCOL.md` (protocol documentation) 6. Simplified gate signaling to single LPUSH operation **Validation:** - Syntax check: PASSED (bash -n orchestrate-cfn-loop.sh) - No references to invoke-gate-ack.sh remain in orchestrator - Gate signal still sent correctly (simple LPUSH approach) **Impact:** - Eliminates blocking behavior caused by waiting for non-existent ACKs - Reduces complexity by 45 lines in orchestrator - Removes 3 unused files (886 total lines) - Restores pre-Phase 2 reliable gate signaling behavior --- **Created:** 2025-10-22 **Resolved:** 2025-10-22 **Priority:** P0 (blocks all CFN Loop execution) **Resolution Time:** 15 minutes (cleanup)