jettypod 3.0.1
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/.claude/PROTECT_SKILLS.md +28 -0
- package/.claude/settings.json +24 -0
- package/.claude/settings.local.json +16 -0
- package/.claude/skills/epic-discover/SKILL.md +262 -0
- package/.claude/skills/feature-discover/SKILL.md +393 -0
- package/.claude/skills/speed-mode/SKILL.md +364 -0
- package/.claude/skills/stable-mode/SKILL.md +591 -0
- package/.github/workflows/test-safety.yml +85 -0
- package/README.md +25 -0
- package/SPEED-STABLE-AUDIT.md +853 -0
- package/SYSTEM-BEHAVIOR.md +1241 -0
- package/TEST_SAFETY_AUDIT.md +314 -0
- package/TEST_SAFETY_IMPLEMENTATION.md +97 -0
- package/cucumber.js +8 -0
- package/docs/COMMAND_REFERENCE.md +903 -0
- package/docs/DECISIONS.md +68 -0
- package/docs/README.md +48 -0
- package/docs/STANDARDS-SYSTEM-DOCUMENTATION.md +374 -0
- package/docs/TEST-REWRITE-PLAN.md +261 -0
- package/docs/ai-test-writing-requirements.md +219 -0
- package/docs/claude-code-skills.md +607 -0
- package/docs/core-jettypod-methodology/comprehensive-jettypod-methodology.md +582 -0
- package/docs/core-jettypod-methodology/deprecated/jettypod-comprehensive-standards.md +1222 -0
- package/docs/core-jettypod-methodology/deprecated/jettypod-operating-guide.md +3399 -0
- package/docs/core-jettypod-methodology/deprecated/jettypod-technical-checklist.md +1325 -0
- package/docs/core-jettypod-methodology/deprecated/jettypod-vibe-coding-framework.md +1544 -0
- package/docs/core-jettypod-methodology/deprecated/prompt-engineering-guide.md +320 -0
- package/docs/core-jettypod-methodology/deprecated/vibe-coding-cheatsheet (1).md +516 -0
- package/docs/core-jettypod-methodology/deprecated/vibe-coding-framework.md +1544 -0
- package/docs/features/jettypod-standards-explained.md +543 -0
- package/docs/features/standards-inventory.md +257 -0
- package/docs/gap-analysis-current-vs-comprehensive-methodology.md +939 -0
- package/docs/jettypod-system-overview.md +409 -0
- package/features/auto-generate-production-chores.feature +14 -0
- package/features/claude-md-protection/steps.js +487 -0
- package/features/decisions/index.js +490 -0
- package/features/decisions/index.test.js +208 -0
- package/features/git-hooks/git-hooks.feature +30 -0
- package/features/git-hooks/index.js +93 -0
- package/features/git-hooks/index.test.js +137 -0
- package/features/git-hooks/post-commit +56 -0
- package/features/git-hooks/post-merge +47 -0
- package/features/git-hooks/pre-commit +28 -0
- package/features/git-hooks/simple-steps.js +53 -0
- package/features/git-hooks/simple-test.feature +10 -0
- package/features/git-hooks/steps.js +196 -0
- package/features/jettypod-update-command.feature +46 -0
- package/features/mode-prompts/index.js +95 -0
- package/features/mode-prompts/simple-steps.js +44 -0
- package/features/mode-prompts/simple-test.feature +9 -0
- package/features/mode-prompts/validation.test.js +120 -0
- package/features/refactor-mode/steps.js +217 -0
- package/features/refactor-mode.feature +49 -0
- package/features/skills-update/index.test.js +216 -0
- package/features/step_definitions/auto-generate-production-chores.steps.js +162 -0
- package/features/step_definitions/terminal-logo.steps.js +145 -0
- package/features/step_definitions/update-command.steps.js +183 -0
- package/features/terminal-logo/index.js +39 -0
- package/features/terminal-logo/terminal-logo.feature +30 -0
- package/features/update-command/index.js +181 -0
- package/features/update-command/index.test.js +225 -0
- package/features/work-commands/bug-workflow-display.feature +22 -0
- package/features/work-commands/index.js +311 -0
- package/features/work-commands/simple-steps.js +69 -0
- package/features/work-commands/stable-tests.feature +57 -0
- package/features/work-commands/steps.js +1120 -0
- package/features/work-commands/validation.test.js +88 -0
- package/features/work-commands/work-commands.feature +13 -0
- package/features/work-tracking/discovery-validation.test.js +228 -0
- package/features/work-tracking/index.js +1511 -0
- package/features/work-tracking/mode-required.feature +112 -0
- package/features/work-tracking/phase-tracking.test.js +482 -0
- package/features/work-tracking/prototype-tracking.test.js +485 -0
- package/features/work-tracking/tree-view.test.js +310 -0
- package/features/work-tracking/work-set-mode.feature +71 -0
- package/features/work-tracking/work-start-mode.feature +88 -0
- package/full-test.txt +0 -0
- package/install.sh +89 -0
- package/jettypod.js +1640 -0
- package/lib/bug-workflow.js +94 -0
- package/lib/bug-workflow.test.js +177 -0
- package/lib/claudemd.js +130 -0
- package/lib/claudemd.test.js +195 -0
- package/lib/comprehensive-standards-full.json +1778 -0
- package/lib/config.js +181 -0
- package/lib/config.test.js +511 -0
- package/lib/constants.js +107 -0
- package/lib/constants.test.js +164 -0
- package/lib/current-work.js +130 -0
- package/lib/current-work.test.js +146 -0
- package/lib/database-project-config.test.js +107 -0
- package/lib/database.js +256 -0
- package/lib/database.test.js +106 -0
- package/lib/decisions-generator.js +102 -0
- package/lib/decisions-generator.test.js +457 -0
- package/lib/decisions-helpers.js +119 -0
- package/lib/decisions-helpers.test.js +310 -0
- package/lib/discovery-checkpoint.js +83 -0
- package/lib/docs-generator.js +280 -0
- package/lib/external-checklist.js +177 -0
- package/lib/git.js +142 -0
- package/lib/git.test.js +145 -0
- package/lib/logo.js +3 -0
- package/lib/migrations/001-epic-to-parent.js +24 -0
- package/lib/migrations/002-default-work-item-modes.js +37 -0
- package/lib/migrations/002-default-work-item-modes.test.js +351 -0
- package/lib/migrations/003-epic-discovery-fields.js +52 -0
- package/lib/migrations/004-discovery-decisions-table.js +32 -0
- package/lib/migrations/005-migrate-decision-data.js +62 -0
- package/lib/migrations/006-feature-phase-field.js +61 -0
- package/lib/migrations/007-prototype-tracking.js +38 -0
- package/lib/migrations/008-scenario-file-field.js +24 -0
- package/lib/migrations/index.js +74 -0
- package/lib/production-helpers.js +69 -0
- package/lib/project-state.test.js +92 -0
- package/lib/test-helpers.js +184 -0
- package/lib/test-helpers.test.js +255 -0
- package/package.json +36 -0
- package/prototypes/test/index.html +1 -0
- package/setup-dist-repo.sh +68 -0
- package/test-safety-check.sh +80 -0
- package/work-item-tracking-plan.md +199 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Architectural and Technical Decisions
|
|
2
|
+
|
|
3
|
+
This document records key decisions made during project discovery and epic planning.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Project-Level Decisions
|
|
8
|
+
|
|
9
|
+
### UX Approach & Tech Stack
|
|
10
|
+
|
|
11
|
+
**Decision:** prototypes/test
|
|
12
|
+
|
|
13
|
+
**Rationale:** Testing
|
|
14
|
+
|
|
15
|
+
**Date:** 10/30/2025
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Epic-Level Decisions
|
|
20
|
+
|
|
21
|
+
### Epic #237: Real-time Collaboration
|
|
22
|
+
|
|
23
|
+
**Architecture:** WebSockets with Socket.io
|
|
24
|
+
|
|
25
|
+
*Rationale:* Bidirectional communication needed, Socket.io provides automatic fallbacks and reconnection
|
|
26
|
+
|
|
27
|
+
*Date:* 10/29/2025
|
|
28
|
+
|
|
29
|
+
**State Management:** Redux Toolkit
|
|
30
|
+
|
|
31
|
+
*Rationale:* Need centralized state for connection status across multiple components
|
|
32
|
+
|
|
33
|
+
*Date:* 10/29/2025
|
|
34
|
+
|
|
35
|
+
**Error Handling:** Exponential backoff with jitter for reconnection
|
|
36
|
+
|
|
37
|
+
*Rationale:* Prevents thundering herd when server recovers, jitter distributes reconnection attempts evenly
|
|
38
|
+
|
|
39
|
+
*Date:* 10/31/2025
|
|
40
|
+
|
|
41
|
+
**Testing Strategy:** Integration tests with mock Socket.io server
|
|
42
|
+
|
|
43
|
+
*Rationale:* Allows testing reconnection logic and state synchronization without real server dependency
|
|
44
|
+
|
|
45
|
+
*Date:* 10/31/2025
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Epic #238: Real-time System
|
|
50
|
+
|
|
51
|
+
**Architecture:** WebSockets
|
|
52
|
+
|
|
53
|
+
*Rationale:* Real-time bidirectional communication required
|
|
54
|
+
|
|
55
|
+
*Date:* 10/29/2025
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### Epic #242: Epic Needs Discovery
|
|
60
|
+
|
|
61
|
+
**Architecture:** GraphQL API
|
|
62
|
+
|
|
63
|
+
*Rationale:* Flexible querying and strong typing needed for complex data requirements
|
|
64
|
+
|
|
65
|
+
*Date:* 10/29/2025
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# JettyPod Documentation
|
|
2
|
+
|
|
3
|
+
## 📁 Documentation Structure
|
|
4
|
+
|
|
5
|
+
### Core Documentation
|
|
6
|
+
- **[Project Plan](plans/jettypod-project-plan.md)** - Full project roadmap with epics and stories
|
|
7
|
+
- **[Epic 2 Implementation Summary](epic2-implementation-summary.md)** - Latest completed features
|
|
8
|
+
- **[User QA Checklist](epic2-qa-user-checklist.md)** - User-oriented testing guide
|
|
9
|
+
|
|
10
|
+
### Methodology & Standards
|
|
11
|
+
- **[core-jettypod-methodology/](core-jettypod-methodology/)** - JettyPod operating guides and standards
|
|
12
|
+
- `jettypod-operating-guide.md` - Core methodology
|
|
13
|
+
- `jettypod-comprehensive-standards.md` - Coding standards
|
|
14
|
+
- `jettypod-technical-checklist.md` - Technical requirements
|
|
15
|
+
|
|
16
|
+
### Technical Documentation
|
|
17
|
+
- **[Claude Interceptor Setup](claude-interceptor-setup.md)** - Natural language detection setup
|
|
18
|
+
- **[QA Checklist](epic2-qa-checklist.md)** - Technical QA for Epic 2
|
|
19
|
+
|
|
20
|
+
### Research & Explorations
|
|
21
|
+
- **[explorations/](explorations/)** - Research and experiments
|
|
22
|
+
- `claude-interception-analysis.md` - Different interception approaches
|
|
23
|
+
- `use-case-detection-methods.md` - Detection method research
|
|
24
|
+
- `context-management-requirements.md` - Context system design
|
|
25
|
+
|
|
26
|
+
### Implementation Plans
|
|
27
|
+
- **[plans/implementation-plans/](plans/implementation-plans/)** - Detailed story implementations
|
|
28
|
+
- **[qa/](qa/)** - QA checklists and test plans
|
|
29
|
+
|
|
30
|
+
## 📊 Current Status
|
|
31
|
+
|
|
32
|
+
### ✅ Completed
|
|
33
|
+
- Epic 1: Basic CLAUDE.md management
|
|
34
|
+
- Epic 2: Use case detection & smart mode selection
|
|
35
|
+
|
|
36
|
+
### 🚀 In Progress
|
|
37
|
+
- Epic 3: Pattern detection & learning
|
|
38
|
+
|
|
39
|
+
### 📅 Planned
|
|
40
|
+
- Epic 4: Natural language intelligence
|
|
41
|
+
- Epic 5: VS Code extension
|
|
42
|
+
- Epic 6: PM experience optimization
|
|
43
|
+
|
|
44
|
+
## 🔗 Quick Links
|
|
45
|
+
|
|
46
|
+
- [Back to Main README](../README.md)
|
|
47
|
+
- [Quick Start Guide](../QUICK_START.md)
|
|
48
|
+
- [Installation Guide](../INSTALLATION.md)
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# JettyPod Standards System - Complete Technical Documentation
|
|
2
|
+
|
|
3
|
+
## System Overview
|
|
4
|
+
|
|
5
|
+
The JettyPod standards system is an adaptive, violation-based code standards enforcement mechanism that progressively reveals standards to Claude AI based on actual violations detected during development. It starts minimal and grows based on real mistakes, avoiding overwhelming developers with unnecessary rules.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## User Journeys & Use Cases
|
|
10
|
+
|
|
11
|
+
### Journey 1: Fresh Project Initialization
|
|
12
|
+
|
|
13
|
+
**Starting state:** New project directory, no JettyPod configuration
|
|
14
|
+
|
|
15
|
+
**Step-by-step process:**
|
|
16
|
+
|
|
17
|
+
1. **User runs:** `jettypod init`
|
|
18
|
+
|
|
19
|
+
2. **System creates `.jettypod/config.json`:**
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"name": "project-name",
|
|
23
|
+
"mode": "discovery", // default
|
|
24
|
+
"stage": "starting", // or detected based on file count
|
|
25
|
+
"useCase": "exploring", // default
|
|
26
|
+
"bundles": ["core"] // default
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. **System generates CLAUDE.md with:**
|
|
31
|
+
|
|
32
|
+
- NO violations file exists yet (`.jettypod/violations.json` not created)
|
|
33
|
+
- StandardsEngine loads `lib/comprehensive-standards-full.json` (114 standards)
|
|
34
|
+
- Prescribes ONLY critical standards from "core" bundle that match stage
|
|
35
|
+
- For "starting" stage with "core" bundle, this typically includes 7 critical standards:
|
|
36
|
+
- project.structure.directory
|
|
37
|
+
- file.naming.component
|
|
38
|
+
- file.naming.utility
|
|
39
|
+
- data.immutability.ids
|
|
40
|
+
- data.immutability.dates
|
|
41
|
+
- data.money.storage
|
|
42
|
+
- error.handling.user_feedback
|
|
43
|
+
|
|
44
|
+
5. **What appears in CLAUDE.md:**
|
|
45
|
+
```xml
|
|
46
|
+
<standards>
|
|
47
|
+
CRITICAL RULES - ALWAYS FOLLOW:
|
|
48
|
+
• Feature-based structure (❌ Flat structure with all files in src/)
|
|
49
|
+
• PascalCase.tsx for components (❌ user-profile.tsx)
|
|
50
|
+
• camelCase for utils (❌ format-date.ts)
|
|
51
|
+
• UUID strings for IDs (❌ 123 (number ID))
|
|
52
|
+
• ISO 8601 date strings (❌ Date objects in state)
|
|
53
|
+
• Money as cents (❌ 19.99 as float)
|
|
54
|
+
• Toast + Sentry for errors (❌ Silent failures)
|
|
55
|
+
</standards>
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Journey 2: First Standards Violation
|
|
62
|
+
|
|
63
|
+
**Starting state:** Project initialized, working in speed mode, no violations yet
|
|
64
|
+
|
|
65
|
+
**Step-by-step process:**
|
|
66
|
+
|
|
67
|
+
1. **User codes:** Creates file named `user-profile.tsx` (wrong naming)
|
|
68
|
+
|
|
69
|
+
2. **User runs:** `jettypod violation file.naming.component`
|
|
70
|
+
|
|
71
|
+
3. **System executes:**
|
|
72
|
+
- Creates `.jettypod/violations.json` (first time only)
|
|
73
|
+
- Adds entry:
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"file.naming.component": {
|
|
77
|
+
"count": 1,
|
|
78
|
+
"lastSeen": "2025-09-05T16:27:31.928Z"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
- Outputs: `📝 Recorded violation for file.naming.component (total: 1)`
|
|
83
|
+
- Does NOT regenerate CLAUDE.md (threshold not met)
|
|
84
|
+
|
|
85
|
+
4. **What changes in CLAUDE.md:** NOTHING - threshold is 3, only at 1
|
|
86
|
+
|
|
87
|
+
5. **User violates same standard 2 more times:**
|
|
88
|
+
- Run: `jettypod violation file.naming.component`
|
|
89
|
+
- Count goes to 2, no CLAUDE.md change
|
|
90
|
+
- Run: `jettypod violation file.naming.component`
|
|
91
|
+
- Count goes to 3, threshold reached!
|
|
92
|
+
|
|
93
|
+
6. **On 3rd violation:**
|
|
94
|
+
- System outputs: `⚠️ This standard will now appear in CLAUDE.md`
|
|
95
|
+
- Automatically runs `jettypod generate`
|
|
96
|
+
- CLAUDE.md now shows... NOTHING NEW (it was already critical!)
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Journey 3: Non-Critical Standard Violation
|
|
101
|
+
|
|
102
|
+
**Starting state:** Speed mode, starting stage, some violations recorded
|
|
103
|
+
|
|
104
|
+
**Step-by-step process:**
|
|
105
|
+
|
|
106
|
+
1. **User violates a HIGH priority standard:** `SCREAMING_SNAKE` for constants
|
|
107
|
+
- Run: `jettypod violation file.naming.constants` (count: 1)
|
|
108
|
+
- Run: `jettypod violation file.naming.constants` (count: 2)
|
|
109
|
+
- Nothing appears yet
|
|
110
|
+
|
|
111
|
+
2. **Third violation:** `jettypod violation file.naming.constants`
|
|
112
|
+
- Count reaches 3 (threshold met)
|
|
113
|
+
- System outputs: `⚠️ This standard will now appear in CLAUDE.md`
|
|
114
|
+
- Regenerates CLAUDE.md
|
|
115
|
+
|
|
116
|
+
3. **What appears in CLAUDE.md (Speed Mode):**
|
|
117
|
+
```xml
|
|
118
|
+
<standards>
|
|
119
|
+
CRITICAL RULES - ALWAYS FOLLOW:
|
|
120
|
+
• Feature-based structure (❌ Flat structure with all files in src/)
|
|
121
|
+
• PascalCase.tsx for components (❌ user-profile.tsx)
|
|
122
|
+
[... other critical rules ...]
|
|
123
|
+
|
|
124
|
+
WATCH: You've violated these before:
|
|
125
|
+
• SCREAMING_SNAKE for constants (3 violations)
|
|
126
|
+
</standards>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
4. **Important:** In speed mode, this ONLY works for HIGH priority
|
|
130
|
+
- If you violate a MEDIUM priority standard 100 times, it will NEVER appear
|
|
131
|
+
- Speed mode filter: critical (always) + high (if violated)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### Journey 4: Switching Modes
|
|
136
|
+
|
|
137
|
+
**Starting state:** Speed mode with some violations recorded
|
|
138
|
+
|
|
139
|
+
**Step-by-step process:**
|
|
140
|
+
|
|
141
|
+
1. **Current state in speed mode:**
|
|
142
|
+
- 7 critical standards showing
|
|
143
|
+
- 1 high priority standard with 3 violations showing
|
|
144
|
+
- 2 medium priority standards with 5 violations each (NOT showing)
|
|
145
|
+
|
|
146
|
+
2. **User runs:** `jettypod discovery`
|
|
147
|
+
- Changes mode in `.jettypod/config.json`
|
|
148
|
+
|
|
149
|
+
3. **User runs:** `jettypod generate`
|
|
150
|
+
|
|
151
|
+
4. **What changes in CLAUDE.md:**
|
|
152
|
+
- Same 7 critical standards (still showing)
|
|
153
|
+
- Same 1 high priority with violations (still showing)
|
|
154
|
+
- NOW ALSO: 2 medium priority standards appear in WATCH section!
|
|
155
|
+
- Discovery mode shows ALL priorities that meet threshold
|
|
156
|
+
|
|
157
|
+
5. **Format stays the same:**
|
|
158
|
+
- Still uses shortRule + antipattern format
|
|
159
|
+
- The `mode` parameter doesn't affect formatting
|
|
160
|
+
- Only affects which standards are prescribed
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
### Journey 5: Adding a Bundle
|
|
165
|
+
|
|
166
|
+
**Starting state:** Core bundle only, React project
|
|
167
|
+
|
|
168
|
+
**Step-by-step process:**
|
|
169
|
+
|
|
170
|
+
1. **User runs:** `jettypod standards add auth`
|
|
171
|
+
|
|
172
|
+
2. **System updates `.jettypod/config.json`:**
|
|
173
|
+
```json
|
|
174
|
+
"bundles": ["core", "auth"]
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
3. **User runs:** `jettypod generate` (or it auto-runs)
|
|
178
|
+
|
|
179
|
+
4. **New critical standards from auth bundle appear:**
|
|
180
|
+
```xml
|
|
181
|
+
<standards>
|
|
182
|
+
CRITICAL RULES - ALWAYS FOLLOW:
|
|
183
|
+
• Feature-based structure (❌ Flat structure with all files in src/)
|
|
184
|
+
[... other core critical ...]
|
|
185
|
+
• bcrypt with 10+ rounds (❌ Plain text passwords)
|
|
186
|
+
• JWT with refresh tokens (❌ Session cookies only)
|
|
187
|
+
</standards>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
5. **React Detection (automatic):**
|
|
191
|
+
- System checks package.json for "react" in dependencies/devDependencies
|
|
192
|
+
- If found, automatically includes critical React standards
|
|
193
|
+
- User doesn't need to add "react" bundle manually for critical standards
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### Journey 6: Stage Progression
|
|
198
|
+
|
|
199
|
+
**Starting state:** "starting" stage with violations
|
|
200
|
+
|
|
201
|
+
**Step-by-step process:**
|
|
202
|
+
|
|
203
|
+
1. **Current stage: "starting"**
|
|
204
|
+
- Shows standards with stages: ["empty"] or ["starting"] or ["empty", "starting"]
|
|
205
|
+
- Has 20 eligible standards based on stage
|
|
206
|
+
|
|
207
|
+
2. **User runs:** `jettypod stage growing`
|
|
208
|
+
|
|
209
|
+
3. **System updates stage in config.json**
|
|
210
|
+
|
|
211
|
+
4. **User runs:** `jettypod generate`
|
|
212
|
+
|
|
213
|
+
5. **What changes:**
|
|
214
|
+
- Now shows standards with stages including "growing"
|
|
215
|
+
- Cumulative: still shows all "empty" and "starting" standards
|
|
216
|
+
- Plus new ones marked for "growing" stage
|
|
217
|
+
- Might jump from 20 to 35 eligible standards
|
|
218
|
+
|
|
219
|
+
6. **Stage Order (cumulative):**
|
|
220
|
+
- empty → shows only "empty" standards
|
|
221
|
+
- starting → shows "empty" + "starting"
|
|
222
|
+
- growing → shows "empty" + "starting" + "growing"
|
|
223
|
+
- mature → shows "empty" + "starting" + "growing" + "mature"
|
|
224
|
+
- production → shows ALL standards
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
### Journey 7: Invalid Standard Violation
|
|
229
|
+
|
|
230
|
+
**Starting state:** Any state
|
|
231
|
+
|
|
232
|
+
**Step-by-step process:**
|
|
233
|
+
|
|
234
|
+
1. **User runs:** `jettypod violation some.fake.standard`
|
|
235
|
+
|
|
236
|
+
2. **System behavior:**
|
|
237
|
+
- Does NOT validate the ID exists
|
|
238
|
+
- Creates/updates violation record anyway
|
|
239
|
+
- Saves to `.jettypod/violations.json`:
|
|
240
|
+
```json
|
|
241
|
+
{
|
|
242
|
+
"some.fake.standard": {
|
|
243
|
+
"count": 1,
|
|
244
|
+
"lastSeen": "2025-09-05T16:30:00.000Z"
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
3. **On reaching threshold (3 violations):**
|
|
250
|
+
- Shows warning message as usual
|
|
251
|
+
- Regenerates CLAUDE.md
|
|
252
|
+
- But standard never appears (doesn't exist in library)
|
|
253
|
+
- Violation remains in file forever
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### Journey 8: Development Workflow Over Time
|
|
258
|
+
|
|
259
|
+
**Day 1: Project Start**
|
|
260
|
+
- Init in "starting" stage
|
|
261
|
+
- See 7 critical core standards
|
|
262
|
+
|
|
263
|
+
**Day 3: First mistakes**
|
|
264
|
+
- Violate `file.naming.constants` 3 times
|
|
265
|
+
- New section appears: "WATCH: You've violated these before"
|
|
266
|
+
- Now seeing 8 standards total
|
|
267
|
+
|
|
268
|
+
**Day 7: Adding authentication**
|
|
269
|
+
- Run: `jettypod standards add auth`
|
|
270
|
+
- 2 new critical auth standards appear
|
|
271
|
+
- Now seeing 10 standards total
|
|
272
|
+
|
|
273
|
+
**Day 14: Growing pains**
|
|
274
|
+
- Run: `jettypod stage growing`
|
|
275
|
+
- 5 more critical standards become eligible
|
|
276
|
+
- Previous violations still showing
|
|
277
|
+
- Now seeing 15 standards total
|
|
278
|
+
|
|
279
|
+
**Day 30: Cleanup attempt**
|
|
280
|
+
- Want to reset violations
|
|
281
|
+
- Must manually delete `.jettypod/violations.json`
|
|
282
|
+
- After regeneration, back to only critical standards
|
|
283
|
+
- Lost history of what was problematic
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## System Limitations & Gotchas
|
|
288
|
+
|
|
289
|
+
### Things That Don't Work As Expected:
|
|
290
|
+
|
|
291
|
+
1. **Violations Never Expire**
|
|
292
|
+
- Once recorded, violations persist forever
|
|
293
|
+
- No decay or time-based reduction
|
|
294
|
+
- Only way to reset: delete `.jettypod/violations.json`
|
|
295
|
+
|
|
296
|
+
2. **No Validation**
|
|
297
|
+
- Can record violations for non-existent standards
|
|
298
|
+
- These take up space but never appear in CLAUDE.md
|
|
299
|
+
- No warning that standard ID is invalid
|
|
300
|
+
|
|
301
|
+
3. **No Validation**
|
|
302
|
+
- Can record violations for non-existent standards
|
|
303
|
+
- These take up space but never appear in CLAUDE.md
|
|
304
|
+
- No warning that standard ID is invalid
|
|
305
|
+
|
|
306
|
+
3. **Mode Parameter Ignored in Formatting**
|
|
307
|
+
- `formatForClaude(prescribed, mode)` receives mode but doesn't use it
|
|
308
|
+
- Format is always: shortRule + antipattern
|
|
309
|
+
- Mode only affects which standards are prescribed, not how they look
|
|
310
|
+
|
|
311
|
+
4. **React Detection Is Shallow**
|
|
312
|
+
- Only checks dependencies and devDependencies
|
|
313
|
+
- Doesn't check peerDependencies
|
|
314
|
+
- Doesn't detect React-based frameworks (Next.js, etc.)
|
|
315
|
+
|
|
316
|
+
5. **Threshold Is Hardcoded**
|
|
317
|
+
- Always 3 for every standard
|
|
318
|
+
- Can't have different thresholds for different severities
|
|
319
|
+
- Can't adjust based on team preferences
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## File System State at Each Stage
|
|
324
|
+
|
|
325
|
+
### After Init:
|
|
326
|
+
```
|
|
327
|
+
.jettypod/
|
|
328
|
+
config.json # Configuration
|
|
329
|
+
CLAUDE.md # Generated with critical standards only
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### After First Violation:
|
|
333
|
+
```
|
|
334
|
+
.jettypod/
|
|
335
|
+
config.json
|
|
336
|
+
violations.json # NEW: Created with first violation
|
|
337
|
+
CLAUDE.md # Unchanged if under threshold
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### After Threshold Reached:
|
|
341
|
+
```
|
|
342
|
+
.jettypod/
|
|
343
|
+
config.json
|
|
344
|
+
violations.json # Updated count
|
|
345
|
+
CLAUDE.md # REGENERATED: Now includes violated standard
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### After Mode/Stage Change:
|
|
349
|
+
```
|
|
350
|
+
.jettypod/
|
|
351
|
+
config.json # Updated mode/stage
|
|
352
|
+
violations.json # Unchanged
|
|
353
|
+
CLAUDE.md # Must manually regenerate
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Quick Reference: What Triggers CLAUDE.md Changes
|
|
359
|
+
|
|
360
|
+
### Automatic Regeneration:
|
|
361
|
+
- When violation threshold (3) is reached for any standard
|
|
362
|
+
- During `jettypod init`
|
|
363
|
+
|
|
364
|
+
### Manual Regeneration Required:
|
|
365
|
+
- After changing mode: `jettypod speed/discovery/production/recovery`
|
|
366
|
+
- After changing stage: `jettypod stage <stage>`
|
|
367
|
+
- After adding bundles: `jettypod standards add <bundle>`
|
|
368
|
+
- After changing use case: `jettypod use-case <case>`
|
|
369
|
+
|
|
370
|
+
### What Never Triggers Changes:
|
|
371
|
+
- Violations below threshold
|
|
372
|
+
- Editing violations.json manually
|
|
373
|
+
- Changing comprehensive-standards-full.json
|
|
374
|
+
- Installing React (must regenerate after)
|