specpulse 1.0.6__py3-none-any.whl → 1.1.0__py3-none-any.whl

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 (43) hide show
  1. specpulse/__init__.py +1 -1
  2. specpulse/cli/main.py +598 -617
  3. specpulse/core/specpulse.py +1110 -1105
  4. specpulse/resources/commands/claude/sp-continue.md +203 -0
  5. specpulse/resources/commands/claude/{plan.md → sp-plan.md} +53 -38
  6. specpulse/resources/commands/claude/sp-pulse.md +142 -0
  7. specpulse/resources/commands/claude/{spec.md → sp-spec.md} +36 -23
  8. specpulse/resources/commands/claude/sp-status.md +170 -0
  9. specpulse/resources/commands/claude/{task.md → sp-task.md} +68 -48
  10. specpulse/resources/commands/gemini/sp-continue.toml +56 -0
  11. specpulse/resources/commands/gemini/sp-plan.toml +68 -0
  12. specpulse/resources/commands/gemini/{pulse.toml → sp-pulse.toml} +12 -6
  13. specpulse/resources/commands/gemini/sp-spec.toml +54 -0
  14. specpulse/resources/commands/gemini/sp-status.toml +61 -0
  15. specpulse/resources/commands/gemini/sp-task.toml +79 -0
  16. specpulse/resources/memory/constitution.md +5 -5
  17. specpulse/resources/memory/context.md +12 -1
  18. specpulse/resources/scripts/{pulse-init.py → sp-pulse-init.py} +6 -6
  19. specpulse/resources/scripts/{pulse-init.sh → sp-pulse-init.sh} +95 -95
  20. specpulse/resources/scripts/{pulse-plan.py → sp-pulse-plan.py} +32 -7
  21. specpulse/resources/scripts/{pulse-plan.sh → sp-pulse-plan.sh} +136 -126
  22. specpulse/resources/scripts/{pulse-spec.py → sp-pulse-spec.py} +26 -6
  23. specpulse/resources/scripts/{pulse-spec.sh → sp-pulse-spec.sh} +126 -103
  24. specpulse/resources/scripts/{pulse-task.py → sp-pulse-task.py} +42 -6
  25. specpulse/resources/scripts/{pulse-task.sh → sp-pulse-task.sh} +32 -16
  26. specpulse/resources/templates/plan.md +206 -206
  27. specpulse/resources/templates/spec.md +125 -125
  28. specpulse/resources/templates/task.md +164 -163
  29. {specpulse-1.0.6.dist-info → specpulse-1.1.0.dist-info}/METADATA +35 -35
  30. specpulse-1.1.0.dist-info/RECORD +41 -0
  31. specpulse/resources/commands/claude/pulse.md +0 -91
  32. specpulse/resources/commands/gemini/plan.toml +0 -59
  33. specpulse/resources/commands/gemini/spec.toml +0 -45
  34. specpulse/resources/commands/gemini/task.toml +0 -69
  35. specpulse/resources/scripts/pulse-init.ps1 +0 -186
  36. specpulse/resources/scripts/pulse-plan.ps1 +0 -251
  37. specpulse/resources/scripts/pulse-spec.ps1 +0 -185
  38. specpulse/resources/scripts/pulse-task.ps1 +0 -263
  39. specpulse-1.0.6.dist-info/RECORD +0 -41
  40. {specpulse-1.0.6.dist-info → specpulse-1.1.0.dist-info}/WHEEL +0 -0
  41. {specpulse-1.0.6.dist-info → specpulse-1.1.0.dist-info}/entry_points.txt +0 -0
  42. {specpulse-1.0.6.dist-info → specpulse-1.1.0.dist-info}/licenses/LICENSE +0 -0
  43. {specpulse-1.0.6.dist-info → specpulse-1.1.0.dist-info}/top_level.txt +0 -0
@@ -46,35 +46,51 @@ if [ -z "$FEATURE_DIR" ]; then
46
46
  fi
47
47
  fi
48
48
 
49
- TASK_FILE="$PROJECT_ROOT/tasks/${FEATURE_DIR}/tasks.md"
49
+ TASK_DIR="$PROJECT_ROOT/tasks/${FEATURE_DIR}"
50
+ PLAN_DIR="$PROJECT_ROOT/plans/${FEATURE_DIR}"
51
+ SPEC_DIR="$PROJECT_ROOT/specs/${FEATURE_DIR}"
50
52
  TEMPLATE_FILE="$PROJECT_ROOT/templates/task.md"
