project-iris 0.0.11 → 0.0.13
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/README.md +84 -360
- package/dist/cli.js +4 -2
- package/dist/commands/create.js +25 -0
- package/dist/iris/bundle.js +1 -1
- package/dist/iris_bundle/frameworks/iris-core/framework.yaml +9 -0
- package/dist/iris_bundle/frameworks/iris-core/memory/memory-bank.yaml +1 -0
- package/dist/iris_bundle/frameworks/iris-core/policy.yaml +7 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/config/memory-bank.yaml +1 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-template.md +226 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/ddd-construction-bolt/adr-template.md +49 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/ddd-construction-bolt/ddd-01-domain-model-template.md +55 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/ddd-construction-bolt/ddd-02-technical-design-template.md +67 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/ddd-construction-bolt/ddd-03-test-report-template.md +62 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/ddd-construction-bolt.md +528 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/simple-construction-bolt.md +347 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/construction/bolt-types/spike-bolt.md +240 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/inception/requirements-template.md +144 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/inception/stories-template.md +38 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/inception/story-template.md +147 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/inception/system-context-template.md +29 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/inception/unit-brief-template.md +177 -0
- package/dist/iris_bundle/frameworks/iris-core/templates/inception/units-template.md +52 -0
- package/dist/templates/construction/bolt-template.md +226 -0
- package/dist/templates/construction/bolt-types/ddd-construction-bolt/adr-template.md +49 -0
- package/dist/templates/construction/bolt-types/ddd-construction-bolt/ddd-01-domain-model-template.md +55 -0
- package/dist/templates/construction/bolt-types/ddd-construction-bolt/ddd-02-technical-design-template.md +67 -0
- package/dist/templates/construction/bolt-types/ddd-construction-bolt/ddd-03-test-report-template.md +62 -0
- package/dist/templates/construction/bolt-types/ddd-construction-bolt.md +528 -0
- package/dist/templates/construction/bolt-types/simple-construction-bolt.md +347 -0
- package/dist/templates/construction/bolt-types/spike-bolt.md +240 -0
- package/dist/templates/inception/requirements-template.md +144 -0
- package/dist/templates/inception/stories-template.md +38 -0
- package/dist/templates/inception/story-template.md +147 -0
- package/dist/templates/inception/system-context-template.md +29 -0
- package/dist/templates/inception/unit-brief-template.md +177 -0
- package/dist/templates/inception/units-template.md +52 -0
- package/dist/workflows/bolt-plan.js +57 -28
- package/dist/workflows/intent-inception.js +82 -7
- package/dist/workflows/memory-bank-generator.js +180 -0
- package/package.json +3 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
intent: {NNN}-{intent-name}
|
|
3
|
+
phase: inception
|
|
4
|
+
status: stories-created
|
|
5
|
+
updated: {YYYY-MM-DDTHH:MM:SSZ}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# {Intent Name} - Stories
|
|
9
|
+
|
|
10
|
+
## User Stories
|
|
11
|
+
|
|
12
|
+
### Story-1: {Title}
|
|
13
|
+
|
|
14
|
+
**As a** {user type}
|
|
15
|
+
**I want** {goal}
|
|
16
|
+
**So that** {benefit}
|
|
17
|
+
|
|
18
|
+
**Acceptance Criteria**:
|
|
19
|
+
|
|
20
|
+
- [ ] {Criterion 1}
|
|
21
|
+
- [ ] {Criterion 2}
|
|
22
|
+
|
|
23
|
+
**Priority**: High/Medium/Low
|
|
24
|
+
**Estimate**: {T-shirt size: S/M/L/XL}
|
|
25
|
+
|
|
26
|
+
### Story-2: {Title}
|
|
27
|
+
|
|
28
|
+
...
|
|
29
|
+
|
|
30
|
+
## Technical Stories
|
|
31
|
+
|
|
32
|
+
### Tech-Story-1: {Title}
|
|
33
|
+
|
|
34
|
+
**Description**: {What needs to be done technically}
|
|
35
|
+
**Rationale**: {Why this is needed}
|
|
36
|
+
**Acceptance Criteria**:
|
|
37
|
+
|
|
38
|
+
- [ ] {Criterion}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Story Template
|
|
2
|
+
|
|
3
|
+
Use this template when creating individual story files during story creation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Frontmatter
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
---
|
|
11
|
+
id: {SSS}-{title-slug}
|
|
12
|
+
unit: {UUU}-{unit-name}
|
|
13
|
+
intent: {NNN}-{intent-name}
|
|
14
|
+
status: draft
|
|
15
|
+
priority: must|should|could
|
|
16
|
+
created: {YYYY-MM-DDTHH:MM:SSZ}
|
|
17
|
+
assigned_bolt: null
|
|
18
|
+
implemented: false
|
|
19
|
+
---
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Content
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
# Story: {SSS}-{title-slug}
|
|
28
|
+
|
|
29
|
+
## User Story
|
|
30
|
+
|
|
31
|
+
**As a** {user role}
|
|
32
|
+
**I want** {goal/action}
|
|
33
|
+
**So that** {benefit/reason}
|
|
34
|
+
|
|
35
|
+
## Acceptance Criteria
|
|
36
|
+
|
|
37
|
+
- [ ] **Given** {precondition}, **When** {action}, **Then** {expected outcome}
|
|
38
|
+
- [ ] **Given** {precondition}, **When** {action}, **Then** {expected outcome}
|
|
39
|
+
- [ ] **Given** {precondition}, **When** {action}, **Then** {expected outcome}
|
|
40
|
+
|
|
41
|
+
## Technical Notes
|
|
42
|
+
|
|
43
|
+
{Implementation hints, constraints, or considerations}
|
|
44
|
+
|
|
45
|
+
## Dependencies
|
|
46
|
+
|
|
47
|
+
### Requires
|
|
48
|
+
- {Other stories this depends on, or "None"}
|
|
49
|
+
|
|
50
|
+
### Enables
|
|
51
|
+
- {Stories that depend on this, or "None"}
|
|
52
|
+
|
|
53
|
+
## Edge Cases
|
|
54
|
+
|
|
55
|
+
| Scenario | Expected Behavior |
|
|
56
|
+
|----------|-------------------|
|
|
57
|
+
| {edge case 1} | {behavior} |
|
|
58
|
+
| {edge case 2} | {behavior} |
|
|
59
|
+
|
|
60
|
+
## Out of Scope
|
|
61
|
+
|
|
62
|
+
- {What this story does NOT cover}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Priority Levels
|
|
68
|
+
|
|
69
|
+
| Priority | Meaning | Criteria |
|
|
70
|
+
|----------|---------|----------|
|
|
71
|
+
| `must` | Required for MVP | System unusable without this |
|
|
72
|
+
| `should` | Important | Significant value, not blocking |
|
|
73
|
+
| `could` | Nice to have | Enhances experience |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Status Values
|
|
78
|
+
|
|
79
|
+
| Status | Meaning |
|
|
80
|
+
|--------|---------|
|
|
81
|
+
| `draft` | Story written, needs review |
|
|
82
|
+
| `ready` | Reviewed, ready for bolt |
|
|
83
|
+
| `in-progress` | Being implemented in a bolt |
|
|
84
|
+
| `implemented` | Code complete |
|
|
85
|
+
| `tested` | Tests passing |
|
|
86
|
+
| `done` | All acceptance criteria met |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Example
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
---
|
|
94
|
+
id: 001-user-signup
|
|
95
|
+
unit: 001-auth-service
|
|
96
|
+
intent: 001-user-authentication
|
|
97
|
+
status: ready
|
|
98
|
+
priority: must
|
|
99
|
+
created: 2024-12-05T10:00:00Z
|
|
100
|
+
assigned_bolt: 001-auth-service
|
|
101
|
+
implemented: false
|
|
102
|
+
---
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# Story: 001-user-signup
|
|
107
|
+
|
|
108
|
+
## User Story
|
|
109
|
+
|
|
110
|
+
**As a** new user
|
|
111
|
+
**I want** to register with my email and password
|
|
112
|
+
**So that** I can access the application
|
|
113
|
+
|
|
114
|
+
## Acceptance Criteria
|
|
115
|
+
|
|
116
|
+
- [ ] **Given** I am on the registration page, **When** I enter valid email and password, **Then** my account is created and I receive a confirmation email
|
|
117
|
+
- [ ] **Given** I enter an email that already exists, **When** I submit registration, **Then** I see an error message "Email already registered"
|
|
118
|
+
- [ ] **Given** I enter a password less than 8 characters, **When** I submit, **Then** I see validation error
|
|
119
|
+
|
|
120
|
+
## Technical Notes
|
|
121
|
+
|
|
122
|
+
- Password must be hashed with bcrypt (cost factor 12)
|
|
123
|
+
- Email validation should use RFC 5322 compliant regex
|
|
124
|
+
- Rate limit registration to 5 attempts per IP per hour
|
|
125
|
+
|
|
126
|
+
## Dependencies
|
|
127
|
+
|
|
128
|
+
### Requires
|
|
129
|
+
- None (first story)
|
|
130
|
+
|
|
131
|
+
### Enables
|
|
132
|
+
- 002-user-login (User login)
|
|
133
|
+
- 003-email-verification (Email verification)
|
|
134
|
+
|
|
135
|
+
## Edge Cases
|
|
136
|
+
|
|
137
|
+
| Scenario | Expected Behavior |
|
|
138
|
+
|----------|-------------------|
|
|
139
|
+
| SQL injection in email | Safely escaped, validation fails |
|
|
140
|
+
| Very long email (255+ chars) | Validation error |
|
|
141
|
+
| Unicode in password | Allowed, properly encoded |
|
|
142
|
+
|
|
143
|
+
## Out of Scope
|
|
144
|
+
|
|
145
|
+
- Social login (OAuth) - separate story
|
|
146
|
+
- Password reset - separate story
|
|
147
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
intent: {NNN}-{intent-name}
|
|
3
|
+
phase: inception
|
|
4
|
+
status: context-defined
|
|
5
|
+
updated: {YYYY-MM-DDTHH:MM:SSZ}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# {Intent Name} - System Context
|
|
9
|
+
|
|
10
|
+
## System Overview
|
|
11
|
+
|
|
12
|
+
{High-level description of what we are building}
|
|
13
|
+
|
|
14
|
+
## Context Diagram
|
|
15
|
+
|
|
16
|
+
{Mermaid diagram showing System, Users, and External Systems}
|
|
17
|
+
|
|
18
|
+
## External Integrations
|
|
19
|
+
|
|
20
|
+
- **System A**: {Purpose of integration}
|
|
21
|
+
- **System B**: {Purpose of integration}
|
|
22
|
+
|
|
23
|
+
## High-Level Constraints
|
|
24
|
+
|
|
25
|
+
- {e.g., Must run on AWS, Must use existing Auth provider}
|
|
26
|
+
|
|
27
|
+
## Key NFR Goals
|
|
28
|
+
|
|
29
|
+
- {High-level performance/security goals to guide construction}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Unit Brief Template
|
|
2
|
+
|
|
3
|
+
Use this template when creating unit briefs during decomposition. This is the **critical input for Construction**.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Frontmatter
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
---
|
|
11
|
+
unit: {UUU}-{unit-name}
|
|
12
|
+
intent: {NNN}-{intent-name}
|
|
13
|
+
phase: inception
|
|
14
|
+
status: draft|ready
|
|
15
|
+
created: {YYYY-MM-DDTHH:MM:SSZ}
|
|
16
|
+
updated: {YYYY-MM-DDTHH:MM:SSZ}
|
|
17
|
+
---
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Note**: The `unit` field uses the full folder name including the 3-digit prefix (e.g., `001-auth-service`). This matches the folder structure and enables direct path construction in scripts. Story naming uses the story title (e.g., `001-user-signup.md`).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Content
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
# Unit Brief: {Unit Name}
|
|
28
|
+
|
|
29
|
+
## Purpose
|
|
30
|
+
|
|
31
|
+
{Clear, concise statement of what this unit does and why it exists}
|
|
32
|
+
|
|
33
|
+
## Scope
|
|
34
|
+
|
|
35
|
+
### In Scope
|
|
36
|
+
- {What this unit IS responsible for}
|
|
37
|
+
- {What this unit IS responsible for}
|
|
38
|
+
|
|
39
|
+
### Out of Scope
|
|
40
|
+
- {What this unit is NOT responsible for}
|
|
41
|
+
- {What other units handle}
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Assigned Requirements
|
|
46
|
+
|
|
47
|
+
**These FRs from the intent are assigned to this unit. Stories will be created from these.**
|
|
48
|
+
|
|
49
|
+
| FR | Requirement | Priority |
|
|
50
|
+
|----|-------------|----------|
|
|
51
|
+
| FR-{n} | {description from intent requirements.md} | Must/Should/Could |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Domain Concepts
|
|
56
|
+
|
|
57
|
+
### Key Entities
|
|
58
|
+
| Entity | Description | Attributes |
|
|
59
|
+
|--------|-------------|------------|
|
|
60
|
+
| {Entity 1} | {What it represents} | {Key properties} |
|
|
61
|
+
| {Entity 2} | {What it represents} | {Key properties} |
|
|
62
|
+
|
|
63
|
+
### Key Operations
|
|
64
|
+
| Operation | Description | Inputs | Outputs |
|
|
65
|
+
|-----------|-------------|--------|---------|
|
|
66
|
+
| {Operation 1} | {What it does} | {Input data} | {Output data} |
|
|
67
|
+
| {Operation 2} | {What it does} | {Input data} | {Output data} |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Story Summary
|
|
72
|
+
|
|
73
|
+
| Metric | Count |
|
|
74
|
+
|--------|-------|
|
|
75
|
+
| Total Stories | {n} |
|
|
76
|
+
| Must Have | {n} |
|
|
77
|
+
| Should Have | {n} |
|
|
78
|
+
| Could Have | {n} |
|
|
79
|
+
|
|
80
|
+
### Stories
|
|
81
|
+
|
|
82
|
+
| Story ID | Title | Priority | Status |
|
|
83
|
+
|----------|-------|----------|--------|
|
|
84
|
+
| {story-1} | {Title} | Must | Planned |
|
|
85
|
+
| {story-2} | {Title} | Should | Planned |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Dependencies
|
|
90
|
+
|
|
91
|
+
### Depends On
|
|
92
|
+
| Unit | Reason |
|
|
93
|
+
|------|--------|
|
|
94
|
+
| {unit-name} | {Why this dependency exists} |
|
|
95
|
+
|
|
96
|
+
### Depended By
|
|
97
|
+
| Unit | Reason |
|
|
98
|
+
|------|--------|
|
|
99
|
+
| {unit-name} | {Why they depend on this} |
|
|
100
|
+
|
|
101
|
+
### External Dependencies
|
|
102
|
+
| System | Purpose | Risk |
|
|
103
|
+
|--------|---------|------|
|
|
104
|
+
| {External system} | {Why needed} | {Risk level} |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Technical Context
|
|
109
|
+
|
|
110
|
+
### Suggested Technology
|
|
111
|
+
{Recommendations based on tech stack standards}
|
|
112
|
+
|
|
113
|
+
### Integration Points
|
|
114
|
+
| Integration | Type | Protocol |
|
|
115
|
+
|-------------|------|----------|
|
|
116
|
+
| {System/Unit} | API/Event/DB | REST/GraphQL/Kafka |
|
|
117
|
+
|
|
118
|
+
### Data Storage
|
|
119
|
+
| Data | Type | Volume | Retention |
|
|
120
|
+
|------|------|--------|-----------|
|
|
121
|
+
| {Data type} | SQL/NoSQL/Cache | {Volume} | {Retention} |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Constraints
|
|
126
|
+
|
|
127
|
+
- {Technical constraint specific to this unit}
|
|
128
|
+
- {Business constraint specific to this unit}
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Success Criteria
|
|
133
|
+
|
|
134
|
+
### Functional
|
|
135
|
+
- [ ] {Criterion 1: What must work}
|
|
136
|
+
- [ ] {Criterion 2: What must work}
|
|
137
|
+
|
|
138
|
+
### Non-Functional
|
|
139
|
+
- [ ] {Performance target}
|
|
140
|
+
- [ ] {Security requirement}
|
|
141
|
+
|
|
142
|
+
### Quality
|
|
143
|
+
- [ ] Code coverage > 80%
|
|
144
|
+
- [ ] All acceptance criteria met
|
|
145
|
+
- [ ] Code reviewed and approved
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Bolt Suggestions
|
|
150
|
+
|
|
151
|
+
Based on stories and complexity:
|
|
152
|
+
|
|
153
|
+
| Bolt | Type | Stories | Objective |
|
|
154
|
+
|------|------|---------|-----------|
|
|
155
|
+
| bolt-{unit}-1 | DDD | S1, S2 | Core entities |
|
|
156
|
+
| bolt-{unit}-2 | DDD | S3, S4 | API layer |
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Notes
|
|
161
|
+
|
|
162
|
+
{Any additional context, risks, or considerations for Construction}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Quality Checklist
|
|
168
|
+
|
|
169
|
+
Before marking unit brief as ready:
|
|
170
|
+
|
|
171
|
+
- [ ] Purpose is clear and specific
|
|
172
|
+
- [ ] Scope boundaries are defined
|
|
173
|
+
- [ ] Key entities identified
|
|
174
|
+
- [ ] Stories assigned to this unit
|
|
175
|
+
- [ ] Dependencies mapped
|
|
176
|
+
- [ ] Success criteria are measurable
|
|
177
|
+
- [ ] Bolt suggestions provided
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
intent: {NNN}-{intent-name}
|
|
3
|
+
phase: inception
|
|
4
|
+
status: units-decomposed
|
|
5
|
+
updated: {YYYY-MM-DDTHH:MM:SSZ}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# {Intent Name} - Unit Decomposition
|
|
9
|
+
|
|
10
|
+
## Units Overview
|
|
11
|
+
|
|
12
|
+
This intent decomposes into {N} units of work:
|
|
13
|
+
|
|
14
|
+
### Unit 1: {unit-name}
|
|
15
|
+
|
|
16
|
+
**Description**: {What this unit does}
|
|
17
|
+
|
|
18
|
+
**Stories**:
|
|
19
|
+
|
|
20
|
+
- Story-1: {Title}
|
|
21
|
+
- Story-3: {Title}
|
|
22
|
+
|
|
23
|
+
**Deliverables**:
|
|
24
|
+
|
|
25
|
+
- {Specific artifacts this unit produces}
|
|
26
|
+
|
|
27
|
+
**Dependencies**:
|
|
28
|
+
|
|
29
|
+
- Depends on: {Other units}
|
|
30
|
+
- Depended by: {Units that need this}
|
|
31
|
+
|
|
32
|
+
**Estimated Complexity**: S/M/L/XL
|
|
33
|
+
|
|
34
|
+
### Unit 2: {unit-name}
|
|
35
|
+
|
|
36
|
+
...
|
|
37
|
+
|
|
38
|
+
## Unit Dependency Graph
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
[Unit A] ──> [Unit B] ──> [Unit D]
|
|
42
|
+
│ │
|
|
43
|
+
└────> [Unit C] ──┘
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Execution Order
|
|
47
|
+
|
|
48
|
+
Based on dependencies:
|
|
49
|
+
|
|
50
|
+
1. Day 1-2: Unit A (foundation)
|
|
51
|
+
2. Day 2-4: Unit B, Unit C (parallel)
|
|
52
|
+
3. Day 5-6: Unit D (integration)
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Bolt Instance Template
|
|
2
|
+
|
|
3
|
+
## Mandatory Output Rules (READ FIRST)
|
|
4
|
+
|
|
5
|
+
- 🚫 **NEVER** use ASCII tables for options - they break at different terminal widths
|
|
6
|
+
- ✅ **ALWAYS** use numbered list format: `N - **Option**: Description`
|
|
7
|
+
- ✅ **ALWAYS** use status indicators: ✅ (done) ⏳ (current) [ ] (pending) 🚫 (blocked)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Use this template when creating new bolt instances during bolt planning.
|
|
12
|
+
|
|
13
|
+
**Directory Structure**: Each bolt gets its own directory containing the bolt metadata and stage artifacts:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
memory-bank/bolts/{bolt-id}/
|
|
17
|
+
├── bolt.md # Bolt instance metadata (this template)
|
|
18
|
+
├── ddd-01-domain-model.md # Stage 1 artifact (created during execution)
|
|
19
|
+
├── ddd-02-technical-design.md # Stage 2 artifact (created during execution)
|
|
20
|
+
└── ddd-03-test-report.md # Stage 4 artifact (created during execution)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Frontmatter
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
---
|
|
29
|
+
id: bolt-{unit}-{sequence}
|
|
30
|
+
unit: {UUU}-{unit-name}
|
|
31
|
+
intent: {NNN}-{intent-name}
|
|
32
|
+
type: ddd-construction-bolt
|
|
33
|
+
status: planned
|
|
34
|
+
stories:
|
|
35
|
+
- story-1
|
|
36
|
+
- story-2
|
|
37
|
+
created: {YYYY-MM-DDTHH:MM:SSZ}
|
|
38
|
+
started: null
|
|
39
|
+
completed: null
|
|
40
|
+
current_stage: null
|
|
41
|
+
stages_completed: []
|
|
42
|
+
|
|
43
|
+
# Bolt Dependencies (for execution ordering)
|
|
44
|
+
requires_bolts: [] # Bolts that must complete before this bolt can start
|
|
45
|
+
enables_bolts: [] # Bolts that become unblocked when this bolt completes
|
|
46
|
+
requires_units: [] # Units that must exist (usually empty)
|
|
47
|
+
blocks: false # Computed: true if any requires_bolts are incomplete
|
|
48
|
+
|
|
49
|
+
# Complexity Assessment (aggregate of included stories)
|
|
50
|
+
complexity:
|
|
51
|
+
avg_complexity: 2 # 1=Low, 2=Medium, 3=High
|
|
52
|
+
avg_uncertainty: 1 # 1=Low, 2=Medium, 3=High
|
|
53
|
+
max_dependencies: 2 # Highest dependency score among stories
|
|
54
|
+
testing_scope: 2 # 1=Unit, 2=Integration, 3=E2E
|
|
55
|
+
---
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Required Frontmatter Fields (VALIDATION CHECKLIST)
|
|
61
|
+
|
|
62
|
+
Before creating a bolt, verify ALL required fields are present:
|
|
63
|
+
|
|
64
|
+
| Field | Required | Description |
|
|
65
|
+
|-------|----------|-------------|
|
|
66
|
+
| `id` | **YES** | Bolt identifier (format: `{BBB}-{unit-name}`) |
|
|
67
|
+
| `unit` | **YES** | Parent unit ID |
|
|
68
|
+
| `intent` | **YES** | Parent intent ID |
|
|
69
|
+
| `type` | **YES** | Bolt type (`ddd-construction-bolt` or `simple-construction-bolt`) |
|
|
70
|
+
| `status` | **YES** | Current status (`planned`, `in-progress`, `completed`, `blocked`) |
|
|
71
|
+
| `stories` | **YES** | Array of story IDs included in this bolt |
|
|
72
|
+
| `created` | **YES** | Creation timestamp |
|
|
73
|
+
| `requires_bolts` | **YES** | Array of bolt IDs this depends on (can be empty `[]`) |
|
|
74
|
+
| `enables_bolts` | **YES** | Array of bolt IDs waiting on this (can be empty `[]`) |
|
|
75
|
+
| `complexity` | **YES** | Complexity assessment block |
|
|
76
|
+
|
|
77
|
+
**If any required field is missing, the bolt is INVALID.**
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Content
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
# Bolt: {bolt-id}
|
|
85
|
+
|
|
86
|
+
## Overview
|
|
87
|
+
|
|
88
|
+
{Brief description of what this bolt will accomplish}
|
|
89
|
+
|
|
90
|
+
## Objective
|
|
91
|
+
|
|
92
|
+
{Specific goal of this bolt tied to the stories it covers}
|
|
93
|
+
|
|
94
|
+
## Stories Included
|
|
95
|
+
|
|
96
|
+
- **{story-1}**: {title} (Must)
|
|
97
|
+
- **{story-2}**: {title} (Should)
|
|
98
|
+
|
|
99
|
+
## Bolt Type
|
|
100
|
+
|
|
101
|
+
**Type**: {type name}
|
|
102
|
+
**Definition**: `.iris/aidlc/templates/construction/bolt-types/{type}.md`
|
|
103
|
+
|
|
104
|
+
## Stages
|
|
105
|
+
|
|
106
|
+
- [ ] **1. {stage-1}**: Pending → {artifact}
|
|
107
|
+
- [ ] **2. {stage-2}**: Pending → {artifact}
|
|
108
|
+
- [ ] **3. {stage-3}**: Pending → {artifact}
|
|
109
|
+
- [ ] **4. {stage-4}**: Pending → {artifact}
|
|
110
|
+
|
|
111
|
+
## Dependencies
|
|
112
|
+
|
|
113
|
+
### Requires
|
|
114
|
+
- {Previous bolt or None}
|
|
115
|
+
|
|
116
|
+
### Enables
|
|
117
|
+
- {Next bolt or deployment}
|
|
118
|
+
|
|
119
|
+
## Success Criteria
|
|
120
|
+
|
|
121
|
+
- [ ] All stories implemented
|
|
122
|
+
- [ ] All acceptance criteria met
|
|
123
|
+
- [ ] Tests passing
|
|
124
|
+
- [ ] Code reviewed
|
|
125
|
+
|
|
126
|
+
## Notes
|
|
127
|
+
|
|
128
|
+
{Any additional context or considerations}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Status Values
|
|
134
|
+
|
|
135
|
+
- **planned**: Bolt created, not started
|
|
136
|
+
- **in-progress**: Currently being executed
|
|
137
|
+
- **completed**: All stages done
|
|
138
|
+
- **blocked**: Cannot proceed due to dependency
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Stage Status Symbols
|
|
143
|
+
|
|
144
|
+
- [ ] = Pending
|
|
145
|
+
- ⏳ = In Progress
|
|
146
|
+
- ✅ = Complete
|
|
147
|
+
- 🚫 = Blocked
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Example
|
|
152
|
+
|
|
153
|
+
```yaml
|
|
154
|
+
---
|
|
155
|
+
id: bolt-auth-service-1
|
|
156
|
+
unit: 001-auth-service
|
|
157
|
+
intent: 001-user-authentication
|
|
158
|
+
type: ddd-construction-bolt
|
|
159
|
+
status: in-progress
|
|
160
|
+
stories:
|
|
161
|
+
- story-1
|
|
162
|
+
- story-2
|
|
163
|
+
created: 2024-12-05
|
|
164
|
+
started: 2024-12-05
|
|
165
|
+
completed: null
|
|
166
|
+
current_stage: design
|
|
167
|
+
stages_completed:
|
|
168
|
+
- name: model
|
|
169
|
+
completed: 2024-12-05T10:00:00Z
|
|
170
|
+
artifact: ddd-01-domain-model.md
|
|
171
|
+
|
|
172
|
+
requires_bolts: []
|
|
173
|
+
enables_bolts:
|
|
174
|
+
- bolt-auth-service-2
|
|
175
|
+
requires_units: []
|
|
176
|
+
blocks: false
|
|
177
|
+
|
|
178
|
+
complexity:
|
|
179
|
+
avg_complexity: 2
|
|
180
|
+
avg_uncertainty: 1
|
|
181
|
+
max_dependencies: 1
|
|
182
|
+
testing_scope: 2
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
# Bolt: bolt-auth-service-1
|
|
186
|
+
|
|
187
|
+
## Overview
|
|
188
|
+
|
|
189
|
+
First bolt for authentication service covering user registration and login.
|
|
190
|
+
|
|
191
|
+
## Objective
|
|
192
|
+
|
|
193
|
+
Implement core authentication functionality including user registration with email verification and secure login.
|
|
194
|
+
|
|
195
|
+
## Stories Included
|
|
196
|
+
|
|
197
|
+
- **story-1**: User can register (Must)
|
|
198
|
+
- **story-2**: User can login (Must)
|
|
199
|
+
|
|
200
|
+
## Bolt Type
|
|
201
|
+
|
|
202
|
+
**Type**: DDD Construction Bolt
|
|
203
|
+
**Definition**: `.iris/aidlc/templates/construction/bolt-types/ddd-construction-bolt.md`
|
|
204
|
+
|
|
205
|
+
## Stages
|
|
206
|
+
|
|
207
|
+
- ✅ **1. model**: Complete → ddd-01-domain-model.md
|
|
208
|
+
- ⏳ **2. design**: In Progress → ddd-02-technical-design.md ← current
|
|
209
|
+
- [ ] **3. implement**: Pending → src/auth-service/
|
|
210
|
+
- [ ] **4. test**: Pending → ddd-03-test-report.md
|
|
211
|
+
|
|
212
|
+
## Dependencies
|
|
213
|
+
|
|
214
|
+
### Requires
|
|
215
|
+
- None (first bolt)
|
|
216
|
+
|
|
217
|
+
### Enables
|
|
218
|
+
- bolt-auth-service-2 (MFA implementation)
|
|
219
|
+
|
|
220
|
+
## Success Criteria
|
|
221
|
+
|
|
222
|
+
- ✅ Domain model defined
|
|
223
|
+
- [ ] API design complete
|
|
224
|
+
- [ ] Implementation complete
|
|
225
|
+
- [ ] Tests passing
|
|
226
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
bolt: {bolt-id}
|
|
3
|
+
created: {YYYY-MM-DDTHH:MM:SSZ}
|
|
4
|
+
status: proposed | accepted | deprecated | superseded
|
|
5
|
+
superseded_by: {adr-number if applicable}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ADR-{number}: {title}
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
{Describe the situation that requires a decision. What is the problem or opportunity? What constraints exist? What forces are at play?}
|
|
13
|
+
|
|
14
|
+
## Decision
|
|
15
|
+
|
|
16
|
+
{State the decision clearly. What did we decide to do?}
|
|
17
|
+
|
|
18
|
+
## Rationale
|
|
19
|
+
|
|
20
|
+
{Explain why this decision was made. What alternatives were considered? Why were they rejected?}
|
|
21
|
+
|
|
22
|
+
### Alternatives Considered
|
|
23
|
+
|
|
24
|
+
| Alternative | Pros | Cons | Why Rejected |
|
|
25
|
+
|-------------|------|------|--------------|
|
|
26
|
+
| {option 1} | | | |
|
|
27
|
+
| {option 2} | | | |
|
|
28
|
+
|
|
29
|
+
## Consequences
|
|
30
|
+
|
|
31
|
+
### Positive
|
|
32
|
+
|
|
33
|
+
- {Benefit 1}
|
|
34
|
+
- {Benefit 2}
|
|
35
|
+
|
|
36
|
+
### Negative
|
|
37
|
+
|
|
38
|
+
- {Trade-off 1}
|
|
39
|
+
- {Trade-off 2}
|
|
40
|
+
|
|
41
|
+
### Risks
|
|
42
|
+
|
|
43
|
+
- {Risk 1 and mitigation}
|
|
44
|
+
|
|
45
|
+
## Related
|
|
46
|
+
|
|
47
|
+
- **Stories**: {related story IDs}
|
|
48
|
+
- **Standards**: {if this should be added to standards later}
|
|
49
|
+
- **Previous ADRs**: {related ADR numbers}
|