devforgeai 1.0.8 → 1.0.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devforgeai",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "DevForgeAI is a spec-driven development framework designed to enable AI-assisted software development with zero technical debt through automated validation, architectural constraints enforcement, and test-driven development workflows.",
5
5
  "keywords": [
6
6
  "ai",
@@ -38,7 +38,7 @@
38
38
  "src/claude/skills/",
39
39
  "src/scripts/*.sh",
40
40
  "src/scripts/*.json",
41
- "devforgeai/specs/context/"
41
+ "docs/"
42
42
  ],
43
43
  "repository": {
44
44
  "type": "git",
@@ -11,7 +11,6 @@ const COMPONENTS = [
11
11
  { from: 'CLAUDE.md', to: 'CLAUDE.md', template: true },
12
12
  { from: 'src/claude/rules/', to: '.claude/rules/', template: false },
13
13
  { from: 'src/claude/memory/', to: '.claude/memory/', template: false },
14
- { from: 'devforgeai/specs/context/', to: 'devforgeai/specs/context/', template: true },
15
14
  ],
16
15
  },
17
16
  {
@@ -71,15 +70,12 @@ const COMPONENTS = [
71
70
  required: false,
72
71
  defaultSelected: true,
73
72
  directories: [
74
- 'src/',
75
- 'tests/',
76
- 'docs/',
77
73
  'devforgeai/',
78
- 'devforgeai/specs/',
79
- 'devforgeai/specs/adrs/',
80
- 'devforgeai/specs/Stories/',
81
- 'devforgeai/specs/Epics/',
82
- 'tmp/',
74
+ ],
75
+ sources: [
76
+ { from: 'docs/api/', to: 'docs/api/', template: false },
77
+ { from: 'docs/architecture/', to: 'docs/architecture/', template: false },
78
+ { from: 'docs/guides/', to: 'docs/guides/', template: false },
83
79
  ],
84
80
  },
85
81
  ];
