jettypod 4.1.2 → 4.1.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.
Files changed (179) hide show
  1. package/.nvmrc +1 -0
  2. package/docs/COMPLETE-TESTING-STRATEGY.md +970 -0
  3. package/docs/DECISIONS.md +10 -12
  4. package/docs/NODE_VERSION.md +83 -0
  5. package/docs/TDD-INFRASTRUCTURE-STRATEGY.md +1374 -0
  6. package/docs/TESTING-FOR-NON-ENGINEERS.md +1588 -0
  7. package/docs/TESTING-STRATEGY-AUDIT.md +698 -0
  8. package/hooks/post-checkout +17 -0
  9. package/hooks/post-merge +17 -0
  10. package/hooks/pre-commit +30 -0
  11. package/jettypod.js +259 -120
  12. package/lib/coverage-tracker.js +218 -0
  13. package/lib/database.js +2 -0
  14. package/lib/db-export.js +192 -0
  15. package/lib/db-import.js +193 -0
  16. package/lib/external-transition-handler.js +32 -0
  17. package/lib/git-hook-helpers.js +174 -0
  18. package/lib/git-root.js +90 -0
  19. package/lib/infrastructure-chore-generator.js +45 -0
  20. package/lib/install-hooks.js +52 -0
  21. package/lib/jettypod-backup.js +238 -0
  22. package/lib/merge-lock.js +193 -0
  23. package/lib/migrations/012-add-worktree-path.js +38 -0
  24. package/lib/migrations/013-worktrees-table.js +86 -0
  25. package/lib/migrations/014-migrate-worktree-data.js +161 -0
  26. package/lib/migrations/015-merge-locks-table.js +67 -0
  27. package/lib/pattern-finder.js +152 -0
  28. package/lib/process-manager.js +140 -0
  29. package/lib/production-standards-reader.js +13 -2
  30. package/lib/production-standards-writer.js +85 -0
  31. package/lib/skills/feature-planning/dry-run-validator.js +135 -0
  32. package/lib/skills/feature-planning/validation-formatter.js +160 -0
  33. package/lib/smart-conflict-detection.js +168 -0
  34. package/lib/smart-fetch-rebase.js +614 -0
  35. package/lib/step-definition-parser.js +76 -0
  36. package/lib/unit-test-generator.js +232 -0
  37. package/lib/verification-command-generator.js +66 -0
  38. package/lib/worktree-diagnostics.js +413 -0
  39. package/lib/worktree-facade.js +174 -0
  40. package/lib/worktree-manager.js +636 -0
  41. package/lib/worktree-reconciler.js +429 -0
  42. package/package.json +30 -3
  43. package/skills-templates/external-transition/SKILL.md +34 -3
  44. package/skills-templates/feature-planning/SKILL.md +190 -24
  45. package/skills-templates/production-mode/SKILL.md +127 -9
  46. package/skills-templates/speed-mode/SKILL.md +454 -51
  47. package/skills-templates/stable-mode/SKILL.md +285 -76
  48. package/.claude/PROTECT_SKILLS.md +0 -28
  49. package/.claude/settings.json +0 -24
  50. package/.claude/settings.local.json +0 -16
  51. package/.claude/skills/epic-planning/SKILL.md +0 -297
  52. package/.claude/skills/external-transition/SKILL.md +0 -384
  53. package/.claude/skills/feature-planning/SKILL.md +0 -464
  54. package/.claude/skills/production-mode/SKILL.md +0 -369
  55. package/.claude/skills/speed-mode/SKILL.md +0 -481
  56. package/.claude/skills/stable-mode/SKILL.md +0 -713
  57. package/.claude/skills.backup-2025-11-10T23-33-09-368Z/epic-planning/SKILL.md +0 -297
  58. package/.claude/skills.backup-2025-11-10T23-33-09-368Z/feature-planning/SKILL.md +0 -464
  59. package/.claude/skills.backup-2025-11-10T23-33-09-368Z/speed-mode/SKILL.md +0 -467
  60. package/.claude/skills.backup-2025-11-10T23-33-09-368Z/stable-mode/SKILL.md +0 -673
  61. package/.claude/skills.backup-2025-11-11T16-15-10-070Z/epic-discover/SKILL.md +0 -297
  62. package/.claude/skills.backup-2025-11-11T16-42-43-212Z/epic-planning/SKILL.md +0 -297
  63. package/.claude/skills.backup-2025-11-11T16-42-43-212Z/feature-planning/SKILL.md +0 -464
  64. package/.claude/skills.backup-2025-11-11T16-42-43-212Z/speed-mode/SKILL.md +0 -467
  65. package/.claude/skills.backup-2025-11-11T16-42-43-212Z/stable-mode/SKILL.md +0 -673
  66. package/.claude/skills.backup-2025-11-11T17-06-09-783Z/epic-planning/SKILL.md +0 -297
  67. package/.claude/skills.backup-2025-11-11T17-06-09-783Z/feature-planning/SKILL.md +0 -464
  68. package/.claude/skills.backup-2025-11-11T17-06-09-783Z/speed-mode/SKILL.md +0 -467
  69. package/.claude/skills.backup-2025-11-11T17-06-09-783Z/stable-mode/SKILL.md +0 -673
  70. package/.devpod/current-work.json +0 -10
  71. package/.devpod/work.db +0 -0
  72. package/.github/workflows/test-safety.yml +0 -85
  73. package/.jettypod/config.json +0 -5
  74. package/.jettypod/current-work.json +0 -10
  75. package/.jettypod/hooks/README.md +0 -77
  76. package/.jettypod/hooks/protect-claude-md.js +0 -338
  77. package/.jettypod/test-work.db +0 -0
  78. package/.jettypod/work.db +0 -0
  79. package/CLAUDE.md +0 -49
  80. package/SPEED-STABLE-AUDIT.md +0 -853
  81. package/SYSTEM-BEHAVIOR.md +0 -2199
  82. package/TEST_SAFETY_AUDIT.md +0 -314
  83. package/TEST_SAFETY_IMPLEMENTATION.md +0 -97
  84. package/cucumber-report.html +0 -45
  85. package/dist/devpod-linux +0 -0
  86. package/dist/devpod-macos +0 -0
  87. package/dist/devpod-win.exe +0 -0
  88. package/docs/features/jettypod-standards-explained.md +0 -543
  89. package/docs/features/standards-inventory.md +0 -257
  90. package/features/auto-generate-production-chores.feature +0 -13
  91. package/features/backlog-command.feature +0 -26
  92. package/features/backlog-filtering-production.feature +0 -10
  93. package/features/claude-md-protection/steps.js +0 -498
  94. package/features/decisions/index.js +0 -490
  95. package/features/decisions/index.test.js +0 -208
  96. package/features/fix-text-wrapping.feature +0 -42
  97. package/features/git-hooks/git-hooks.feature +0 -30
  98. package/features/git-hooks/index.js +0 -93
  99. package/features/git-hooks/index.test.js +0 -137
  100. package/features/git-hooks/post-commit +0 -56
  101. package/features/git-hooks/post-merge +0 -47
  102. package/features/git-hooks/pre-commit +0 -28
  103. package/features/git-hooks/simple-steps.js +0 -53
  104. package/features/git-hooks/simple-test.feature +0 -10
  105. package/features/git-hooks/steps.js +0 -196
  106. package/features/jettypod-update-command.feature +0 -46
  107. package/features/mode-prompts/index.js +0 -95
  108. package/features/mode-prompts/simple-steps.js +0 -44
  109. package/features/mode-prompts/simple-test.feature +0 -9
  110. package/features/mode-prompts/validation.test.js +0 -120
  111. package/features/multiple-claude-instances.feature +0 -121
  112. package/features/production-mode-skill.feature +0 -121
  113. package/features/refactor-mode/steps.js +0 -217
  114. package/features/refactor-mode.feature +0 -49
  115. package/features/simplify-external-transition.feature +0 -166
  116. package/features/skills-update/index.test.js +0 -216
  117. package/features/step_definitions/backlog-command.steps.js +0 -37
  118. package/features/step_definitions/fix-text-wrapping.steps.js +0 -271
  119. package/features/step_definitions/multiple-claude-instances.steps.js +0 -621
  120. package/features/step_definitions/production-mode-skill.steps.js +0 -862
  121. package/features/step_definitions/simplify-external-transition.steps.js +0 -370
  122. package/features/step_definitions/terminal-logo.steps.js +0 -145
  123. package/features/step_definitions/update-command.steps.js +0 -183
  124. package/features/support/hooks.js +0 -9
  125. package/features/terminal-logo/index.js +0 -39
  126. package/features/terminal-logo/terminal-logo.feature +0 -30
  127. package/features/update-command/index.js +0 -181
  128. package/features/update-command/index.test.js +0 -225
  129. package/features/work-commands/bug-workflow-display.feature +0 -22
  130. package/features/work-commands/index.js +0 -498
  131. package/features/work-commands/simple-steps.js +0 -69
  132. package/features/work-commands/stable-tests.feature +0 -57
  133. package/features/work-commands/steps.js +0 -1174
  134. package/features/work-commands/validation.test.js +0 -88
  135. package/features/work-commands/work-commands.feature +0 -13
  136. package/features/work-tracking/discovery-validation.test.js +0 -228
  137. package/features/work-tracking/index.js +0 -1921
  138. package/features/work-tracking/mode-required.feature +0 -112
  139. package/features/work-tracking/phase-tracking.test.js +0 -482
  140. package/features/work-tracking/prototype-tracking.test.js +0 -485
  141. package/features/work-tracking/tree-view.test.js +0 -310
  142. package/features/work-tracking/work-set-mode.feature +0 -71
  143. package/features/work-tracking/work-start-mode.feature +0 -88
  144. package/full-test.txt +0 -0
  145. package/lib/bug-workflow.test.js +0 -177
  146. package/lib/claudemd.test.js +0 -195
  147. package/lib/config.test.js +0 -511
  148. package/lib/constants.test.js +0 -164
  149. package/lib/current-work.test.js +0 -146
  150. package/lib/database-project-config.test.js +0 -111
  151. package/lib/database.test.js +0 -106
  152. package/lib/decisions-generator.test.js +0 -457
  153. package/lib/decisions-helpers.test.js +0 -310
  154. package/lib/git-coordinator.js +0 -167
  155. package/lib/git.test.js +0 -145
  156. package/lib/migrations/002-default-work-item-modes.test.js +0 -351
  157. package/lib/production-chore-generator.test.js +0 -432
  158. package/lib/production-context-detector.test.js +0 -277
  159. package/lib/production-scenario-appender.test.js +0 -235
  160. package/lib/production-scenario-validator.test.js +0 -246
  161. package/lib/production-standards-reader.test.js +0 -270
  162. package/lib/project-state.test.js +0 -92
  163. package/lib/push-queue.js +0 -417
  164. package/lib/queue-processor.js +0 -74
  165. package/lib/test-helpers.js +0 -202
  166. package/lib/test-helpers.test.js +0 -255
  167. package/prototypes/2025-01-11-production-mode-autonomous.js +0 -119
  168. package/prototypes/2025-01-11-production-mode-collaborative.js +0 -166
  169. package/prototypes/2025-01-11-production-mode-guided.js +0 -217
  170. package/prototypes/2025-01-11-production-mode-smart-context.js +0 -347
  171. package/prototypes/2025-01-11-production-standards-example.md +0 -204
  172. package/prototypes/2025-11-10-backlog-filtering-tree-aware.js +0 -242
  173. package/prototypes/test/index.html +0 -1
  174. package/setup-dist-repo.sh +0 -68
  175. package/test-production-standards-engine.js +0 -130
  176. package/test-results.json +0 -2195
  177. package/test-safety-check.sh +0 -80
  178. package/work-item-tracking-plan.md +0 -199
  179. /package/{.jettypod/devpod.db → jettypod.db} +0 -0