51
- PLAN_FILE="$PROJECT_ROOT/plans/${FEATURE_DIR}/plan.md"
52
- SPEC_FILE="$PROJECT_ROOT/specs/${FEATURE_DIR}/spec.md"
53
53
 
54
54
  # Ensure tasks directory exists
55
- mkdir -p "$(dirname "$TASK_FILE")"
55
+ mkdir -p "$TASK_DIR"
56
56
 
57
- # Check if specification and plan exist first
58
- if [ ! -f "$SPEC_FILE" ]; then
59
- error_exit "Specification file not found: $SPEC_FILE. Please create specification first."
57
+ # Find latest spec file
58
+ if [ -d "$SPEC_DIR" ]; then
59
+ SPEC_FILE=$(find "$SPEC_DIR" -name "spec-*.md" -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2-)
60
+ if [ -z "$SPEC_FILE" ]; then
61
+ error_exit "No specification files found in $SPEC_DIR. Please create specification first."
62
+ fi
63
+ else
64
+ error_exit "Specifications directory not found: $SPEC_DIR. Please create specification first."
60
65
  fi
61
66
 
62
- if [ ! -f "$PLAN_FILE" ]; then
63
- error_exit "Implementation plan not found: $PLAN_FILE. Please create plan first."
67
+ # Find latest plan file
68
+ if [ -d "$PLAN_DIR" ]; then
69
+ PLAN_FILE=$(find "$PLAN_DIR" -name "plan-*.md" -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2-)
70
+ if [ -z "$PLAN_FILE" ]; then
71
+ error_exit "No plan files found in $PLAN_DIR. Please create plan first."
72
+ fi
73
+ else
74
+ error_exit "Plans directory not found: $PLAN_DIR. Please create plan first."
64
75
  fi
65
76
 
77
+ # Find next available task number or create new one
78
+ if [ -d "$TASK_DIR" ]; then
79
+ existing_tasks=$(find "$TASK_DIR" -name "task-*.md" | wc -l)
80
+ task_number=$((existing_tasks + 1))
81
+ else
82
+ task_number=1
83
+ fi
84
+ TASK_FILE="$TASK_DIR/task-$(printf "%03d" $task_number).md"
85
+
66
86
  # Ensure task template exists
67
87
  if [ ! -f "$TEMPLATE_FILE" ]; then
68
88
  error_exit "Template not found: $TEMPLATE_FILE"
69
89
  fi
70
90
 
71
- # Create task file if it doesn't exist
72
- if [ ! -f "$TASK_FILE" ]; then
73
- log "Creating task breakdown from template: $TASK_FILE"
74
- cp "$TEMPLATE_FILE" "$TASK_FILE" || error_exit "Failed to copy task template"
75
- else
76
- log "Task breakdown already exists: $TASK_FILE"
77
- fi
91
+ # Create task file
92
+ log "Creating task breakdown from template: $TASK_FILE"
93
+ cp "$TEMPLATE_FILE" "$TASK_FILE" || error_exit "Failed to copy task template"
78
94
 
79
95
  # Validate task structure
80
96
  log "Validating task breakdown..."