File without changes
@@ -1,285 +0,0 @@
1
- # Anti-Patterns - DevForgeAI Framework
2
-
3
- **Status**: LOCKED
4
- **Last Updated**: 2026-02-05
5
- **Version**: 1.1
6
-
7
- ## Framework Anti-Patterns
8
-
9
- ### Category 1: Tool Usage Violations (SEVERITY: CRITICAL)
10
-
11
- ❌ **FORBIDDEN: Using Bash for File Operations**
12
-
13
- **Wrong**:
14
- ```markdown
15
- Bash(command="cat story.md")
16
- Bash(command="echo 'content' > file.md")
17
- Bash(command="find . -name '*.md'")
18
- ```
19
-
20
- **Correct**:
21
- ```markdown
22
- Read(file_path="story.md")
23
- Write(file_path="file.md", content="content")
24
- Glob(pattern="**/*.md")
25
- ```
26
-
27
- **Rationale**: 40-73% token efficiency gain with native tools.
28
-
29
- ### Category 2: Monolithic Components (SEVERITY: HIGH)
30
-
31
- ❌ **FORBIDDEN: All-in-One Skill**
32
-
33
- **Wrong**:
34
- ```
35
- .claude/skills/devforgeai-everything/
36
- └── SKILL.md (5,000 lines doing ideation + architecture + dev + qa + release)
37
- ```
38
-
39
- **Correct**:
40
- ```
41
- .claude/skills/
42
- ├── discovering-requirements/
43
- ├── designing-architecture/
44
- ├── implementing-stories/
45
- ├── validating-quality/
46
- └── releasing-stories/
47
- ```
48
-
49
- **Rationale**: Modularity enables independent updates and token efficiency.
50
-
51
- ### Category 3: Making Assumptions (SEVERITY: CRITICAL)
52
-
53
- ❌ **FORBIDDEN: Assuming Technology Choices**
54
-
55
- **Wrong**:
56
- ```markdown
57
- # AI sees "need caching" and adds Redis without asking
58
- Install Redis for caching layer
59
- ```
60
-
61
- **Correct**:
62
- ```markdown
63
- Question: "Spec requires caching. Which technology?"
64
- Header: "Caching"
65
- Options:
66
- - "Redis (in-memory, distributed)"
67
- - "Memcached (simple, fast)"
68
- - "In-memory (no external service)"
69
- multiSelect: false
70
- ```
71
-
72
- **Rationale**: Assumptions cause technical debt.
73
-
74
- ### Category 4: Size Violations (SEVERITY: HIGH)
75
-
76
- ❌ **FORBIDDEN: Exceeding Component Size Limits**
77
-
78
- **Wrong**:
79
- ```markdown
80
- # SKILL.md with 2,000 lines of inline documentation
81
- ```
82
-
83
- **Correct**:
84
- ```markdown
85
- # SKILL.md with 500 lines + references/ for deep docs
86
- For detailed scoring rubric, see references/complexity-assessment-matrix.md
87
- ```
88
-
89
- **Rationale**: Character budget constraints (15K for commands).
90
-
91
- ### Category 5: Language-Specific Framework Code (SEVERITY: CRITICAL)
92
-
93
- ❌ **FORBIDDEN: Python/C#/JavaScript in Framework**
94
-
95
- **Wrong**:
96
- ```
97
- .claude/skills/implementing-stories/
98
- ├── SKILL.md
99
- └── scripts/
100
- └── implement.py # Python implementation
101
- ```
102
-
103
- **Correct**:
104
- ```
105
- .claude/skills/implementing-stories/
106
- ├── SKILL.md
107
- └── references/
108
- └── tdd-workflow-guide.md # Documentation only
109
- ```
110
-
111
- **Rationale**: Framework must be language-agnostic.
112
-
113
- ### Category 6: Context File Violations (SEVERITY: CRITICAL)
114
-
115
- ❌ **FORBIDDEN: Proceeding Without Context Files**
116
-
117
- **Wrong**:
118
- ```markdown
119
- # Development skill starts implementation without reading context
120
- Implement feature X using EF Core
121
- ```
122
-
123
- **Correct**:
124
- ```markdown
125
- ## Phase 1: Context Validation
126
- Read all 6 context files
127
- HALT if missing: "Run /create-context first"
128
- Check tech-stack.md for ORM choice
129
- ```
130
-
131
- **Rationale**: Context files prevent architectural violations.
132
-
133
- ### Category 7: Circular Dependencies (SEVERITY: HIGH)
134
-
135
- ❌ **FORBIDDEN: Skills Calling Each Other in Loops**
136
-
137
- **Wrong**:
138
- ```
139
- implementing-stories calls validating-quality
140
-
141
- validating-quality calls implementing-stories
142
-
143
- Infinite loop
144
- ```
145
-
146
- **Correct**:
147
- ```
148
- implementing-stories calls validating-quality (one-way)
149
- validating-quality returns results
150
- implementing-stories continues
151
- ```
152
-
153
- **Rationale**: Prevents infinite loops and context overflow.
154
-
155
- ### Category 8: Narrative Documentation (SEVERITY: MEDIUM)
156
-
157
- ❌ **FORBIDDEN: Prose Instead of Instructions**
158
-
159
- **Wrong**:
160
- ```markdown
161
- The system should first analyze the codebase, and then it might want to consider generating tests...
162
- ```
163
-
164
- **Correct**:
165
- ```markdown
166
- 1. Analyze codebase:
167
- - Grep(pattern="class.*Test", glob="**/*.cs")
168
- 2. Generate tests:
169
- - Use test-automator subagent
170
- ```
171
-
172
- **Rationale**: Direct instructions are clearer for Claude.
173
-
174
- ### Category 9: Missing Frontmatter (SEVERITY: HIGH)
175
-
176
- ❌ **FORBIDDEN: Skills/Subagents/Commands Without Frontmatter**
177
-
178
- **Wrong**:
179
- ```markdown
180
- # My Skill
181
- Instructions go here...
182
- ```
183
-
184
- **Correct**:
185
- ```markdown
186
- ---
187
- name: my-skill
188
- description: Brief description of when to use
189
- tools: Read, Write
190
- ---
191
-
192
- # My Skill
193
- Instructions go here...
194
- ```
195
-
196
- **Rationale**: Frontmatter required for discovery.
197
-
198
- ### Category 10: Hardcoded Paths (SEVERITY: MEDIUM)
199
-
200
- ❌ **FORBIDDEN: Hardcoded File Paths**
201
-
202
- **Wrong**:
203
- ```markdown
204
- Read(file_path="/home/user/project/story.md")
205
- ```
206
-
207
- **Correct**:
208
- ```markdown
209
- Read(file_path="devforgeai/specs/Stories/$STORY_ID.md")
210
- ```
211
-
212
- **Rationale**: Relative paths work across environments.
213
-
214
- ### Category 11: Code Search Tool Selection (SEVERITY: MEDIUM)
215
-
216
- **Treelint-Supported Languages:** Python (`.py`), TypeScript (`.ts`, `.tsx`), JavaScript (`.js`, `.jsx`), Rust (`.rs`), Markdown (`.md`)
217
-
218
- **Grep is Correct for:** Unsupported languages, simple text-pattern searches (TODOs, string literals), fallback when Treelint is unavailable.
219
-
220
- ❌ **FORBIDDEN: Using Treelint for Unsupported File Types**
221
-
222
- **Wrong**:
223
- ```markdown
224
- # Treelint does not support C#, Java, Go, SQL - returns errors
225
- Bash(command="treelint search --type function myfile.cs")
226
- Bash(command="treelint search --type class MyClass.java")
227
- Bash(command="treelint deps --calls project.go")
228
- ```
229
-
230
- **Correct**:
231
- ```markdown
232
- # Use Grep for unsupported languages
233
- Grep(pattern="class\\s+\\w+", glob="**/*.cs")
234
- Grep(pattern="public\\s+void", glob="**/*.java")
235
- Grep(pattern="func\\s+\\w+", glob="**/*.go")
236
- ```
237
-
238
- **Rationale**: Treelint returns errors for unsupported file types, wasting tokens on error responses instead of useful results.
239
-
240
- ❌ **FORBIDDEN: Using Grep When Treelint Available for Supported Languages**
241
-
242
- **Wrong**:
243
- ```markdown
244
- # Using Grep for semantic code search in Treelint-supported languages
245
- Grep(pattern="def\\s+validate", glob="**/*.py")
246
- Grep(pattern="function\\s+handle", glob="**/*.ts")
247
- Grep(pattern="class\\s+Service", glob="**/*.js")
248
- ```
249
-
250
- **Correct**:
251
- ```markdown
252
- # Use Treelint for semantic AST-aware search
253
- Bash(command="treelint search --type function --name 'validate*' --format json")
254
- Bash(command="treelint search --type class --name 'Service*' --format json")
255
- Bash(command="treelint deps --calls --format json")
256
- ```
257
-
258
- **Rationale**: Treelint provides 99.93% token reduction vs Grep for semantic code search (Source: ADR-013, RESEARCH-007). AST-aware search eliminates false positives from comments, strings, and partial matches. Grep remains valid for simple text patterns (TODOs, string literals) even in supported languages, and as fallback when Treelint is unavailable.
259
-
260
- ## Anti-Pattern Detection Protocol
261
-
262
- When framework components detect anti-patterns:
263
-
264
- 1. **HALT immediately**
265
- 2. **Report specific violation** with file:line reference
266
- 3. **Provide correction example**
267
- 4. **Request user confirmation** before proceeding
268
-
269
- ## Enforcement Checklist
270
-
271
- Before committing framework changes:
272
- - [ ] No Bash for file operations (use Read/Write/Edit/Glob/Grep)
273
- - [ ] Components within size limits (skills <1000, commands <500)
274
- - [ ] No language-specific code in framework
275
- - [ ] All ambiguities use AskUserQuestion
276
- - [ ] Context files read before development
277
- - [ ] No circular dependencies
278
- - [ ] Direct instructions, not narrative prose
279
- - [ ] All components have frontmatter
280
- - [ ] No hardcoded absolute paths
281
- - [ ] Code search tool selection correct (Treelint for supported languages, Grep for unsupported)
282
-
283
- ---
284
-
285
- **REMEMBER**: Projects using DevForgeAI will have their own anti-patterns.md with project-specific forbidden patterns (SQL injection, N+1 queries, God objects, etc.).
@@ -1,323 +0,0 @@
1
- # Architecture Constraints - DevForgeAI Framework
2
-
3
- **Status**: LOCKED
4
- **Last Updated**: 2025-10-30
5
- **Version**: 1.0
6
-
7
- ## Framework Architecture Patterns
8
-
9
- ### Three-Layer Architecture (LOCKED)
10
-
11
- ```
12
- Layer 1: Skills (Framework Implementation)
13
- ↓ invokes
14
- Layer 2: Subagents (Parallel Execution)
15
- ↓ uses
16
- Layer 3: Slash Commands (User Workflows)
17
- ```
18
-
19
- **Dependency Rules**:
20
- - ✅ Commands can invoke Skills
21
- - ✅ Commands can invoke Subagents via Task tool
22
- - ✅ Skills can invoke other Skills
23
- - ✅ Skills can invoke Subagents via Task tool
24
- - ❌ Skills CANNOT invoke Commands
25
- - ❌ Subagents CANNOT invoke Skills or Commands
26
- - ❌ Circular dependencies forbidden (Skill A → Skill B → Skill A)
27
-
28
- ### Skill Design Constraints (LOCKED)
29
-
30
- **Single Responsibility Principle**:
31
- - Each skill handles ONE phase of development lifecycle
32
- - ✅ implementing-stories: TDD implementation only (ADR-017 naming)
33
- - ✅ validating-quality: Quality validation only (ADR-017 naming)
34
- - ✅ designing-systems: Architecture and context file creation only (ADR-017 naming)
35
- - ✅ discovering-requirements: Requirements discovery and elicitation only (ADR-017 naming)
36
- - ❌ implementing-and-validating: Multiple responsibilities
37
-
38
- **Context Isolation**:
39
- - Each skill invocation has separate context window
40
- - Skills MUST NOT assume state from previous invocations
41
- - Skills MUST read context files explicitly
42
-
43
- **Progressive Disclosure**:
44
- - Main SKILL.md: Core instructions (<1000 lines)
45
- - references/: Deep documentation (loaded on demand)
46
- - MUST use "see references/[file].md" pattern
47
-
48
- ### Subagent Design Constraints (LOCKED)
49
-
50
- **Domain Specialization**:
51
- - Each subagent specialized in single domain
52
- - ✅ test-automator: Test generation only
53
- - ✅ backend-architect: Backend implementation only
54
- - ❌ full-stack-developer: Too broad
55
-
56
- **Tool Restrictions**:
57
- - Principle of least privilege
58
- - Only grant tools needed for subagent's domain
59
- - Example: test-automator gets Read, Write, Edit, Bash (for running tests)
60
- - Example: code-reviewer gets Read, Grep, Glob only (read-only)
61
-
62
- **Parallel Execution Support**:
63
- - Subagents MUST be designed for parallel invocation
64
- - No shared state between subagents
65
- - No dependencies between parallel subagents
66
-
67
- ### Command Design Constraints (LOCKED)
68
-
69
- **User-Facing Workflows**:
70
- - Commands orchestrate skills and subagents
71
- - Commands provide user-friendly parameters
72
- - Commands handle user ambiguity via AskUserQuestion
73
-
74
- **Size Constraints**:
75
- - Keep under 500 lines (<20K characters)
76
- - If exceeding 500 lines → extract to skill
77
-
78
- **Parameter Handling**:
79
- - Use $ARGUMENTS for user input
80
- - Provide argument-hint in frontmatter
81
- - Validate parameters before processing
82
-
83
- ### Context File Enforcement (LOCKED)
84
-
85
- **Immutability Principle**:
86
- - Context files are THE LAW
87
- - Development skill MUST read ALL 6 context files
88
- - AI agents MUST follow constraints or HALT
89
-
90
- **Validation Pattern**:
91
- ```markdown
92
- ## Phase 1: Context Validation
93
- Read context files in PARALLEL:
94
- - Read(file_path="devforgeai/context/tech-stack.md")
95
- - Read(file_path="devforgeai/context/source-tree.md")
96
- - Read(file_path="devforgeai/context/dependencies.md")
97
- - Read(file_path="devforgeai/context/coding-standards.md")
98
- - Read(file_path="devforgeai/context/architecture-constraints.md")
99
- - Read(file_path="devforgeai/context/anti-patterns.md")
100
-
101
- HALT if ANY file missing: "Context incomplete. Run /create-context"
102
- ```
103
-
104
- ### Quality Gate Pattern (LOCKED)
105
-
106
- **Gate Enforcement**:
107
- - Quality gates MUST block progression on violations
108
- - Gates validated in sequence (no skipping)
109
- - HALT pattern for gate failures
110
-
111
- **Example**:
112
- ```markdown
113
- HALT if tests fail: "Tests must pass before proceeding"
114
- HALT if coverage < threshold: "Coverage below 95%/85%/80%"
115
- HALT if CRITICAL violations: "Fix critical issues before release"
116
- ```
117
-
118
- ### Error Handling Pattern (LOCKED)
119
-
120
- **AskUserQuestion for Ambiguity**:
121
- ```markdown
122
- IF ambiguity detected:
123
- Use AskUserQuestion with specific options
124
- Document decision in context file or ADR
125
- Proceed with chosen option
126
- ```
127
-
128
- **HALT for Constraint Violations**:
129
- ```markdown
130
- IF constraint violated:
131
- HALT with clear error message
132
- Provide resolution steps
133
- Request user confirmation before retry
134
- ```
135
-
136
- ### Token Efficiency Pattern (LOCKED)
137
-
138
- **Parallel Tool Invocation**:
139
- ```markdown
140
- ✅ CORRECT: Parallel reads
141
- Read(file_path="file1.md")
142
- Read(file_path="file2.md")
143
- Read(file_path="file3.md")
144
-
145
- ❌ WRONG: Sequential narrative
146
- First read file1, then read file2, then read file3...
147
- ```
148
-
149
- **Native Tools Over Bash**:
150
- - 40-73% token savings documented
151
- - MUST use Read/Write/Edit/Glob/Grep instead of Bash equivalents
152
-
153
- ---
154
-
155
- ### Parallel Execution Rules (LOCKED)
156
-
157
- **Three Parallel Patterns Available:**
158
-
159
- | Pattern | Use Case | Max Concurrent | Time Savings |
160
- |---------|----------|----------------|--------------|
161
- | Parallel Subagents | Multiple Task() calls | 4-6 (10 max) | 30-40% |
162
- | Background Tasks | Long-running Bash | 3-4 | 50-80% |
163
- | Parallel Tools | Multiple Read/Grep | Automatic | 15-25% |
164
-
165
- **Task Count Limits (LOCKED):**
166
- - **Recommended**: 4-6 parallel subagents per batch
167
- - **Maximum**: 10 concurrent tasks (framework limit)
168
- - **Beyond 10**: Implement explicit batching with synchronization points
169
-
170
- **Dependency Rules (LOCKED):**
171
- - ✅ Parallel tasks MUST be independent (no cross-task dependencies)
172
- - ✅ If task B uses output of task A: execute sequentially
173
- - ✅ Synchronization points required between dependent batches
174
- - ❌ Never parallelize dependent operations
175
-
176
- **Background Task Rules:**
177
- - Timeout required for all background tasks (60-600 seconds)
178
- - Results MUST be retrieved before next phase
179
- - Cleanup on error or deferral
180
-
181
- **Failure Recovery (LOCKED):**
182
- - Primary: Attempt parallel execution
183
- - Fallback: Silently retry as sequential if parallel fails
184
- - Threshold: Continue if >= 50% success rate (configurable)
185
-
186
- **Reference:** See `docs/guides/parallel-orchestration-guide.md` for full patterns
187
-
188
- ---
189
-
190
- ## Installer Architecture Patterns (EPIC-012, EPIC-013, EPIC-014)
191
-
192
- ### Installation State Machine (LOCKED)
193
-
194
- **States**:
195
- ```
196
- ┌─────────────┐
197
- │ Fresh │ ← No previous installation detected
198
- └──────┬──────┘
199
- │ detect existing
200
-
201
- ┌─────────────┐
202
- │ Upgrade │ ← Previous version detected, upgrade path valid
203
- └──────┬──────┘
204
- │ upgrade fails
205
-
206
- ┌─────────────┐
207
- │ Rollback │ ← Restore previous version from backup
208
- └──────┬──────┘
209
- │ success
210
-
211
- ┌─────────────┐
212
- │ Validated │ ← Installation verified complete
213
- └─────────────┘
214
- ```
215
-
216
- **State Transitions**:
217
- - ✅ Fresh → Validated (successful fresh install)
218
- - ✅ Upgrade → Validated (successful upgrade)
219
- - ✅ Upgrade → Rollback → Validated (failed upgrade, rollback succeeded)
220
- - ✅ Fix → Validated (repair completed)
221
- - ❌ Validated → Fresh (no overwriting valid installation without user consent)
222
- - ❌ Rollback → Rollback (no recursive rollback)
223
-
224
- ### Validation Pipeline Pattern (LOCKED)
225
-
226
- **Chain of Responsibility** for pre-flight checks:
227
-
228
- ```
229
- PreFlightValidation
230
- ├── PythonVersionCheck → WARN if Python < 3.10
231
- ├── DiskSpaceCheck → ERROR if < 100MB available
232
- ├── PermissionCheck → ERROR if target not writable
233
- ├── ExistingInstallCheck → INFO prompts for upgrade/fresh choice
234
- ├── GitStatusCheck → WARN if uncommitted changes (optional)
235
- └── ConflictCheck → WARN lists files that would be overwritten
236
- ```
237
-
238
- **Rules**:
239
- - ✅ Checks run in sequence (each check passes before next)
240
- - ✅ ERROR checks block installation (must fix before proceeding)
241
- - ✅ WARN checks allow continuation with --force flag
242
- - ✅ INFO checks are informational only (don't block)
243
- - ❌ No skipping ERROR checks (even with --force)
244
- - ❌ No partial validation (all checks must run)
245
-
246
- ### Atomic Installation Pattern (LOCKED)
247
-
248
- **All-or-Nothing Principle**:
249
-
250
- ```
251
- 1. Create backup of existing files (if any)
252
- 2. Create transaction log
253
- 3. Execute installation steps
254
- - If any step fails → Rollback to backup
255
- - If all steps succeed → Commit (delete backup marker)
256
- 4. Validate installation
257
- - If validation fails → Rollback
258
- 5. Update version metadata
259
- ```
260
-
261
- **Rules**:
262
- - ✅ Backup MUST be created before ANY modifications
263
- - ✅ Transaction log tracks all file operations
264
- - ✅ Rollback restores EXACTLY to pre-installation state
265
- - ✅ No partial installations allowed
266
- - ❌ No modifications without backup
267
- - ❌ No deleting backup until validation passes
268
-
269
- ### CLAUDE.md Merge Strategy (LOCKED)
270
-
271
- **4 Merge Strategies**:
272
-
273
- ```
274
- ┌─────────────────────────────────────────────────────────────┐
275
- │ AUTO-MERGE (default) │
276
- │ - Parse user sections vs DevForgeAI sections │
277
- │ - Preserve user content, update DevForgeAI content │
278
- │ - Merge result = User + Updated Framework │
279
- ├─────────────────────────────────────────────────────────────┤
280
- │ REPLACE │
281
- │ - Backup existing CLAUDE.md │
282
- │ - Overwrite with DevForgeAI template │
283
- │ - User must manually re-add custom content │
284
- ├─────────────────────────────────────────────────────────────┤
285
- │ SKIP │
286
- │ - Don't modify CLAUDE.md │
287
- │ - User manually integrates DevForgeAI instructions │
288
- ├─────────────────────────────────────────────────────────────┤
289
- │ MANUAL │
290
- │ - Create CLAUDE.mddevforgeai (new content) │
291
- │ - User merges manually with existing CLAUDE.md │
292
- └─────────────────────────────────────────────────────────────┘
293
- ```
294
-
295
- **Rules**:
296
- - ✅ Always backup before merge (regardless of strategy)
297
- - ✅ Auto-merge uses section markers to identify boundaries
298
- - ✅ Conflict detection prompts user for resolution
299
- - ✅ Merge result validated for syntax errors
300
- - ❌ No silent overwrites (always inform user)
301
- - ❌ No merge without user consent on conflict
302
-
303
- ### Version Compatibility Matrix (LOCKED)
304
-
305
- **Upgrade Paths**:
306
-
307
- | From Version | To Version | Allowed? | Migration Required? |
308
- |--------------|------------|----------|---------------------|
309
- | v1.x.x | v1.y.z (y>x) | ✅ Yes | Minor migration |
310
- | v1.x.x | v2.0.0 | ⚠️ With warning | Major migration |
311
- | v2.x.x | v1.x.x | ❌ No (downgrade) | N/A |
312
- | None | Any | ✅ Yes (fresh) | None |
313
-
314
- **Rules**:
315
- - ✅ Minor version upgrades always allowed (1.0 → 1.1)
316
- - ✅ Patch version upgrades always allowed (1.0.0 → 1.0.1)
317
- - ⚠️ Major version upgrades require user confirmation (1.x → 2.x)
318
- - ❌ Downgrades blocked by default (require --force)
319
- - ❌ Skip-version upgrades require sequential migrations (1.0 → 1.1 → 1.2, not 1.0 → 1.2)
320
-
321
- ---
322
-
323
- **REMEMBER**: Projects using DevForgeAI will have their own architecture-constraints.md defining layer boundaries, patterns, and design rules specific to their architecture (Clean Architecture, N-Tier, etc.).