claude-flow-novice 2.14.2 → 2.14.4
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.
- package/.claude/commands/CFN_LOOP_TASK_MODE.md +4 -47
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
- package/claude-assets/commands/CFN_LOOP_TASK_MODE.md +4 -47
- package/claude-assets/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
- package/dist/cli/agent-prompt-builder.js +25 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/config-manager.js +91 -109
- package/package.json +1 -1
- package/scripts/init-project.js +1 -1
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +0 -260
- package/.claude/skills/cfn-redis-coordination/README.md +0 -65
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
- package/.claude/skills/cfn-redis-coordination/SKILL.md +0 -720
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
- package/.claude/skills/cfn-redis-coordination/examples/README.md +0 -73
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +0 -126
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +0 -148
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
- package/.claude/skills/cfn-redis-coordination/log-event.sh +0 -109
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +0 -674
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +0 -66
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +0 -31
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +0 -134
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +0 -162
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +0 -103
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
- package/.claude/skills/cfn-redis-coordination/signal.sh +0 -38
- package/.claude/skills/cfn-redis-coordination/store-context.sh +0 -86
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
- package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
- package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
- package/claude-assets/skills/cfn-redis-coordination/LOGGING.md +0 -260
- package/claude-assets/skills/cfn-redis-coordination/README.md +0 -65
- package/claude-assets/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
- package/claude-assets/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
- package/claude-assets/skills/cfn-redis-coordination/SKILL.md +0 -720
- package/claude-assets/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
- package/claude-assets/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
- package/claude-assets/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
- package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
- package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
- package/claude-assets/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
- package/claude-assets/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
- package/claude-assets/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
- package/claude-assets/skills/cfn-redis-coordination/examples/README.md +0 -73
- package/claude-assets/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
- package/claude-assets/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
- package/claude-assets/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
- package/claude-assets/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
- package/claude-assets/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
- package/claude-assets/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
- package/claude-assets/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
- package/claude-assets/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
- package/claude-assets/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
- package/claude-assets/skills/cfn-redis-coordination/heartbeat.sh +0 -126
- package/claude-assets/skills/cfn-redis-coordination/init-swarm.sh +0 -148
- package/claude-assets/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
- package/claude-assets/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
- package/claude-assets/skills/cfn-redis-coordination/log-event.sh +0 -109
- package/claude-assets/skills/cfn-redis-coordination/metrics-export.sh +0 -674
- package/claude-assets/skills/cfn-redis-coordination/metrics-schema.json +0 -66
- package/claude-assets/skills/cfn-redis-coordination/metrics-storage.md +0 -31
- package/claude-assets/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
- package/claude-assets/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/claude-assets/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
- package/claude-assets/skills/cfn-redis-coordination/priority_wake.py +0 -134
- package/claude-assets/skills/cfn-redis-coordination/query-dlq.sh +0 -162
- package/claude-assets/skills/cfn-redis-coordination/query-logs.sh +0 -103
- package/claude-assets/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
- package/claude-assets/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
- package/claude-assets/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
- package/claude-assets/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
- package/claude-assets/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
- package/claude-assets/skills/cfn-redis-coordination/signal.sh +0 -38
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +0 -86
- package/claude-assets/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
- package/claude-assets/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
- package/claude-assets/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
- package/claude-assets/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
- package/claude-assets/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
- package/claude-assets/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
- package/claude-assets/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
- package/claude-assets/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
- package/claude-assets/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
- package/claude-assets/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
- package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
- package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
- package/claude-assets/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
- package/claude-assets/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
- package/claude-assets/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
- package/claude-assets/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
- package/claude-assets/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Utility functions for quorum testing
|
|
3
|
-
|
|
4
|
-
# Check absolute quorum
|
|
5
|
-
check_quorum() {
|
|
6
|
-
local total_agents="$1"
|
|
7
|
-
local quorum="$2"
|
|
8
|
-
local completed_agents="$3"
|
|
9
|
-
|
|
10
|
-
if [ "$completed_agents" -ge "$quorum" ]; then
|
|
11
|
-
echo "SUCCESS"
|
|
12
|
-
else
|
|
13
|
-
echo "FAILURE"
|
|
14
|
-
fi
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
# Check percentage-based quorum
|
|
18
|
-
check_percentage_quorum() {
|
|
19
|
-
local total_agents="$1"
|
|
20
|
-
local quorum_percentage="$2"
|
|
21
|
-
local completed_agents="$3"
|
|
22
|
-
|
|
23
|
-
# Calculate the minimum number of agents required (round up)
|
|
24
|
-
local required_agents=$(echo "scale=0; ceil($total_agents * $quorum_percentage)" | bc)
|
|
25
|
-
|
|
26
|
-
if [ "$completed_agents" -ge "$required_agents" ]; then
|
|
27
|
-
echo "SUCCESS"
|
|
28
|
-
else
|
|
29
|
-
echo "FAILURE"
|
|
30
|
-
fi
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
# Graceful degradation strategy
|
|
34
|
-
simulate_graceful_degradation() {
|
|
35
|
-
local total_agents="$1"
|
|
36
|
-
local initial_quorum="$2"
|
|
37
|
-
local max_failures="$3"
|
|
38
|
-
|
|
39
|
-
# Dynamically adjust quorum based on failures
|
|
40
|
-
local current_quorum="$initial_quorum"
|
|
41
|
-
local adjusted_agents=$((total_agents - max_failures))
|
|
42
|
-
local adjusted_quorum_threshold=$(echo "scale=2; $current_quorum * 0.8" | bc)
|
|
43
|
-
|
|
44
|
-
if (( $(echo "$adjusted_quorum_threshold <= 0.65" | bc -l) )); then
|
|
45
|
-
echo "HALT" # Prevent degradation below minimum viable quorum
|
|
46
|
-
else
|
|
47
|
-
echo "$(check_percentage_quorum "$adjusted_agents" "$adjusted_quorum_threshold" "$adjusted_agents")"
|
|
48
|
-
fi
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
# Assertion functions
|
|
52
|
-
assert_equals() {
|
|
53
|
-
local actual="$1"
|
|
54
|
-
local expected="$2"
|
|
55
|
-
local message="${3:-Assertion failed}"
|
|
56
|
-
|
|
57
|
-
if [ "$actual" != "$expected" ]; then
|
|
58
|
-
echo "FAIL: $message (Expected: $expected, Got: $actual)"
|
|
59
|
-
exit 1
|
|
60
|
-
fi
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
assert_greater_than() {
|
|
64
|
-
local actual="$1"
|
|
65
|
-
local expected="$2"
|
|
66
|
-
local message="${3:-Assertion failed}"
|
|
67
|
-
|
|
68
|
-
if [ "$actual" -le "$expected" ]; then
|
|
69
|
-
echo "FAIL: $message (Expected > $expected, Got: $actual)"
|
|
70
|
-
exit 1
|
|
71
|
-
fi
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
assert_not_empty() {
|
|
75
|
-
local value="$1"
|
|
76
|
-
local message="${2:-Value is empty}"
|
|
77
|
-
|
|
78
|
-
if [ -z "$value" ]; then
|
|
79
|
-
echo "FAIL: $message"
|
|
80
|
-
exit 1
|
|
81
|
-
fi
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
# Error handling and logging
|
|
85
|
-
log_error() {
|
|
86
|
-
local message="$1"
|
|
87
|
-
echo "[ERROR] $message" >&2
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
# Cleanup function
|
|
91
|
-
cleanup() {
|
|
92
|
-
# Remove any temporary files or reset test environments
|
|
93
|
-
echo "Cleaning up test environment..."
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
# Trap to ensure cleanup happens even if script fails
|
|
97
|
-
trap cleanup EXIT
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
# Test script for Redis Coordination Waiting Mode (v1.3.0)
|
|
5
|
-
|
|
6
|
-
# Utility functions
|
|
7
|
-
log_success() {
|
|
8
|
-
echo -e "\033[32m[PASS]\033[0m $1"
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
log_failure() {
|
|
12
|
-
echo -e "\033[31m[FAIL]\033[0m $1"
|
|
13
|
-
exit 1
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
# Setup test variables
|
|
17
|
-
TASK_ID="test-task-$(date +%s)"
|
|
18
|
-
AGENT_IDS=("agent1" "agent2" "agent3")
|
|
19
|
-
|
|
20
|
-
# Ensure clean test environment
|
|
21
|
-
./invoke-redis-pattern.sh
|
|
22
|
-
|
|
23
|
-
# Test 1: Enter Waiting Mode
|
|
24
|
-
echo "### Test 1: Enter Waiting Mode ###"
|
|
25
|
-
wait_result=$(./invoke-redis-pattern.sh wait --task-id "$TASK_ID" --agent-id "${AGENT_IDS[0]}" --context "test-context")
|
|
26
|
-
echo "$wait_result" | jq -e '.status == "timeout"' > /dev/null || log_failure "Failed to enter waiting mode"
|
|
27
|
-
log_success "Entered waiting mode successfully"
|
|
28
|
-
|
|
29
|
-
# Test 2: Wake Agent
|
|
30
|
-
echo -e "\n### Test 2: Wake Agent ###"
|
|
31
|
-
payload='{"iteration": 2, "feedback": "Add error handling"}'
|
|
32
|
-
wake_result=$(./invoke-redis-pattern.sh wake --task-id "$TASK_ID" --agent-id "${AGENT_IDS[0]}" --payload "$payload")
|
|
33
|
-
echo "$wake_result" | jq -e '.status == "success"' > /dev/null || log_failure "Failed to wake agent"
|
|
34
|
-
log_success "Woke agent successfully"
|
|
35
|
-
|
|
36
|
-
# Test 3: Report Result
|
|
37
|
-
echo -e "\n### Test 3: Report Result ###"
|
|
38
|
-
report_result=$(./invoke-redis-pattern.sh report --task-id "$TASK_ID" --agent-id "${AGENT_IDS[0]}" --confidence 0.92 --result '{"key": "value"}')
|
|
39
|
-
echo "$report_result" | jq -e '.status == "success" and .confidence == 0.92' > /dev/null || log_failure "Failed to report result"
|
|
40
|
-
log_success "Reported result successfully"
|
|
41
|
-
|
|
42
|
-
# Test 4: Collect Consensus
|
|
43
|
-
echo -e "\n### Test 4: Collect Consensus ###"
|
|
44
|
-
for agent in "${AGENT_IDS[@]}"; do
|
|
45
|
-
./invoke-redis-pattern.sh report --task-id "$TASK_ID" --agent-id "$agent" --confidence 0.95 --result "{\"result\": \"test-$agent\"}"
|
|
46
|
-
done
|
|
47
|
-
|
|
48
|
-
collect_result=$(./invoke-redis-pattern.sh collect --task-id "$TASK_ID" --agent-ids "$(IFS=,; echo "${AGENT_IDS[*]}")")
|
|
49
|
-
echo "$collect_result" | jq -e '.status == "consensus" and .avgConfidence >= 0.90' > /dev/null || log_failure "Failed to collect consensus"
|
|
50
|
-
log_success "Collected consensus successfully"
|
|
51
|
-
|
|
52
|
-
# Test 5: Timeout Handling
|
|
53
|
-
echo -e "\n### Test 5: Timeout Handling ###"
|
|
54
|
-
timeout_task_id="timeout-test-$(date +%s)"
|
|
55
|
-
timeout_result=$(./invoke-redis-pattern.sh wait --task-id "$timeout_task_id" --agent-id "${AGENT_IDS[0]}" --context "timeout-test")
|
|
56
|
-
echo "$timeout_result" | jq -e '.status == "timeout"' > /dev/null || log_failure "Failed to handle timeout"
|
|
57
|
-
log_success "Timeout handled successfully"
|
|
58
|
-
|
|
59
|
-
echo -e "\n\033[32m✅ ALL REDIS COORDINATION TESTS PASSED!\033[0m"
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# CFN Loop Metrics Dashboard
|
|
2
|
-
|
|
3
|
-
## Grafana Dashboard for CFN Loop Performance Monitoring
|
|
4
|
-
|
|
5
|
-
### Dashboard Overview
|
|
6
|
-
|
|
7
|
-
This Grafana dashboard is designed to visualize and monitor the performance metrics of Continuous Flow Normalization (CFN) Loop iterations. It provides insights into:
|
|
8
|
-
|
|
9
|
-
- Iteration Duration Trends
|
|
10
|
-
- Consensus Convergence
|
|
11
|
-
- Agent Latency
|
|
12
|
-
- Error Rates
|
|
13
|
-
|
|
14
|
-
### Prerequisites
|
|
15
|
-
|
|
16
|
-
- Prometheus as the metrics backend
|
|
17
|
-
- Grafana 7.3.7 or higher
|
|
18
|
-
- Configured Prometheus metrics for CFN Loop
|
|
19
|
-
|
|
20
|
-
### Metrics Requirements
|
|
21
|
-
|
|
22
|
-
The following Prometheus metrics must be exported:
|
|
23
|
-
|
|
24
|
-
1. `cfn_loop_iteration_duration_seconds`
|
|
25
|
-
- Time series of iteration durations
|
|
26
|
-
- Labels: `iteration`
|
|
27
|
-
|
|
28
|
-
2. `cfn_loop_confidence`
|
|
29
|
-
- Confidence scores for Loop 3
|
|
30
|
-
- Labels: `stage="loop3"`
|
|
31
|
-
|
|
32
|
-
3. `cfn_loop_consensus`
|
|
33
|
-
- Consensus scores for Loop 2
|
|
34
|
-
- Labels: `stage="loop2"`
|
|
35
|
-
|
|
36
|
-
4. `cfn_loop_agent_latency_seconds_bucket`
|
|
37
|
-
- Histogram of agent latencies
|
|
38
|
-
- Labels: `agent_id`
|
|
39
|
-
|
|
40
|
-
5. `cfn_loop_errors_total`
|
|
41
|
-
- Counter for different error types
|
|
42
|
-
- Labels: `error_type` (e.g., "timeout", "retry", "quorum_fallback", "gate_failure")
|
|
43
|
-
|
|
44
|
-
### Installation Steps
|
|
45
|
-
|
|
46
|
-
1. Open Grafana
|
|
47
|
-
2. Navigate to Dashboard > Import
|
|
48
|
-
3. Upload `grafana-dashboard.json`
|
|
49
|
-
4. Select Prometheus data source
|
|
50
|
-
5. Click "Import"
|
|
51
|
-
|
|
52
|
-
### Customization
|
|
53
|
-
|
|
54
|
-
- Adjust time ranges in the dashboard settings
|
|
55
|
-
- Modify thresholds in panel configurations as needed
|
|
56
|
-
|
|
57
|
-
### Troubleshooting
|
|
58
|
-
|
|
59
|
-
- Ensure all required Prometheus metrics are being exported
|
|
60
|
-
- Check data source configuration
|
|
61
|
-
- Verify metric naming matches exported metrics
|
|
62
|
-
|
|
63
|
-
### Performance Tuning
|
|
64
|
-
|
|
65
|
-
The dashboard is optimized for minimal performance overhead:
|
|
66
|
-
- Uses efficient PromQL queries
|
|
67
|
-
- Configurable refresh intervals
|
|
68
|
-
- Dark theme for reduced eye strain during long monitoring sessions
|
|
69
|
-
|
|
70
|
-
### Version
|
|
71
|
-
|
|
72
|
-
- Dashboard Version: 1.0.0
|
|
73
|
-
- Last Updated: 2025-10-19
|
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"annotations": {
|
|
3
|
-
"list": []
|
|
4
|
-
},
|
|
5
|
-
"editable": true,
|
|
6
|
-
"gnetId": null,
|
|
7
|
-
"graphTooltip": 0,
|
|
8
|
-
"id": null,
|
|
9
|
-
"links": [],
|
|
10
|
-
"panels": [
|
|
11
|
-
{
|
|
12
|
-
"aliasColors": {},
|
|
13
|
-
"bars": false,
|
|
14
|
-
"dashLength": 10,
|
|
15
|
-
"dashes": false,
|
|
16
|
-
"datasource": "prometheus",
|
|
17
|
-
"description": "Duration of each CFN Loop iteration over time",
|
|
18
|
-
"fill": 1,
|
|
19
|
-
"gridPos": {
|
|
20
|
-
"h": 8,
|
|
21
|
-
"w": 12,
|
|
22
|
-
"x": 0,
|
|
23
|
-
"y": 0
|
|
24
|
-
},
|
|
25
|
-
"id": 1,
|
|
26
|
-
"legend": {
|
|
27
|
-
"avg": false,
|
|
28
|
-
"current": false,
|
|
29
|
-
"max": false,
|
|
30
|
-
"min": false,
|
|
31
|
-
"show": true,
|
|
32
|
-
"total": false,
|
|
33
|
-
"values": false
|
|
34
|
-
},
|
|
35
|
-
"lines": true,
|
|
36
|
-
"linewidth": 1,
|
|
37
|
-
"links": [],
|
|
38
|
-
"nullPointMode": "null",
|
|
39
|
-
"percentage": false,
|
|
40
|
-
"pointradius": 5,
|
|
41
|
-
"points": false,
|
|
42
|
-
"renderer": "flot",
|
|
43
|
-
"seriesOverrides": [],
|
|
44
|
-
"spaceLength": 10,
|
|
45
|
-
"stack": false,
|
|
46
|
-
"steppedLine": false,
|
|
47
|
-
"targets": [
|
|
48
|
-
{
|
|
49
|
-
"expr": "cfn_loop_iteration_duration_seconds",
|
|
50
|
-
"format": "time_series",
|
|
51
|
-
"intervalFactor": 2,
|
|
52
|
-
"legendFormat": "Iteration {{iteration}}",
|
|
53
|
-
"refId": "A"
|
|
54
|
-
}
|
|
55
|
-
],
|
|
56
|
-
"thresholds": [],
|
|
57
|
-
"timeFrom": null,
|
|
58
|
-
"timeRegions": [],
|
|
59
|
-
"timeShift": null,
|
|
60
|
-
"title": "Iteration Duration Trends",
|
|
61
|
-
"tooltip": {
|
|
62
|
-
"shared": true,
|
|
63
|
-
"sort": 0,
|
|
64
|
-
"value_type": "individual"
|
|
65
|
-
},
|
|
66
|
-
"type": "graph",
|
|
67
|
-
"xaxis": {
|
|
68
|
-
"buckets": null,
|
|
69
|
-
"mode": "time",
|
|
70
|
-
"name": null,
|
|
71
|
-
"show": true,
|
|
72
|
-
"values": []
|
|
73
|
-
},
|
|
74
|
-
"yaxes": [
|
|
75
|
-
{
|
|
76
|
-
"format": "s",
|
|
77
|
-
"label": "Duration",
|
|
78
|
-
"logBase": 1,
|
|
79
|
-
"max": null,
|
|
80
|
-
"min": "0",
|
|
81
|
-
"show": true
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"format": "short",
|
|
85
|
-
"label": null,
|
|
86
|
-
"logBase": 1,
|
|
87
|
-
"max": null,
|
|
88
|
-
"min": null,
|
|
89
|
-
"show": true
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
"yaxis": {
|
|
93
|
-
"align": false,
|
|
94
|
-
"alignLevel": null
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"cacheTimeout": null,
|
|
99
|
-
"datasource": "prometheus",
|
|
100
|
-
"description": "Consensus and confidence across CFN Loop iterations",
|
|
101
|
-
"fieldConfig": {
|
|
102
|
-
"defaults": {
|
|
103
|
-
"color": {
|
|
104
|
-
"mode": "thresholds"
|
|
105
|
-
},
|
|
106
|
-
"mappings": [],
|
|
107
|
-
"thresholds": {
|
|
108
|
-
"mode": "absolute",
|
|
109
|
-
"steps": [
|
|
110
|
-
{
|
|
111
|
-
"color": "red",
|
|
112
|
-
"value": null
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"color": "yellow",
|
|
116
|
-
"value": 0.75
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"color": "green",
|
|
120
|
-
"value": 0.90
|
|
121
|
-
}
|
|
122
|
-
]
|
|
123
|
-
},
|
|
124
|
-
"unit": "percentunit"
|
|
125
|
-
},
|
|
126
|
-
"overrides": []
|
|
127
|
-
},
|
|
128
|
-
"gridPos": {
|
|
129
|
-
"h": 8,
|
|
130
|
-
"w": 12,
|
|
131
|
-
"x": 12,
|
|
132
|
-
"y": 0
|
|
133
|
-
},
|
|
134
|
-
"id": 2,
|
|
135
|
-
"links": [],
|
|
136
|
-
"options": {
|
|
137
|
-
"orientation": "auto",
|
|
138
|
-
"reduceOptions": {
|
|
139
|
-
"calcs": [
|
|
140
|
-
"mean"
|
|
141
|
-
],
|
|
142
|
-
"fields": "",
|
|
143
|
-
"values": false
|
|
144
|
-
},
|
|
145
|
-
"showThresholdLabels": false,
|
|
146
|
-
"showThresholdMarkers": true
|
|
147
|
-
},
|
|
148
|
-
"pluginVersion": "7.3.7",
|
|
149
|
-
"targets": [
|
|
150
|
-
{
|
|
151
|
-
"expr": "cfn_loop_confidence{stage=\"loop3\"}",
|
|
152
|
-
"format": "time_series",
|
|
153
|
-
"intervalFactor": 2,
|
|
154
|
-
"legendFormat": "Loop 3 Confidence",
|
|
155
|
-
"refId": "A"
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"expr": "cfn_loop_consensus{stage=\"loop2\"}",
|
|
159
|
-
"format": "time_series",
|
|
160
|
-
"intervalFactor": 2,
|
|
161
|
-
"legendFormat": "Loop 2 Consensus",
|
|
162
|
-
"refId": "B"
|
|
163
|
-
}
|
|
164
|
-
],
|
|
165
|
-
"timeFrom": null,
|
|
166
|
-
"title": "Consensus Convergence",
|
|
167
|
-
"type": "gauge"
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"cards": {
|
|
171
|
-
"cardPadding": null,
|
|
172
|
-
"cardRound": null
|
|
173
|
-
},
|
|
174
|
-
"color": {
|
|
175
|
-
"cardColor": "#FADE2A",
|
|
176
|
-
"colorScale": "linear",
|
|
177
|
-
"colorScheme": "interpolateOranges",
|
|
178
|
-
"exponent": 0.5,
|
|
179
|
-
"mode": "opacity"
|
|
180
|
-
},
|
|
181
|
-
"datasource": "prometheus",
|
|
182
|
-
"description": "Agent latency heatmap to identify performance bottlenecks",
|
|
183
|
-
"gridPos": {
|
|
184
|
-
"h": 8,
|
|
185
|
-
"w": 12,
|
|
186
|
-
"x": 0,
|
|
187
|
-
"y": 8
|
|
188
|
-
},
|
|
189
|
-
"heatmap": {},
|
|
190
|
-
"hideZeroBuckets": false,
|
|
191
|
-
"highlightCards": true,
|
|
192
|
-
"id": 3,
|
|
193
|
-
"legend": {
|
|
194
|
-
"show": false
|
|
195
|
-
},
|
|
196
|
-
"links": [],
|
|
197
|
-
"targets": [
|
|
198
|
-
{
|
|
199
|
-
"expr": "sum(rate(cfn_loop_agent_latency_seconds_bucket[5m])) by (agent_id)",
|
|
200
|
-
"format": "heatmap",
|
|
201
|
-
"intervalFactor": 2,
|
|
202
|
-
"legendFormat": "{{agent_id}}",
|
|
203
|
-
"refId": "A"
|
|
204
|
-
}
|
|
205
|
-
],
|
|
206
|
-
"title": "Agent Latency Heatmap",
|
|
207
|
-
"tooltip": {
|
|
208
|
-
"show": true,
|
|
209
|
-
"showPalette": false
|
|
210
|
-
},
|
|
211
|
-
"type": "heatmap",
|
|
212
|
-
"xAxis": {
|
|
213
|
-
"show": true
|
|
214
|
-
},
|
|
215
|
-
"yAxis": {
|
|
216
|
-
"decimals": 0,
|
|
217
|
-
"show": true,
|
|
218
|
-
"title": "Agent"
|
|
219
|
-
},
|
|
220
|
-
"yBucketBound": "auto"
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
"aliasColors": {},
|
|
224
|
-
"bars": true,
|
|
225
|
-
"dashLength": 10,
|
|
226
|
-
"dashes": false,
|
|
227
|
-
"datasource": "prometheus",
|
|
228
|
-
"description": "Error and fallback metrics for CFN Loop iterations",
|
|
229
|
-
"fill": 1,
|
|
230
|
-
"gridPos": {
|
|
231
|
-
"h": 8,
|
|
232
|
-
"w": 12,
|
|
233
|
-
"x": 12,
|
|
234
|
-
"y": 8
|
|
235
|
-
},
|
|
236
|
-
"id": 4,
|
|
237
|
-
"legend": {
|
|
238
|
-
"avg": false,
|
|
239
|
-
"current": false,
|
|
240
|
-
"max": false,
|
|
241
|
-
"min": false,
|
|
242
|
-
"show": true,
|
|
243
|
-
"total": false,
|
|
244
|
-
"values": false
|
|
245
|
-
},
|
|
246
|
-
"lines": false,
|
|
247
|
-
"linewidth": 1,
|
|
248
|
-
"links": [],
|
|
249
|
-
"nullPointMode": "null",
|
|
250
|
-
"percentage": false,
|
|
251
|
-
"pointradius": 5,
|
|
252
|
-
"points": false,
|
|
253
|
-
"renderer": "flot",
|
|
254
|
-
"seriesOverrides": [],
|
|
255
|
-
"spaceLength": 10,
|
|
256
|
-
"stack": true,
|
|
257
|
-
"steppedLine": false,
|
|
258
|
-
"targets": [
|
|
259
|
-
{
|
|
260
|
-
"expr": "sum(increase(cfn_loop_errors_total[1h])) by (error_type)",
|
|
261
|
-
"format": "time_series",
|
|
262
|
-
"intervalFactor": 2,
|
|
263
|
-
"legendFormat": "{{error_type}}",
|
|
264
|
-
"refId": "A"
|
|
265
|
-
}
|
|
266
|
-
],
|
|
267
|
-
"thresholds": [],
|
|
268
|
-
"timeFrom": null,
|
|
269
|
-
"timeRegions": [],
|
|
270
|
-
"timeShift": null,
|
|
271
|
-
"title": "Error Rates",
|
|
272
|
-
"tooltip": {
|
|
273
|
-
"shared": true,
|
|
274
|
-
"sort": 0,
|
|
275
|
-
"value_type": "individual"
|
|
276
|
-
},
|
|
277
|
-
"type": "graph",
|
|
278
|
-
"xaxis": {
|
|
279
|
-
"buckets": null,
|
|
280
|
-
"mode": "time",
|
|
281
|
-
"name": null,
|
|
282
|
-
"show": true,
|
|
283
|
-
"values": []
|
|
284
|
-
},
|
|
285
|
-
"yaxes": [
|
|
286
|
-
{
|
|
287
|
-
"format": "short",
|
|
288
|
-
"label": "Error Count",
|
|
289
|
-
"logBase": 1,
|
|
290
|
-
"max": null,
|
|
291
|
-
"min": "0",
|
|
292
|
-
"show": true
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
"format": "short",
|
|
296
|
-
"label": null,
|
|
297
|
-
"logBase": 1,
|
|
298
|
-
"max": null,
|
|
299
|
-
"min": null,
|
|
300
|
-
"show": true
|
|
301
|
-
}
|
|
302
|
-
],
|
|
303
|
-
"yaxis": {
|
|
304
|
-
"align": false,
|
|
305
|
-
"alignLevel": null
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
],
|
|
309
|
-
"schemaVersion": 22,
|
|
310
|
-
"style": "dark",
|
|
311
|
-
"tags": [
|
|
312
|
-
"cfn-loop",
|
|
313
|
-
"redis-coordination",
|
|
314
|
-
"performance"
|
|
315
|
-
],
|
|
316
|
-
"templating": {
|
|
317
|
-
"list": []
|
|
318
|
-
},
|
|
319
|
-
"time": {
|
|
320
|
-
"from": "now-6h",
|
|
321
|
-
"to": "now"
|
|
322
|
-
},
|
|
323
|
-
"timepicker": {
|
|
324
|
-
"refresh_intervals": [
|
|
325
|
-
"5s",
|
|
326
|
-
"10s",
|
|
327
|
-
"30s",
|
|
328
|
-
"1m",
|
|
329
|
-
"5m",
|
|
330
|
-
"15m",
|
|
331
|
-
"30m",
|
|
332
|
-
"1h",
|
|
333
|
-
"2h",
|
|
334
|
-
"1d"
|
|
335
|
-
],
|
|
336
|
-
"time_options": [
|
|
337
|
-
"5m",
|
|
338
|
-
"15m",
|
|
339
|
-
"1h",
|
|
340
|
-
"6h",
|
|
341
|
-
"12h",
|
|
342
|
-
"24h",
|
|
343
|
-
"2d",
|
|
344
|
-
"7d",
|
|
345
|
-
"30d"
|
|
346
|
-
]
|
|
347
|
-
},
|
|
348
|
-
"timezone": "",
|
|
349
|
-
"title": "CFN Loop Metrics",
|
|
350
|
-
"uid": "cfn_loop_metrics",
|
|
351
|
-
"version": 1
|
|
352
|
-
}
|