@@ -1,80 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Test Safety Verification Script
4
- # Ensures tests don't modify production files
5
-
6
- set -e
7
-
8
- echo "🔍 Test Safety Verification Starting..."
9
-
10
- # Colors for output
11
- RED='\033[0;31m'
12
- GREEN='\033[0;32m'
13
- YELLOW='\033[1;33m'
14
- NC='\033[0m' # No Color
15
-
16
- # Create snapshots
17
- echo "📸 Creating production snapshots..."
18
- if command -v md5sum > /dev/null; then
19
- MD5_CMD="md5sum"
20
- else
21
- MD5_CMD="md5 -r"
22
- fi
23
- $MD5_CMD package.json > .test-safety-package.md5
24
- ls -la | grep -v "node_modules" | grep -v ".git" > .test-safety-files.txt
25
- find . -type f \( -name "*.js" -o -name "*.json" -o -name "*.md" \) | \
26
- grep -v node_modules | grep -v .git | \
27
- xargs $MD5_CMD > .test-safety-all.md5
28
-
29
- # Run tests
30
- echo "🧪 Running tests..."
31
- npm test || TEST_FAILED=1
32
-
33
- # Verify no changes
34
- echo "🔍 Verifying production directory..."
35
-
36
- # Check package.json
37
- CURRENT_MD5=$($MD5_CMD package.json)
38
- ORIGINAL_MD5=$(cat .test-safety-package.md5)
39
- if [ "$CURRENT_MD5" = "$ORIGINAL_MD5" ]; then
40
- echo -e "${GREEN}✓${NC} package.json unchanged"
41
- else
42
- echo -e "${RED}✗${NC} package.json was modified!"
43
- SAFETY_FAILED=1
44
- fi
45
-
46
- # Check for leaked files
47
- LEAKED_FILES=$(ls | grep -E "^(temp_|actual_|main|server|utils|Calculator|helper|app)" || true)
48
- if [ -z "$LEAKED_FILES" ]; then
49
- echo -e "${GREEN}✓${NC} No test artifacts leaked"
50
- else
51
- echo -e "${RED}✗${NC} Test files leaked to production:"
52
- echo "$LEAKED_FILES"
53
- SAFETY_FAILED=1
54
- fi
55
-
56
- # Check all files
57
- CURRENT_ALL_MD5=$(find . -type f \( -name "*.js" -o -name "*.json" -o -name "*.md" \) | \
58
- grep -v node_modules | grep -v .git | \
59
- xargs $MD5_CMD | sort)
60
- ORIGINAL_ALL_MD5=$(cat .test-safety-all.md5 | sort)
61
- if [ "$CURRENT_ALL_MD5" = "$ORIGINAL_ALL_MD5" ]; then
62
- echo -e "${GREEN}✓${NC} All production files unchanged"
63
- else
64
- echo -e "${YELLOW}⚠${NC} Some files were modified (CLAUDE.md updates are expected)"
65
- fi
66
-
67
- # Cleanup
68
- rm -f .test-safety-*.md5 .test-safety-*.txt
69
-
70
- # Report
71
- echo ""
72
- if [ "$SAFETY_FAILED" = "1" ]; then
73
- echo -e "${RED}❌ SAFETY CHECK FAILED${NC} - Tests modified production files!"
74
- exit 1
75
- elif [ "$TEST_FAILED" = "1" ]; then
76
- echo -e "${YELLOW}⚠️ Tests failed but production is safe${NC}"
77
- exit 1
78
- else
79
- echo -e "${GREEN}✅ SAFETY CHECK PASSED${NC} - Production directory is safe!"
80
- fi
@@ -1,199 +0,0 @@
1
- # Work Item Tracking Implementation Plan
2
-
3
- ## Goal
4
- Keep work items updated throughout feature lifecycle via mode changes and Git hooks.
5
-
6
- ## Core Components
7
-
8
- ### 1. Work Item Management
9
- **Command: `jettypod work start <id>`**
10
- - Sets work item as "current" (store in `.jettypod/current-work.json`)
11
- - Auto-updates status `todo` → `in_progress`
12
- - Creates feature branch: `feature/work-<id>-<slug>`
13
- - Updates CLAUDE.md `<current_work>` section
14
-
15
- **Command: `jettypod work stop`**
16
- - Clears current work item
17
- - Prompts for status update before clearing
18
-
19
- ### 2. Subtask Support
20
- **Structure: Flat with parent reference**
21
- ```yaml
22
- - id: 1
23
- title: Q1 2025 Goals
24
- type: epic
25
- status: in_progress
26
-
27
- - id: 2
28
- title: Work Tracking
29
- type: feature
30
- parent: 1
31
- status: in_progress
32
-
33
- - id: 3
34
- title: Git hook integration
35
- type: task
36
- parent: 2
37
- status: todo
38
- ```
39
-
40
- **Display format:**
41
- - When starting #3: "Working on: [#3] Git hook integration (subtask of #2 Work Tracking)"
42
- - In CLAUDE.md: Show full hierarchy chain
43
-
44
- ### 3. Git Hook Auto-Updates
45
-
46
- **Hook: `post-commit`**
47
- - First commit on feature branch → auto `todo` → `in_progress`
48
- - Work item already `in_progress` or beyond → skip
49
- - No current work item → skip silently
50
-
51
- **Hook: `prepare-commit-msg`**
52
- - Committing while status is `todo` → prompt "Work item still 'todo'. Update to 'in_progress'? [Y/n]"
53
- - Work item is `in_progress` → skip
54
- - No current work item → skip silently
55
-
56
- **Hook: `post-merge`** (or detect merge to main in post-commit)
57
- - Merged to main → auto → `done`
58
- - Merged to other branch → skip
59
-
60
- ### 4. Mode Change Prompts
61
-
62
- **Modified: `jettypod mode <mode>`**
63
- Before switching modes:
64
- ```
65
- Current work: [#2] Work Tracking (in_progress)
66
- Update status? [in_progress/blocked/done/skip]: _
67
- ```
68
-
69
- - Shows current work item and status
70
- - Prompts for new status
71
- - Skip = no change
72
- - Updates work item + CLAUDE.md before mode change completes
73
-
74
- ### 5. Hook Installation
75
-
76
- **Location:** `.jettypod/hooks/` (templates)
77
-
78
- **Setup:**
79
- - `jettypod init` or first-run setup symlinks to `.git/hooks/`
80
- - Hooks check for `.jettypod/current-work.json` before doing anything
81
- - Fail silently if file doesn't exist (not using work tracking yet)
82
-
83
- ## Work Item Hierarchy
84
-
85
- **Epic: [#2] Work Item Lifecycle Automation** (parent: #1 Q1 2025 Goals)
86
-
87
- ### Features:
88
- - **[#3] Work item commands** - `jettypod work start/stop`
89
- - **[#4] Git hook integration** - Auto-update on commits/merges
90
- - **[#5] Mode change prompts** - Status review on mode switch
91
- - **[#6] Subtask support** - Parent hierarchy tracking
92
-
93
- ## Implementation Order
94
-
95
- ### Feature #3: Work Item Commands (2h max)
96
- **Type:** feature
97
- **Parent:** #2 Work Item Lifecycle Automation
98
-
99
- 1. Write Gherkin scenarios:
100
- - Starting work item sets current + creates branch
101
- - Starting work item updates status
102
- - Stopping work item prompts for status
103
- - Subtask display shows parent chain
104
- - Integration: starting work updates CLAUDE.md
105
-
106
- 2. Implement:
107
- - `jettypod work start <id>`
108
- - `jettypod work stop`
109
- - `.jettypod/current-work.json` storage
110
- - Parent hierarchy resolution
111
- - CLAUDE.md `<current_work>` update
112
-
113
- ### Feature #4: Git Hook Integration (2h max)
114
- **Type:** feature
115
- **Parent:** #2 Work Item Lifecycle Automation
116
-
117
- 1. Write Gherkin scenarios:
118
- - First commit auto-updates to in_progress
119
- - Commit while todo prompts for update
120
- - Merge to main auto-updates to done
121
- - Integration: hooks respect current work item state
122
-
123
- 2. Implement:
124
- - Hook templates in `.jettypod/hooks/`
125
- - `post-commit` logic
126
- - `prepare-commit-msg` logic
127
- - `post-merge` logic
128
- - Hook installation in init
129
-
130
- ### Feature #5: Mode Change Integration (1h max)
131
- **Type:** feature
132
- **Parent:** #2 Work Item Lifecycle Automation
133
-
134
- 1. Write Gherkin scenarios:
135
- - Mode change prompts for work item status
136
- - Skip option doesn't update
137
- - Status update reflects in CLAUDE.md
138
- - Integration: mode change + work item update atomic
139
-
140
- 2. Implement:
141
- - Modify `jettypod mode <mode>` to prompt
142
- - Update work item from prompt
143
- - Update CLAUDE.md
144
- - Validate before mode switch completes
145
-
146
- ### Feature #6: Subtask Support (implicit)
147
- **Type:** feature
148
- **Parent:** #2 Work Item Lifecycle Automation
149
-
150
- Built into #3 - flat structure with parent references, hierarchy resolution in display logic.
151
-
152
- ## Edge Cases
153
-
154
- ### No current work item
155
- - All hooks skip silently
156
- - Mode change shows "No active work item"
157
-
158
- ### Committing directly to main
159
- - Warn but allow
160
- - Don't auto-update status (ambiguous)
161
-
162
- ### Work item already in target status
163
- - Skip auto-update
164
- - Don't prompt
165
-
166
- ### Invalid work item ID in current-work.json
167
- - Show error
168
- - Prompt to clear or fix
169
-
170
- ### Parent work item doesn't exist
171
- - Show warning
172
- - Continue (broken reference, but don't block)
173
-
174
- ## Files Created/Modified
175
-
176
- **New:**
177
- - `.jettypod/hooks/post-commit`
178
- - `.jettypod/hooks/prepare-commit-msg`
179
- - `.jettypod/hooks/post-merge`
180
- - `.jettypod/current-work.json` (generated)
181
- - `features/work-commands/` (implementation)
182
- - `features/work-commands/work-commands.feature` (scenarios)
183
-
184
- **Modified:**
185
- - .jettypod.js` (add work start/stop commands)
186
- - `lib/mode.js` (add status prompt)
187
- - `lib/init.js` (hook installation)
188
- - `lib/claudemd.js` (update current_work section)
189
-
190
- ## Success Criteria
191
-
192
- ✅ Can start work item and it creates branch + updates CLAUDE.md
193
- ✅ First commit auto-updates status to in_progress
194
- ✅ Committing while todo prompts for update
195
- ✅ Merging to main auto-updates to done
196
- ✅ Mode change prompts for status review
197
- ✅ Subtasks display parent hierarchy
198
- ✅ All Gherkin tests passing (including integration tests)
199
- ✅ Can demo full workflow without manual CLAUDE.md edits
File without changes