@@ -1,206 +1,206 @@
1
- <!-- SpecPulse Implementation Plan Template v4.0 - AI-Optimized -->
2
- <!-- AI Instructions: Generate plan from specification following constitutional gates -->
3
-
4
- # Implementation Plan: {{ feature_name }}
5
-
6
- ## Specification Reference
7
- - **Spec ID**: SPEC-{{ feature_id }}
8
- - **Branch**: {{ branch_name }}
9
- - **Generated**: {{ date }}
10
- - **Optimization Focus**: {{ optimization_focus | default("SIMPLICITY") }}
11
-
12
- ## Phase -1: Pre-Implementation Gates
13
-
14
- ### Constitutional Compliance Check
15
- **THIS SECTION MUST BE COMPLETED BEFORE ANY IMPLEMENTATION**
16
-
17
- #### Simplicity Gate (Article VII)
18
- - [ ] Using 3 projects/modules for initial implementation?
19
- - [ ] No future-proofing without documented need?
20
- - [ ] Direct framework usage (no unnecessary wrappers)?
21
- - [ ] Single model representation per concept?
22
-
23
- #### Anti-Abstraction Gate (Article VII)
24
- - [ ] Using framework features directly?
25
- - [ ] No unnecessary abstraction layers?
26
- - [ ] Clear, simple interfaces?
27
- - [ ] Avoiding premature optimization?
28
-
29
- #### Test-First Gate (Article III)
30
- - [ ] Test specifications written?
31
- - [ ] Tests reviewed and approved?
32
- - [ ] Tests confirmed to FAIL before implementation?
33
- - [ ] TDD cycle planned (Red-Green-Refactor)?
34
-
35
- #### Integration-First Gate (Article VIII)
36
- - [ ] Contract tests defined?
37
- - [ ] Using real services over mocks?
38
- - [ ] Production-like test environment planned?
39
- - [ ] End-to-end test scenarios identified?
40
-
41
- #### Research Gate (Article VI)
42
- - [ ] Library options researched?
43
- - [ ] Performance implications documented?
44
- - [ ] Security considerations analyzed?
45
- - [ ] Trade-offs documented?
46
-
47
- **Gate Status**: {{ gate_status | default("[ ] PENDING") }}
48
-
49
- ## Complexity Tracking
50
- {% if complexity_exceptions %}
51
- {% for exception in complexity_exceptions %}
52
- ### Exception {{ loop.index }}
53
- - **Article**: {{ exception.article }}
54
- - **Violation**: {{ exception.violation }}
55
- - **Justification**: {{ exception.justification }}
56
- - **Mitigation**: {{ exception.mitigation }}
57
- {% endfor %}
58
- {% else %}
59
- No complexity exceptions documented.
60
- {% endif %}
61
-
62
- ## Technology Stack
63
-
64
- ### Core Technologies
65
- {% for tech in core_technologies %}
66
- - **{{ tech.name }}**: {{ tech.version }} - {{ tech.purpose }}
67
- {% endfor %}
68
-
69
- ### Dependencies
70
- {% for dep in dependencies %}
71
- - **{{ dep.name }}**: {{ dep.reason }}
72
- {% endfor %}
73
-
74
- ## Architecture Overview
75
-
76
- ### System Components
77
- {% for component in components %}
78
- #### {{ component.name }}
79
- - **Purpose**: {{ component.purpose }}
80
- - **Key Features**: {{ component.features }}
81
- - **Dependencies**: {{ component.dependencies | join(", ") }}
82
- {% endfor %}
83
-
84
- ### Data Models
85
- {% for model in data_models %}
86
- #### {{ model.name }}
87
- - **Fields**: {{ model.fields | join(", ") }}
88
- - **Relationships**: {{ model.relationships }}
89
- - **Validation**: {{ model.validation }}
90
- {% endfor %}
91
-
92
- ## Implementation Phases
93
-
94
- ### Phase 0: Critical Path (Week {{ phase_0.weeks | default(1) }})
95
- {% for task in phase_0.tasks %}
96
- - [ ] {{ task.description }}
97
- {% endfor %}
98
-
99
- ### Phase 1: Foundation (Week {{ phase_1.weeks | default(2) }})
100
- {% for task in phase_1.tasks %}
101
- - [ ] {{ task.description }}
102
- {% endfor %}
103
-
104
- ### Phase 2: Core Features (Week {{ phase_2.weeks | default(3) }})
105
- {% for task in phase_2.tasks %}
106
- - [ ] {{ task.description }}
107
- {% endfor %}
108
-
109
- ### Phase 3: Polish (Week {{ phase_3.weeks | default(1) }})
110
- {% for task in phase_3.tasks %}
111
- - [ ] {{ task.description }}
112
- {% endfor %}
113
-
114
- ## API Contracts
115
-
116
- ### Endpoints
117
- {% for endpoint in endpoints %}
118
- #### {{ endpoint.method }} {{ endpoint.path }}
119
- - **Description**: {{ endpoint.description }}
120
- - **Request**: {{ endpoint.request }}
121
- - **Response**: {{ endpoint.response }}
122
- - **Authentication**: {{ endpoint.auth | default("Required") }}
123
- {% endfor %}
124
-
125
- ### Data Schemas
126
- {% for schema in schemas %}
127
- #### {{ schema.name }}
128
- ```json
129
- {{ schema.json | indent(4) }}
130
- ```
131
- {% endfor %}
132
-
133
- ## Testing Strategy
134
-
135
- ### Test Categories
136
- - **Unit Tests**: {{ testing.unit.target | default("80% coverage") }}
137
- - **Integration Tests**: {{ testing.integration.target | default("Critical paths") }}
138
- - **E2E Tests**: {{ testing.e2e.target | default("Key user workflows") }}
139
- - **Performance Tests**: {{ testing.performance.target | default("Load testing") }}
140
-
141
- ### Test Environment
142
- - **Database**: {{ testing.environment.database | default("PostgreSQL") }}
143
- - **Services**: {{ testing.environment.services | join(", ") }}
144
- - **Test Data**: {{ testing.environment.data_strategy | default("Seed with realistic data") }}
145
-
146
- ## Security Considerations
147
-
148
- ### Authentication & Authorization
149
- - **Method**: {{ security.auth_method | default("JWT tokens") }}
150
- - **Roles**: {{ security.roles | join(", ") }}
151
- - **Permissions**: {{ security.permissions_model | default("Role-based access control") }}
152
-
153
- ### Data Protection
154
- - **Encryption**: {{ security.encryption.transit | default("TLS 1.3") }} in transit, {{ security.encryption.at_rest | default("AES-256") }} at rest
155
- - **Compliance**: {{ security.compliance | join(", ") }}
156
-
157
- ## Deployment Strategy
158
-
159
- ### Environments
160
- {% for env in environments %}
161
- #### {{ env.name }}
162
- - **URL**: {{ env.url }}
163
- - **Auto-deploy**: {{ env.auto_deploy | default("Manual") }}
164
- - **Health Checks**: {{ env.health_checks | default("Basic monitoring") }}
165
- {% endfor %}
166
-
167
- ### Rollback Plan
168
- - **Strategy**: {{ rollback.strategy | default("Blue-green deployment") }}
169
- - **Triggers**: {{ rollback.triggers | join(", ") }}
170
- - **Recovery Time**: {{ rollback.recovery_time | default("< 5 minutes") }}
171
-
172
- ## Success Criteria
173
-
174
- ### Must-Have Metrics
175
- {% for metric in success_criteria.must %}
176
- - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
177
- {% endfor %}
178
-
179
- ### Should-Have Metrics
180
- {% for metric in success_criteria.should %}
181
- - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
182
- {% endfor %}
183
-
184
- ## Risk Assessment
185
-
186
- | Risk | Probability | Impact | Mitigation | Owner |
187
- |------|------------|--------|------------|-------|
188
- {% for risk in risks %}
189
- | {{ risk.description }} | {{ risk.probability }} | {{ risk.impact }} | {{ risk.mitigation }} | {{ risk.owner }} |
190
- {% endfor %}
191
-
192
- ## Monitoring & Observability
193
-
194
- ### Key Metrics
195
- {% for metric in monitoring.metrics %}
196
- - **{{ metric.name }}**: {{ metric.target }} ({{ metric.unit }})
197
- {% endfor %}
198
-
199
- ### Alerting
200
- - **Critical Alerts**: {{ monitoring.alerts.critical | join(", ") }}
201
- - **Warning Alerts**: {{ monitoring.alerts.warnings | join(", ") }}
202
-
203
- ---
204
- **Generated by**: {{ ai_assistant }} on {{ date }}
205
- **Constitutional Gates**: {{ gate_status | default("PENDING") }}
206
- **Next Steps**: Use `/task` to break down into executable tasks
1
+ <!-- SpecPulse Implementation Plan Template v4.0 - AI-Optimized -->
2
+ <!-- AI Instructions: Generate plan from specification following constitutional gates -->
3
+
4
+ # Implementation Plan: {{ feature_name }}
5
+
6
+ ## Specification Reference
7
+ - **Spec ID**: SPEC-{{ feature_id }}
8
+ - **Branch**: {{ branch_name }}
9
+ - **Generated**: {{ date }}
10
+ - **Optimization Focus**: {{ optimization_focus | default("SIMPLICITY") }}
11
+
12
+ ## Phase -1: Pre-Implementation Gates
13
+
14
+ ### Constitutional Compliance Check
15
+ **THIS SECTION MUST BE COMPLETED BEFORE ANY IMPLEMENTATION**
16
+
17
+ #### Simplicity Gate (Article VII)
18
+ - [ ] Using 3 or fewer projects/modules for initial implementation?
19
+ - [ ] No future-proofing without documented need?
20
+ - [ ] Direct framework usage (no unnecessary wrappers)?
21
+ - [ ] Single model representation per concept?
22
+
23
+ #### Anti-Abstraction Gate (Article VII)
24
+ - [ ] Using framework features directly?
25
+ - [ ] No unnecessary abstraction layers?
26
+ - [ ] Clear, simple interfaces?
27
+ - [ ] Avoiding premature optimization?
28
+
29
+ #### Test-First Gate (Article III)
30
+ - [ ] Test specifications written?
31
+ - [ ] Tests reviewed and approved?
32
+ - [ ] Tests confirmed to FAIL before implementation?
33
+ - [ ] TDD cycle planned (Red-Green-Refactor)?
34
+
35
+ #### Integration-First Gate (Article VIII)
36
+ - [ ] Contract tests defined?
37
+ - [ ] Using real services over mocks?
38
+ - [ ] Production-like test environment planned?
39
+ - [ ] End-to-end test scenarios identified?
40
+
41
+ #### Research Gate (Article VI)
42
+ - [ ] Library options researched?
43
+ - [ ] Performance implications documented?
44
+ - [ ] Security considerations analyzed?
45
+ - [ ] Trade-offs documented?
46
+
47
+ **Gate Status**: {{ gate_status | default("[ ] PENDING") }}
48
+
49
+ ## Complexity Tracking
50
+ {% if complexity_exceptions %}
51
+ {% for exception in complexity_exceptions %}
52
+ ### Exception {{ loop.index }}
53
+ - **Article**: {{ exception.article }}
54
+ - **Violation**: {{ exception.violation }}
55
+ - **Justification**: {{ exception.justification }}
56
+ - **Mitigation**: {{ exception.mitigation }}
57
+ {% endfor %}
58
+ {% else %}
59
+ No complexity exceptions documented.
60
+ {% endif %}
61
+
62
+ ## Technology Stack
63
+
64
+ ### Core Technologies
65
+ {% for tech in core_technologies %}
66
+ - **{{ tech.name }}**: {{ tech.version }} - {{ tech.purpose }}
67
+ {% endfor %}
68
+
69
+ ### Dependencies
70
+ {% for dep in dependencies %}
71
+ - **{{ dep.name }}**: {{ dep.reason }}
72
+ {% endfor %}
73
+
74
+ ## Architecture Overview
75
+
76
+ ### System Components
77
+ {% for component in components %}
78
+ #### {{ component.name }}
79
+ - **Purpose**: {{ component.purpose }}
80
+ - **Key Features**: {{ component.features }}
81
+ - **Dependencies**: {{ component.dependencies | join(", ") }}
82
+ {% endfor %}
83
+
84
+ ### Data Models
85
+ {% for model in data_models %}
86
+ #### {{ model.name }}
87
+ - **Fields**: {{ model.fields | join(", ") }}
88
+ - **Relationships**: {{ model.relationships }}
89
+ - **Validation**: {{ model.validation }}
90
+ {% endfor %}
91
+
92
+ ## Implementation Phases
93
+
94
+ ### Phase 0: Critical Path (Week {{ phase_0.weeks | default(1) }})
95
+ {% for task in phase_0.tasks %}
96
+ - [ ] {{ task.description }}
97
+ {% endfor %}
98
+
99
+ ### Phase 1: Foundation (Week {{ phase_1.weeks | default(2) }})
100
+ {% for task in phase_1.tasks %}
101
+ - [ ] {{ task.description }}
102
+ {% endfor %}
103
+
104
+ ### Phase 2: Core Features (Week {{ phase_2.weeks | default(3) }})
105
+ {% for task in phase_2.tasks %}
106
+ - [ ] {{ task.description }}
107
+ {% endfor %}
108
+
109
+ ### Phase 3: Polish (Week {{ phase_3.weeks | default(1) }})
110
+ {% for task in phase_3.tasks %}
111
+ - [ ] {{ task.description }}
112
+ {% endfor %}
113
+
114
+ ## API Contracts
115
+
116
+ ### Endpoints
117
+ {% for endpoint in endpoints %}
118
+ #### {{ endpoint.method }} {{ endpoint.path }}
119
+ - **Description**: {{ endpoint.description }}
120
+ - **Request**: {{ endpoint.request }}
121
+ - **Response**: {{ endpoint.response }}
122
+ - **Authentication**: {{ endpoint.auth | default("Required") }}
123
+ {% endfor %}
124
+
125
+ ### Data Schemas
126
+ {% for schema in schemas %}
127
+ #### {{ schema.name }}
128
+ ```json
129
+ {{ schema.json | indent(4) }}
130
+ ```
131
+ {% endfor %}
132
+
133
+ ## Testing Strategy
134
+
135
+ ### Test Categories
136
+ - **Unit Tests**: {{ testing.unit.target | default("80% coverage") }}
137
+ - **Integration Tests**: {{ testing.integration.target | default("Critical paths") }}
138
+ - **E2E Tests**: {{ testing.e2e.target | default("Key user workflows") }}
139
+ - **Performance Tests**: {{ testing.performance.target | default("Load testing") }}
140
+
141
+ ### Test Environment
142
+ - **Database**: {{ testing.environment.database | default("PostgreSQL") }}
143
+ - **Services**: {{ testing.environment.services | join(", ") }}
144
+ - **Test Data**: {{ testing.environment.data_strategy | default("Seed with realistic data") }}
145
+
146
+ ## Security Considerations
147
+
148
+ ### Authentication & Authorization
149
+ - **Method**: {{ security.auth_method | default("JWT tokens") }}
150
+ - **Roles**: {{ security.roles | join(", ") }}
151
+ - **Permissions**: {{ security.permissions_model | default("Role-based access control") }}
152
+
153
+ ### Data Protection
154
+ - **Encryption**: {{ security.encryption.transit | default("TLS 1.3") }} in transit, {{ security.encryption.at_rest | default("AES-256") }} at rest
155
+ - **Compliance**: {{ security.compliance | join(", ") }}
156
+
157
+ ## Deployment Strategy
158
+
159
+ ### Environments
160
+ {% for env in environments %}
161
+ #### {{ env.name }}
162
+ - **URL**: {{ env.url }}
163
+ - **Auto-deploy**: {{ env.auto_deploy | default("Manual") }}
164
+ - **Health Checks**: {{ env.health_checks | default("Basic monitoring") }}
165
+ {% endfor %}
166
+
167
+ ### Rollback Plan
168
+ - **Strategy**: {{ rollback.strategy | default("Blue-green deployment") }}
169
+ - **Triggers**: {{ rollback.triggers | join(", ") }}
170
+ - **Recovery Time**: {{ rollback.recovery_time | default("< 5 minutes") }}
171
+
172
+ ## Success Criteria
173
+
174
+ ### Must-Have Metrics
175
+ {% for metric in success_criteria.must %}
176
+ - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
177
+ {% endfor %}
178
+
179
+ ### Should-Have Metrics
180
+ {% for metric in success_criteria.should %}
181
+ - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
182
+ {% endfor %}
183
+
184
+ ## Risk Assessment
185
+
186
+ | Risk | Probability | Impact | Mitigation | Owner |
187
+ |------|------------|--------|------------|-------|
188
+ {% for risk in risks %}
189
+ | {{ risk.description }} | {{ risk.probability }} | {{ risk.impact }} | {{ risk.mitigation }} | {{ risk.owner }} |
190
+ {% endfor %}
191
+
192
+ ## Monitoring & Observability
193
+
194
+ ### Key Metrics
195
+ {% for metric in monitoring.metrics %}
196
+ - **{{ metric.name }}**: {{ metric.target }} ({{ metric.unit }})
197
+ {% endfor %}
198
+
199
+ ### Alerting
200
+ - **Critical Alerts**: {{ monitoring.alerts.critical | join(", ") }}
201
+ - **Warning Alerts**: {{ monitoring.alerts.warnings | join(", ") }}
202
+
203
+ ---
204
+ **Generated by**: {{ ai_assistant }} on {{ date }}
205
+ **Constitutional Gates**: {{ gate_status | default("PENDING") }}
206
+ **Next Steps**: Use `/sp-task breakdown` to break down into executable tasks