specpulse 1.3.4__py3-none-any.whl → 1.4.1__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.
- specpulse/__init__.py +1 -1
- specpulse/core/specpulse.py +22 -88
- specpulse/core/validator.py +38 -34
- specpulse/resources/commands/claude/sp-decompose.md +17 -17
- specpulse/resources/commands/claude/sp-plan.md +47 -47
- specpulse/resources/commands/claude/sp-pulse.md +10 -10
- specpulse/resources/commands/claude/sp-spec.md +15 -10
- specpulse/resources/commands/claude/sp-task.md +15 -15
- specpulse/resources/commands/gemini/sp-plan.toml +17 -17
- specpulse/resources/memory/constitution.md +237 -128
- specpulse/resources/scripts/sp-pulse-plan.ps1 +146 -142
- specpulse/resources/scripts/sp-pulse-plan.sh +131 -127
- specpulse/resources/scripts/sp-pulse-task.ps1 +165 -165
- specpulse/resources/scripts/sp-pulse-task.sh +6 -6
- specpulse/resources/templates/decomposition/integration-plan.md +6 -5
- specpulse/resources/templates/decomposition/microservices.md +6 -5
- specpulse/resources/templates/decomposition/service-plan.md +6 -5
- specpulse/resources/templates/plan.md +229 -205
- specpulse/resources/templates/task.md +165 -165
- {specpulse-1.3.4.dist-info → specpulse-1.4.1.dist-info}/METADATA +72 -30
- {specpulse-1.3.4.dist-info → specpulse-1.4.1.dist-info}/RECORD +25 -25
- {specpulse-1.3.4.dist-info → specpulse-1.4.1.dist-info}/WHEEL +0 -0
- {specpulse-1.3.4.dist-info → specpulse-1.4.1.dist-info}/entry_points.txt +0 -0
- {specpulse-1.3.4.dist-info → specpulse-1.4.1.dist-info}/licenses/LICENSE +0 -0
- {specpulse-1.3.4.dist-info → specpulse-1.4.1.dist-info}/top_level.txt +0 -0
@@ -1,206 +1,230 @@
|
|
1
|
-
<!-- SpecPulse Implementation Plan Template v4.0 - AI-Optimized -->
|
2
|
-
<!-- AI Instructions: Generate plan from specification following
|
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
|
-
###
|
15
|
-
**
|
16
|
-
|
17
|
-
####
|
18
|
-
- [ ]
|
19
|
-
- [ ]
|
20
|
-
- [ ]
|
21
|
-
- [ ]
|
22
|
-
|
23
|
-
####
|
24
|
-
- [ ]
|
25
|
-
- [ ]
|
26
|
-
- [ ]
|
27
|
-
- [ ]
|
28
|
-
|
29
|
-
####
|
30
|
-
- [ ]
|
31
|
-
- [ ]
|
32
|
-
- [ ]
|
33
|
-
- [ ]
|
34
|
-
|
35
|
-
####
|
36
|
-
- [ ]
|
37
|
-
- [ ]
|
38
|
-
- [ ]
|
39
|
-
- [ ]
|
40
|
-
|
41
|
-
####
|
42
|
-
- [ ]
|
43
|
-
- [ ]
|
44
|
-
- [ ]
|
45
|
-
- [ ]
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
###
|
77
|
-
|
78
|
-
|
79
|
-
- **
|
80
|
-
- **
|
81
|
-
|
82
|
-
{%
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
{
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
{
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
{
|
103
|
-
|
104
|
-
|
105
|
-
{
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
{
|
111
|
-
-
|
112
|
-
{
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
-
|
121
|
-
|
122
|
-
|
123
|
-
{
|
124
|
-
|
125
|
-
|
126
|
-
{%
|
127
|
-
|
128
|
-
|
129
|
-
{
|
130
|
-
|
131
|
-
{% endfor %}
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
- **
|
144
|
-
- **
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
##
|
158
|
-
|
159
|
-
###
|
160
|
-
{
|
161
|
-
|
162
|
-
- **
|
163
|
-
- **
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
- **
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
{
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
{
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
1
|
+
<!-- SpecPulse Implementation Plan Template v4.0 - AI-Optimized -->
|
2
|
+
<!-- AI Instructions: Generate plan from specification following SDD 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
|
+
### SDD Compliance Check
|
15
|
+
**ENSURE SPECIFICATION-DRIVEN DEVELOPMENT PRINCIPLES ARE FOLLOWED**
|
16
|
+
|
17
|
+
#### Principle 1: Specification First
|
18
|
+
- [ ] Clear specifications written?
|
19
|
+
- [ ] User stories and acceptance criteria defined?
|
20
|
+
- [ ] [NEEDS CLARIFICATION] markers for unknowns?
|
21
|
+
- [ ] Functional and non-functional requirements documented?
|
22
|
+
|
23
|
+
#### Principle 2: Incremental Planning
|
24
|
+
- [ ] Work broken into phases?
|
25
|
+
- [ ] Each phase delivers value?
|
26
|
+
- [ ] Milestones and checkpoints defined?
|
27
|
+
- [ ] Features prioritized by business value?
|
28
|
+
|
29
|
+
#### Principle 3: Task Decomposition
|
30
|
+
- [ ] Tasks are specific and actionable?
|
31
|
+
- [ ] Effort estimates provided?
|
32
|
+
- [ ] Definition of Done clear?
|
33
|
+
- [ ] Tasks can be picked up immediately?
|
34
|
+
|
35
|
+
#### Principle 4: Traceable Implementation
|
36
|
+
- [ ] Code will reference spec requirements?
|
37
|
+
- [ ] Commits will link to tasks?
|
38
|
+
- [ ] Bidirectional traceability planned?
|
39
|
+
- [ ] Spec updates process defined?
|
40
|
+
|
41
|
+
#### Principle 5: Continuous Validation
|
42
|
+
- [ ] Validation checkpoints identified?
|
43
|
+
- [ ] Acceptance tests planned?
|
44
|
+
- [ ] Spec-code sync process defined?
|
45
|
+
- [ ] Regular validation scheduled?
|
46
|
+
|
47
|
+
#### Principle 6: Quality Assurance
|
48
|
+
- [ ] Test strategy appropriate for project type?
|
49
|
+
- [ ] Acceptance criteria testable?
|
50
|
+
- [ ] Code review process defined?
|
51
|
+
- [ ] Quality metrics identified?
|
52
|
+
|
53
|
+
#### Principle 7: Architecture Documentation
|
54
|
+
- [ ] Technology choices documented?
|
55
|
+
- [ ] Integration points identified?
|
56
|
+
- [ ] Technical debt tracking planned?
|
57
|
+
- [ ] ADR process established?
|
58
|
+
|
59
|
+
#### Principle 8: Iterative Refinement
|
60
|
+
- [ ] Feedback loops established?
|
61
|
+
- [ ] Spec versioning process defined?
|
62
|
+
- [ ] Learning capture process planned?
|
63
|
+
- [ ] Refinement triggers identified?
|
64
|
+
|
65
|
+
#### Principle 9: Stakeholder Alignment
|
66
|
+
- [ ] Stakeholders identified?
|
67
|
+
- [ ] Communication plan established?
|
68
|
+
- [ ] Approval process defined?
|
69
|
+
- [ ] Change management process clear?
|
70
|
+
|
71
|
+
**Gate Status**: {{ gate_status | default("[ ] PENDING") }}
|
72
|
+
|
73
|
+
## Architecture Decisions
|
74
|
+
{% if architectural_decisions %}
|
75
|
+
{% for decision in architectural_decisions %}
|
76
|
+
### Decision {{ loop.index }}
|
77
|
+
- **Area**: {{ decision.area }}
|
78
|
+
- **Decision**: {{ decision.decision }}
|
79
|
+
- **Rationale**: {{ decision.rationale }}
|
80
|
+
- **Trade-offs**: {{ decision.trade_offs }}
|
81
|
+
{% endfor %}
|
82
|
+
{% else %}
|
83
|
+
No significant architectural decisions documented yet.
|
84
|
+
{% endif %}
|
85
|
+
|
86
|
+
## Technology Stack
|
87
|
+
|
88
|
+
### Core Technologies
|
89
|
+
{% for tech in core_technologies %}
|
90
|
+
- **{{ tech.name }}**: {{ tech.version }} - {{ tech.purpose }}
|
91
|
+
{% endfor %}
|
92
|
+
|
93
|
+
### Dependencies
|
94
|
+
{% for dep in dependencies %}
|
95
|
+
- **{{ dep.name }}**: {{ dep.reason }}
|
96
|
+
{% endfor %}
|
97
|
+
|
98
|
+
## Architecture Overview
|
99
|
+
|
100
|
+
### System Components
|
101
|
+
{% for component in components %}
|
102
|
+
#### {{ component.name }}
|
103
|
+
- **Purpose**: {{ component.purpose }}
|
104
|
+
- **Key Features**: {{ component.features }}
|
105
|
+
- **Dependencies**: {{ component.dependencies | join(", ") }}
|
106
|
+
{% endfor %}
|
107
|
+
|
108
|
+
### Data Models
|
109
|
+
{% for model in data_models %}
|
110
|
+
#### {{ model.name }}
|
111
|
+
- **Fields**: {{ model.fields | join(", ") }}
|
112
|
+
- **Relationships**: {{ model.relationships }}
|
113
|
+
- **Validation**: {{ model.validation }}
|
114
|
+
{% endfor %}
|
115
|
+
|
116
|
+
## Implementation Phases
|
117
|
+
|
118
|
+
### Phase 0: Critical Path (Week {{ phase_0.weeks | default(1) }})
|
119
|
+
{% for task in phase_0.tasks %}
|
120
|
+
- [ ] {{ task.description }}
|
121
|
+
{% endfor %}
|
122
|
+
|
123
|
+
### Phase 1: Foundation (Week {{ phase_1.weeks | default(2) }})
|
124
|
+
{% for task in phase_1.tasks %}
|
125
|
+
- [ ] {{ task.description }}
|
126
|
+
{% endfor %}
|
127
|
+
|
128
|
+
### Phase 2: Core Features (Week {{ phase_2.weeks | default(3) }})
|
129
|
+
{% for task in phase_2.tasks %}
|
130
|
+
- [ ] {{ task.description }}
|
131
|
+
{% endfor %}
|
132
|
+
|
133
|
+
### Phase 3: Polish (Week {{ phase_3.weeks | default(1) }})
|
134
|
+
{% for task in phase_3.tasks %}
|
135
|
+
- [ ] {{ task.description }}
|
136
|
+
{% endfor %}
|
137
|
+
|
138
|
+
## API Contracts
|
139
|
+
|
140
|
+
### Endpoints
|
141
|
+
{% for endpoint in endpoints %}
|
142
|
+
#### {{ endpoint.method }} {{ endpoint.path }}
|
143
|
+
- **Description**: {{ endpoint.description }}
|
144
|
+
- **Request**: {{ endpoint.request }}
|
145
|
+
- **Response**: {{ endpoint.response }}
|
146
|
+
- **Authentication**: {{ endpoint.auth | default("Required") }}
|
147
|
+
{% endfor %}
|
148
|
+
|
149
|
+
### Data Schemas
|
150
|
+
{% for schema in schemas %}
|
151
|
+
#### {{ schema.name }}
|
152
|
+
```json
|
153
|
+
{{ schema.json | indent(4) }}
|
154
|
+
```
|
155
|
+
{% endfor %}
|
156
|
+
|
157
|
+
## Testing Strategy
|
158
|
+
|
159
|
+
### Test Categories
|
160
|
+
- **Unit Tests**: {{ testing.unit.target | default("80% coverage") }}
|
161
|
+
- **Integration Tests**: {{ testing.integration.target | default("Critical paths") }}
|
162
|
+
- **E2E Tests**: {{ testing.e2e.target | default("Key user workflows") }}
|
163
|
+
- **Performance Tests**: {{ testing.performance.target | default("Load testing") }}
|
164
|
+
|
165
|
+
### Test Environment
|
166
|
+
- **Database**: {{ testing.environment.database | default("PostgreSQL") }}
|
167
|
+
- **Services**: {{ testing.environment.services | join(", ") }}
|
168
|
+
- **Test Data**: {{ testing.environment.data_strategy | default("Seed with realistic data") }}
|
169
|
+
|
170
|
+
## Security Considerations
|
171
|
+
|
172
|
+
### Authentication & Authorization
|
173
|
+
- **Method**: {{ security.auth_method | default("JWT tokens") }}
|
174
|
+
- **Roles**: {{ security.roles | join(", ") }}
|
175
|
+
- **Permissions**: {{ security.permissions_model | default("Role-based access control") }}
|
176
|
+
|
177
|
+
### Data Protection
|
178
|
+
- **Encryption**: {{ security.encryption.transit | default("TLS 1.3") }} in transit, {{ security.encryption.at_rest | default("AES-256") }} at rest
|
179
|
+
- **Compliance**: {{ security.compliance | join(", ") }}
|
180
|
+
|
181
|
+
## Deployment Strategy
|
182
|
+
|
183
|
+
### Environments
|
184
|
+
{% for env in environments %}
|
185
|
+
#### {{ env.name }}
|
186
|
+
- **URL**: {{ env.url }}
|
187
|
+
- **Auto-deploy**: {{ env.auto_deploy | default("Manual") }}
|
188
|
+
- **Health Checks**: {{ env.health_checks | default("Basic monitoring") }}
|
189
|
+
{% endfor %}
|
190
|
+
|
191
|
+
### Rollback Plan
|
192
|
+
- **Strategy**: {{ rollback.strategy | default("Blue-green deployment") }}
|
193
|
+
- **Triggers**: {{ rollback.triggers | join(", ") }}
|
194
|
+
- **Recovery Time**: {{ rollback.recovery_time | default("< 5 minutes") }}
|
195
|
+
|
196
|
+
## Success Criteria
|
197
|
+
|
198
|
+
### Must-Have Metrics
|
199
|
+
{% for metric in success_criteria.must %}
|
200
|
+
- {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
|
201
|
+
{% endfor %}
|
202
|
+
|
203
|
+
### Should-Have Metrics
|
204
|
+
{% for metric in success_criteria.should %}
|
205
|
+
- {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
|
206
|
+
{% endfor %}
|
207
|
+
|
208
|
+
## Risk Assessment
|
209
|
+
|
210
|
+
| Risk | Probability | Impact | Mitigation | Owner |
|
211
|
+
|------|------------|--------|------------|-------|
|
212
|
+
{% for risk in risks %}
|
213
|
+
| {{ risk.description }} | {{ risk.probability }} | {{ risk.impact }} | {{ risk.mitigation }} | {{ risk.owner }} |
|
214
|
+
{% endfor %}
|
215
|
+
|
216
|
+
## Monitoring & Observability
|
217
|
+
|
218
|
+
### Key Metrics
|
219
|
+
{% for metric in monitoring.metrics %}
|
220
|
+
- **{{ metric.name }}**: {{ metric.target }} ({{ metric.unit }})
|
221
|
+
{% endfor %}
|
222
|
+
|
223
|
+
### Alerting
|
224
|
+
- **Critical Alerts**: {{ monitoring.alerts.critical | join(", ") }}
|
225
|
+
- **Warning Alerts**: {{ monitoring.alerts.warnings | join(", ") }}
|
226
|
+
|
227
|
+
---
|
228
|
+
**Generated by**: {{ ai_assistant }} on {{ date }}
|
229
|
+
**SDD Gates**: {{ gate_status | default("PENDING") }}
|
206
230
|
**Next Steps**: Use `/sp-task breakdown` to break down into executable tasks
|