jettypod 4.4.39 → 4.4.40

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": "jettypod",
3
- "version": "4.4.39",
3
+ "version": "4.4.40",
4
4
  "description": "AI-powered development workflow manager with TDD, BDD, and automatic test generation",
5
5
  "main": "jettypod.js",
6
6
  "bin": {
@@ -84,14 +84,36 @@ jettypod work start [chore-id]
84
84
 
85
85
  This creates a worktree at `.jettypod-work/[id]-[title-slug]` and switches to a new branch.
86
86
 
87
- **Display:**
87
+ **🛑 VALIDATION REQUIRED:** After running `work start`, verify the worktree was created:
88
+
89
+ ```bash
90
+ sqlite3 .jettypod/work.db "SELECT worktree_path FROM worktrees WHERE work_item_id = [chore-id] AND status = 'active'"
91
+ ```
92
+
93
+ | Result | What it means | Action |
94
+ |--------|---------------|--------|
95
+ | **Has a path** | ✅ Worktree created successfully | Continue to Step 3 |
96
+ | **Empty/no rows** | ❌ Worktree creation failed | **STOP - check the error output from `work start` and resolve before continuing** |
97
+
98
+ **Display (on success):**
88
99
 
89
100
  ```
90
101
  📁 Worktree created: .jettypod-work/[id]-[title-slug]
91
102
  Branch: chore-[id]-[title-slug]
92
103
  ```
93
104
 
94
- **Move to Step 3 automatically.**
105
+ **Display (on failure):**
106
+
107
+ ```
108
+ ❌ Worktree creation failed. Check:
109
+ - Are there uncommitted changes? Run: git status
110
+ - Does the branch already exist? Run: git branch -a | grep [chore-id]
111
+ - Is there a worktree conflict? Run: git worktree list
112
+
113
+ Resolve the issue before continuing.
114
+ ```
115
+
116
+ **Move to Step 3 only if worktree was created successfully.**
95
117
 
96
118
  ### Step 3: Establish Test Baseline
97
119
 
@@ -449,10 +449,40 @@ Multiple step definitions match
449
449
  **If validation succeeds:**
450
450
  Display: "✅ BDD infrastructure validated - all steps have definitions"
451
451
 
452
- **Proceed to Step 7.**
452
+ **Proceed to Step 6.6.**
453
453
 
454
454
  **Note:** Unit tests are created during speed mode implementation, not during feature planning. Feature planning focuses on BDD scenarios (user experience); speed mode handles unit tests (implementation details).
455
455
 
456
+ ### Step 6.6: Commit BDD Files to Main
457
+
458
+ **CRITICAL:** The BDD files must be committed to main BEFORE creating worktrees. If you skip this step, worktrees won't have the scenario files and speed-mode will fail.
459
+
460
+ **Commit the BDD files:**
461
+
462
+ ```bash
463
+ git add features/${FEATURE_SLUG}.feature features/steps/${FEATURE_SLUG}.* features/step_definitions/${FEATURE_SLUG}.*
464
+ git commit -m "test: Add BDD scenarios for ${FEATURE_TITLE}
465
+
466
+ - Feature file: features/${FEATURE_SLUG}.feature
467
+ - Step definitions for speed mode scenarios"
468
+ ```
469
+
470
+ Replace `${FEATURE_SLUG}` and `${FEATURE_TITLE}` with actual values. Example:
471
+ ```bash
472
+ git add features/email-password-login.feature features/steps/email-password-login.* features/step_definitions/email-password-login.*
473
+ git commit -m "test: Add BDD scenarios for Email Password Login
474
+
475
+ - Feature file: features/email-password-login.feature
476
+ - Step definitions for speed mode scenarios"
477
+ ```
478
+
479
+ **Why this matters:**
480
+ - Worktrees are created from the current branch (usually main)
481
+ - If BDD files aren't committed, they won't exist in the worktree
482
+ - Speed-mode will fail trying to run tests against non-existent files
483
+
484
+ **Proceed to Step 7.**
485
+
456
486
  ### Step 7: Propose Speed Mode Chores
457
487
 
458
488
  **CRITICAL:** After BDD validation passes, analyze the codebase and propose technical implementation chores. **DO NOT CREATE CHORES YET** - the feature must transition to implementation mode first (Step 8).
@@ -538,30 +568,9 @@ Does this rationale capture why you chose this approach? (You can edit it if nee
538
568
 
539
569
  **WAIT for user to confirm or provide edited rationale.**
540
570
 
541
- #### Step 8B: Execute Transition
542
-
543
- **CRITICAL: After user confirms, use Bash tool to EXECUTE the work implement command:**
571
+ #### Step 8B: Create the Chores
544
572
 
545
- ```bash
546
- jettypod work implement ${FEATURE_ID} \
547
- --winner="[approach-name or prototypes/winner-file]" \
548
- --rationale="[user's confirmed/edited rationale]"
549
- ```
550
-
551
- Replace `${FEATURE_ID}` with actual ID. Example:
552
- ```bash
553
- jettypod work implement 42 --winner="Simple inline form" --rationale="Fastest UX, cleanest implementation"
554
- ```
555
-
556
- **DO NOT display this as example text. EXECUTE IT using the Bash tool.**
557
-
558
- **If the command fails**, check the error message:
559
- - "Feature not found" → Verify the feature ID
560
- - "Already in implementation" → Feature was already transitioned, proceed to Step 8C
561
-
562
- #### Step 8C: Create the Chores
563
-
564
- **CRITICAL: NOW create the chores.** The feature has transitioned to implementation mode, so chore creation will succeed.
573
+ **CRITICAL: Create chores BEFORE running `work implement`.** The system validates that chores exist before allowing the transition.
565
574
 
566
575
  For each chore that the user confirmed in Step 7, use the Bash tool to create it:
567
576
 
@@ -574,10 +583,6 @@ Replace `${FEATURE_ID}` with actual ID. Example:
574
583
  jettypod work create chore "Set up auth routes" "Create login/logout endpoints..." --parent=42
575
584
  ```
576
585
 
577
- **If chore creation fails**, check:
578
- - "Parent not found" → Verify the feature ID
579
- - "Parent not in implementation phase" → Run Step 8B first
580
-
581
586
  **CRITICAL: Copy the EXACT proposal from Step 7 into each chore description.** Do not paraphrase or summarize - the implementation guidance must be preserved verbatim:
582
587
 
583
588
  ```
@@ -595,7 +600,29 @@ Verification:
595
600
  • [EXACT step definitions from Step 7]
596
601
  ```
597
602
 
598
- After creating all chores, display:
603
+ #### Step 8C: Execute Transition
604
+
605
+ **After ALL chores are created, use Bash tool to EXECUTE the work implement command:**
606
+
607
+ ```bash
608
+ jettypod work implement ${FEATURE_ID} \
609
+ --winner="[approach-name or prototypes/winner-file]" \
610
+ --rationale="[user's confirmed/edited rationale]"
611
+ ```
612
+
613
+ Replace `${FEATURE_ID}` with actual ID. Example:
614
+ ```bash
615
+ jettypod work implement 42 --winner="Simple inline form" --rationale="Fastest UX, cleanest implementation"
616
+ ```
617
+
618
+ **DO NOT display this as example text. EXECUTE IT using the Bash tool.**
619
+
620
+ **If the command fails**, check the error message:
621
+ - "Feature not found" → Verify the feature ID
622
+ - "No chores exist" → You skipped Step 8B - go back and create chores first
623
+ - "Already in implementation" → Feature was already transitioned, proceed to Step 8D
624
+
625
+ After successful transition, display:
599
626
 
600
627
  ```
601
628
  ✅ Feature transitioned to implementation phase
@@ -648,15 +675,39 @@ End feature-planning skill without starting a chore. Do NOT invoke speed-mode.
648
675
  jettypod work start [chore-id]
649
676
  ```
650
677
 
651
- **Step 2: State the chore ID clearly in your response:**
678
+ **🛑 STOP AND CHECK:** Look at the output of `work start`. You should see:
679
+ ```
680
+ ✅ Created worktree: /path/to/.jettypod-work/[id]-[title-slug]
681
+ Branch: feature/work-[id]-[title-slug]
682
+ ```
683
+
684
+ **If you see `⚠️ Working in main repository (worktree creation failed)`:**
685
+ - **DO NOT proceed to speed-mode**
686
+ - Investigate why worktree failed (uncommitted changes? branch conflict?)
687
+ - Fix the issue and re-run `work start`
688
+ - Only continue after seeing `✅ Created worktree`
689
+
690
+ **Step 2: Verify worktree exists before invoking speed-mode:**
691
+ ```bash
692
+ sqlite3 .jettypod/work.db "SELECT worktree_path FROM worktrees WHERE work_item_id = [chore-id] AND status = 'active'"
693
+ ```
694
+
695
+ If this returns empty/no rows, **STOP** - the worktree wasn't created properly.
696
+
697
+ **Step 3: State the chore ID clearly in your response:**
652
698
  > "I'll start implementing Chore #[id]: [title]"
653
699
 
654
- **Step 3: IMMEDIATELY invoke speed-mode using the Skill tool:**
700
+ **Step 4: IMMEDIATELY invoke speed-mode using the Skill tool:**
655
701
  ```
656
702
  Use the Skill tool with skill: "speed-mode"
657
703
  ```
658
704
 
659
- **🛑 CRITICAL:** You MUST use the Skill tool to invoke speed-mode. The `work start` command only sets up the worktree - it does NOT automatically start the skill. If you skip this step, the user will be left without guidance.
705
+ **🛑 CRITICAL:** You MUST:
706
+ 1. Run `work start` first
707
+ 2. Verify the worktree was created (not fallback to main)
708
+ 3. THEN invoke speed-mode using the Skill tool
709
+
710
+ If you skip `work start` or proceed when worktree creation failed, the merge workflow will break later.
660
711
 
661
712
  **Feature-planning skill is now complete.** Speed-mode takes over and handles the implementation.
662
713
 
@@ -48,6 +48,39 @@ When this skill is activated, you are helping implement a speed mode chore to ma
48
48
 
49
49
  ---
50
50
 
51
+ ## 🛑 PRE-FLIGHT VALIDATION (REQUIRED)
52
+
53
+ **Before proceeding with ANY implementation, you MUST validate the worktree exists.**
54
+
55
+ Run this query FIRST:
56
+
57
+ ```bash
58
+ sqlite3 .jettypod/work.db "SELECT wi.id, wi.title, wi.status, wt.worktree_path, wt.branch_name FROM work_items wi LEFT JOIN worktrees wt ON wi.id = wt.work_item_id WHERE wi.status = 'in_progress' AND wi.type = 'chore'"
59
+ ```
60
+
61
+ **Check the result:**
62
+
63
+ | worktree_path | What it means | Action |
64
+ |---------------|---------------|--------|
65
+ | **Has a path** (e.g., `/path/to/.jettypod-work/...`) | ✅ Worktree exists, ready to proceed | Continue to Step 0 |
66
+ | **NULL or empty** | ❌ `work start` was not called | **STOP - run `jettypod work start [chore-id]` first** |
67
+ | **No rows returned** | ❌ No chore is in progress | **STOP - verify the chore exists and run `work start`** |
68
+
69
+ **🛑 STOP GATE:** If `worktree_path` is NULL or no rows returned, you MUST run `jettypod work start [chore-id]` before continuing. DO NOT proceed without a valid worktree.
70
+
71
+ **Example of valid output:**
72
+ ```
73
+ 4|Add nav link|in_progress|/Users/erik/project/.jettypod-work/4-add-nav-link|feature/work-4-add-nav-link
74
+ ```
75
+
76
+ **Example of INVALID output (missing worktree):**
77
+ ```
78
+ 4|Add nav link|in_progress||
79
+ ```
80
+ ↑ Empty worktree_path means `work start` was never called. Run it now.
81
+
82
+ ---
83
+
51
84
  ### Overview
52
85
 
53
86
  **Speed Mode Goal:** Make it work - implement ALL functionality (integration + required + optional features) to make success scenarios pass, assuming everything works correctly.
@@ -52,6 +52,39 @@ When this skill is activated, you are helping implement a stable mode chore to a
52
52
 
53
53
  ---
54
54
 
55
+ ## 🛑 PRE-FLIGHT VALIDATION (REQUIRED)
56
+
57
+ **Before proceeding with ANY implementation, you MUST validate the worktree exists.**
58
+
59
+ Run this query FIRST:
60
+
61
+ ```bash
62
+ sqlite3 .jettypod/work.db "SELECT wi.id, wi.title, wi.status, wt.worktree_path, wt.branch_name FROM work_items wi LEFT JOIN worktrees wt ON wi.id = wt.work_item_id WHERE wi.status = 'in_progress' AND wi.type = 'chore'"
63
+ ```
64
+
65
+ **Check the result:**
66
+
67
+ | worktree_path | What it means | Action |
68
+ |---------------|---------------|--------|
69
+ | **Has a path** (e.g., `/path/to/.jettypod-work/...`) | ✅ Worktree exists, ready to proceed | Continue to Step 0 |
70
+ | **NULL or empty** | ❌ `work start` was not called | **STOP - run `jettypod work start [chore-id]` first** |
71
+ | **No rows returned** | ❌ No chore is in progress | **STOP - verify the chore exists and run `work start`** |
72
+
73
+ **🛑 STOP GATE:** If `worktree_path` is NULL or no rows returned, you MUST run `jettypod work start [chore-id]` before continuing. DO NOT proceed without a valid worktree.
74
+
75
+ **Example of valid output:**
76
+ ```
77
+ 4|Add error handling|in_progress|/Users/erik/project/.jettypod-work/4-add-error-handling|feature/work-4-add-error-handling
78
+ ```
79
+
80
+ **Example of INVALID output (missing worktree):**
81
+ ```
82
+ 4|Add error handling|in_progress||
83
+ ```
84
+ ↑ Empty worktree_path means `work start` was never called. Run it now.
85
+
86
+ ---
87
+
55
88
  ### Overview
56
89
 
57
90
  **Stable Mode Goal:** Transform speed mode's "make it work" implementation into robust, reliable code with comprehensive error handling and validation.