codex-genesis-harness 0.1.1 → 0.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 (180) hide show
  1. package/.codebase/ARCHITECTURE_REVIEW_COMPLETE.md +216 -0
  2. package/.codebase/CURRENT_STATE.md +2 -0
  3. package/.codebase/DOMAIN_MODELS.md +5 -3
  4. package/.codebase/FILE_NAMING_CLARIFICATION.md +161 -0
  5. package/.codebase/HARNESS_COMPLETENESS_AUDIT.md +613 -0
  6. package/.codebase/IMPLEMENTATION_COMPLETE.md +429 -0
  7. package/.codebase/IMPLEMENTATION_HANDOFF.md +351 -0
  8. package/.codebase/IMPROVEMENTS_SUMMARY.md +419 -0
  9. package/.codebase/PHASE3_SKILLS_NAMING_COMPLETE.md +292 -0
  10. package/.codebase/PHASE_DEPENDENCY_MAP.md +486 -0
  11. package/.codebase/QUICK_START_SPEC_IMPACT.md +456 -0
  12. package/.codebase/README.md +139 -0
  13. package/.codebase/RECOVERY_POINTS.md +438 -0
  14. package/.codex/skills/genesis-api-sync/SKILL.md +354 -0
  15. package/.codex/skills/genesis-api-sync/agents/openai.yaml +7 -0
  16. package/.codex/skills/genesis-api-sync/checklists/api-sync-checklist.md +101 -0
  17. package/.codex/skills/genesis-api-sync/examples/example.md +68 -0
  18. package/.codex/skills/genesis-api-sync/templates/api-change-template.md +257 -0
  19. package/.codex/skills/genesis-debug-guide/SKILL.md +479 -0
  20. package/.codex/skills/genesis-debug-guide/agents/openai.yaml +7 -0
  21. package/.codex/skills/genesis-debug-guide/checklists/flaky-test-investigation.md +339 -0
  22. package/.codex/skills/genesis-debug-guide/checklists/production-bug-debug.md +210 -0
  23. package/.codex/skills/genesis-debug-guide/checklists/test-failure-debug.md +158 -0
  24. package/.codex/skills/genesis-debug-guide/examples/example.md +48 -0
  25. package/.codex/skills/genesis-debug-guide/observability/debug-commands.md +365 -0
  26. package/.codex/skills/genesis-debug-guide/playbooks/unit-test-failures.md +289 -0
  27. package/.codex/skills/genesis-debug-guide/templates/debug-investigation-log.md +288 -0
  28. package/.codex/skills/genesis-docs-automation/SKILL.md +1003 -0
  29. package/.codex/skills/genesis-docs-automation/agents/openai.yaml +7 -0
  30. package/.codex/skills/genesis-docs-automation/checklists/docs-validation.md +359 -0
  31. package/.codex/skills/genesis-docs-automation/checklists/spec-alignment.md +312 -0
  32. package/.codex/skills/genesis-docs-automation/examples/example.md +59 -0
  33. package/.codex/skills/genesis-docs-automation/observability/docs-tracking.md +382 -0
  34. package/.codex/skills/genesis-docs-automation/playbooks/auto-update-flow.md +851 -0
  35. package/.codex/skills/genesis-docs-automation/playbooks/changelog-generation.md +491 -0
  36. package/.codex/skills/genesis-docs-automation/templates/changelog-entry-template.md +187 -0
  37. package/.codex/skills/genesis-docs-automation/templates/handoff-template.md +297 -0
  38. package/.codex/skills/genesis-harness/SKILL.md +734 -82
  39. package/.codex/skills/genesis-harness/checklists/bug-fix-qa.md +169 -0
  40. package/.codex/skills/genesis-harness/checklists/new-feature-qa.md +157 -0
  41. package/.codex/skills/genesis-harness/checklists/refactor-qa.md +216 -0
  42. package/.codex/skills/genesis-harness/checklists/requirements-validation.md +211 -0
  43. package/.codex/skills/genesis-harness/resources/change-impact-matrix-template.md +204 -0
  44. package/.codex/skills/genesis-harness/resources/foundation-phase-template.md +131 -0
  45. package/.codex/skills/genesis-harness/resources/phase-00-foundation-template.md +76 -0
  46. package/.codex/skills/genesis-harness/resources/post-implementation-guide.md +347 -0
  47. package/.codex/skills/genesis-harness/scripts/check-architecture-boundaries.sh +23 -23
  48. package/.codex/skills/genesis-harness/scripts/check-docs-sync.sh +24 -24
  49. package/.codex/skills/genesis-harness/scripts/check-no-debug-logs.sh +21 -21
  50. package/.codex/skills/genesis-harness/scripts/check-required-planning-files.sh +46 -46
  51. package/.codex/skills/genesis-harness/scripts/check-spec-changelog.sh +24 -24
  52. package/.codex/skills/genesis-harness/scripts/check-task-tracking.sh +25 -25
  53. package/.codex/skills/genesis-harness/scripts/compact-context.sh +54 -0
  54. package/.codex/skills/genesis-harness/scripts/create-adr.sh +74 -74
  55. package/.codex/skills/genesis-harness/scripts/create-bug.sh +160 -160
  56. package/.codex/skills/genesis-harness/scripts/create-feature.sh +217 -217
  57. package/.codex/skills/genesis-harness/scripts/detect-stack.sh +26 -26
  58. package/.codex/skills/genesis-harness/scripts/init-planning.sh +750 -719
  59. package/.codex/skills/genesis-harness/scripts/list-changed-files.sh +12 -12
  60. package/.codex/skills/genesis-harness/scripts/offload-log.sh +72 -0
  61. package/.codex/skills/genesis-harness/scripts/run-verification.sh +47 -47
  62. package/.codex/skills/genesis-harness/scripts/run-verify-loop.sh +75 -0
  63. package/.codex/skills/genesis-harness/scripts/update-state.sh +33 -33
  64. package/.codex/skills/genesis-harness-engineering/SKILL.md +159 -0
  65. package/.codex/skills/genesis-harness-engineering/checklists/checklist.md +48 -0
  66. package/.codex/skills/genesis-harness-engineering/examples/example.md +57 -0
  67. package/.codex/skills/genesis-harness-engineering/playbooks/harness-evolution.md +99 -0
  68. package/.codex/skills/genesis-harness-engineering/templates/harness-change-template.md +37 -0
  69. package/.codex/skills/genesis-observability-automation/SKILL.md +382 -0
  70. package/.codex/skills/genesis-observability-automation/agents/openai.yaml +7 -0
  71. package/.codex/skills/genesis-observability-automation/examples/example.md +86 -0
  72. package/.codex/skills/genesis-performance-profiling/SKILL.md +510 -0
  73. package/.codex/skills/genesis-performance-profiling/agents/openai.yaml +6 -0
  74. package/.codex/skills/genesis-performance-profiling/checklists/optimization-verification.md +199 -0
  75. package/.codex/skills/genesis-performance-profiling/checklists/performance-baseline.md +183 -0
  76. package/.codex/skills/genesis-performance-profiling/examples/example.md +234 -0
  77. package/.codex/skills/genesis-performance-profiling/observability/performance-tracking.md +202 -0
  78. package/.codex/skills/genesis-performance-profiling/playbooks/load-testing-orchestration.md +593 -0
  79. package/.codex/skills/genesis-performance-profiling/playbooks/profiling-playbook.md +601 -0
  80. package/.codex/skills/genesis-performance-profiling/templates/load-test-config-template.md +428 -0
  81. package/.codex/skills/genesis-performance-profiling/templates/performance-report-template.md +238 -0
  82. package/.codex/skills/genesis-release-orchestration/SKILL.md +653 -0
  83. package/.codex/skills/genesis-release-orchestration/agents/openai.yaml +7 -0
  84. package/.codex/skills/genesis-release-orchestration/checklists/post-deployment-verification.md +274 -0
  85. package/.codex/skills/genesis-release-orchestration/checklists/pre-release-validation.md +220 -0
  86. package/.codex/skills/genesis-release-orchestration/examples/example.md +78 -0
  87. package/.codex/skills/genesis-release-orchestration/observability/release-tracking.md +253 -0
  88. package/.codex/skills/genesis-release-orchestration/playbooks/canary-deployment-orchestration.md +472 -0
  89. package/.codex/skills/genesis-release-orchestration/playbooks/semantic-versioning-automation.md +494 -0
  90. package/.codex/skills/genesis-release-orchestration/templates/deployment-strategy-template.md +303 -0
  91. package/.codex/skills/genesis-release-orchestration/templates/release-runbook-template.md +420 -0
  92. package/.codex/skills/genesis-research-first/SKILL.md +237 -0
  93. package/.codex/skills/genesis-research-first/agents/openai.yaml +7 -0
  94. package/.codex/skills/genesis-research-first/examples/example.md +85 -0
  95. package/.codex/skills/genesis-spec-propagation/SKILL.md +534 -0
  96. package/.codex/skills/genesis-spec-propagation/agents/openai.yaml +7 -0
  97. package/.codex/skills/genesis-spec-propagation/checklists/phase-update-verification.md +384 -0
  98. package/.codex/skills/genesis-spec-propagation/checklists/spec-change-detection.md +257 -0
  99. package/.codex/skills/genesis-spec-propagation/examples/example.md +63 -0
  100. package/.codex/skills/genesis-spec-propagation/observability/propagation-tracking.md +373 -0
  101. package/.codex/skills/genesis-spec-propagation/playbooks/breaking-change-propagation.md +692 -0
  102. package/.codex/skills/genesis-spec-propagation/playbooks/feature-change-propagation.md +434 -0
  103. package/.codex/skills/genesis-spec-propagation/templates/migration-guide-template.md +407 -0
  104. package/.codex/skills/spec-impact-engine/SKILL.md +504 -0
  105. package/.codex/skills/spec-impact-engine/agents/openai.yaml +7 -0
  106. package/.codex/skills/spec-impact-engine/detect-spec-changes.sh +262 -0
  107. package/.codex/skills/spec-impact-engine/examples/example.md +98 -0
  108. package/.codex/skills/spec-impact-engine/templates/impact-report.md +248 -0
  109. package/.codex/skills/spec-impact-engine/templates/migration-guide.md +223 -0
  110. package/.codex-plugin/plugin.json +1 -1
  111. package/README.EN.md +719 -0
  112. package/README.VI.md +712 -0
  113. package/README.md +261 -107
  114. package/VERSION +1 -1
  115. package/bin/genesis-harness.js +20 -11
  116. package/package.json +1 -1
  117. package/scripts/README.md +342 -0
  118. package/scripts/compact-context.sh +54 -0
  119. package/scripts/detect-changes.sh +152 -0
  120. package/scripts/install.sh +50 -41
  121. package/scripts/offload-log.sh +72 -0
  122. package/scripts/run-evals.sh +70 -43
  123. package/scripts/run-verify-loop.sh +75 -0
  124. package/scripts/uninstall.sh +52 -43
  125. package/scripts/verify.sh +165 -73
  126. package/.codex/skills/harness-engineering-skill/SKILL.md +0 -45
  127. package/.codex/skills/harness-engineering-skill/checklists/checklist.md +0 -8
  128. package/.codex/skills/harness-engineering-skill/examples/example.md +0 -4
  129. package/.codex/skills/harness-engineering-skill/templates/harness-change-template.md +0 -8
  130. /package/.codex/skills/{ai-provider-skill → genesis-ai-provider}/SKILL.md +0 -0
  131. /package/.codex/skills/{ai-provider-skill → genesis-ai-provider}/agents/openai.yaml +0 -0
  132. /package/.codex/skills/{ai-provider-skill → genesis-ai-provider}/checklists/checklist.md +0 -0
  133. /package/.codex/skills/{ai-provider-skill → genesis-ai-provider}/examples/example.md +0 -0
  134. /package/.codex/skills/{ai-provider-skill → genesis-ai-provider}/templates/provider-contract-template.md +0 -0
  135. /package/.codex/skills/{api-contract-skill → genesis-api-contract}/SKILL.md +0 -0
  136. /package/.codex/skills/{api-contract-skill → genesis-api-contract}/agents/openai.yaml +0 -0
  137. /package/.codex/skills/{api-contract-skill → genesis-api-contract}/checklists/checklist.md +0 -0
  138. /package/.codex/skills/{api-contract-skill → genesis-api-contract}/examples/example.md +0 -0
  139. /package/.codex/skills/{api-contract-skill → genesis-api-contract}/templates/api-contract-template.md +0 -0
  140. /package/.codex/skills/{architecture-skill → genesis-architecture}/SKILL.md +0 -0
  141. /package/.codex/skills/{architecture-skill → genesis-architecture}/agents/openai.yaml +0 -0
  142. /package/.codex/skills/{architecture-skill → genesis-architecture}/checklists/checklist.md +0 -0
  143. /package/.codex/skills/{architecture-skill → genesis-architecture}/examples/example.md +0 -0
  144. /package/.codex/skills/{architecture-skill → genesis-architecture}/templates/architecture-decision-template.md +0 -0
  145. /package/.codex/skills/{codebase-map-skill → genesis-codebase-map}/SKILL.md +0 -0
  146. /package/.codex/skills/{codebase-map-skill → genesis-codebase-map}/agents/openai.yaml +0 -0
  147. /package/.codex/skills/{codebase-map-skill → genesis-codebase-map}/checklists/checklist.md +0 -0
  148. /package/.codex/skills/{codebase-map-skill → genesis-codebase-map}/examples/example.md +0 -0
  149. /package/.codex/skills/{codebase-map-skill → genesis-codebase-map}/templates/map-update-template.md +0 -0
  150. /package/.codex/skills/{design-spec-skill → genesis-design-spec}/SKILL.md +0 -0
  151. /package/.codex/skills/{design-spec-skill → genesis-design-spec}/agents/openai.yaml +0 -0
  152. /package/.codex/skills/{design-spec-skill → genesis-design-spec}/checklists/checklist.md +0 -0
  153. /package/.codex/skills/{design-spec-skill → genesis-design-spec}/examples/example.md +0 -0
  154. /package/.codex/skills/{design-spec-skill → genesis-design-spec}/templates/design-spec-template.md +0 -0
  155. /package/.codex/skills/{docs-skill → genesis-docs}/SKILL.md +0 -0
  156. /package/.codex/skills/{docs-skill → genesis-docs}/agents/openai.yaml +0 -0
  157. /package/.codex/skills/{docs-skill → genesis-docs}/checklists/checklist.md +0 -0
  158. /package/.codex/skills/{docs-skill → genesis-docs}/examples/example.md +0 -0
  159. /package/.codex/skills/{docs-skill → genesis-docs}/templates/docs-update-template.md +0 -0
  160. /package/.codex/skills/{harness-engineering-skill → genesis-harness-engineering}/agents/openai.yaml +0 -0
  161. /package/.codex/skills/{pipeline-orchestration-skill → genesis-pipeline-orchestration}/SKILL.md +0 -0
  162. /package/.codex/skills/{pipeline-orchestration-skill → genesis-pipeline-orchestration}/agents/openai.yaml +0 -0
  163. /package/.codex/skills/{pipeline-orchestration-skill → genesis-pipeline-orchestration}/checklists/checklist.md +0 -0
  164. /package/.codex/skills/{pipeline-orchestration-skill → genesis-pipeline-orchestration}/examples/example.md +0 -0
  165. /package/.codex/skills/{pipeline-orchestration-skill → genesis-pipeline-orchestration}/templates/orchestration-template.md +0 -0
  166. /package/.codex/skills/{planning-skill → genesis-planning}/SKILL.md +0 -0
  167. /package/.codex/skills/{planning-skill → genesis-planning}/agents/openai.yaml +0 -0
  168. /package/.codex/skills/{planning-skill → genesis-planning}/checklists/checklist.md +0 -0
  169. /package/.codex/skills/{planning-skill → genesis-planning}/examples/example.md +0 -0
  170. /package/.codex/skills/{planning-skill → genesis-planning}/templates/plan-template.md +0 -0
  171. /package/.codex/skills/{release-skill → genesis-release}/SKILL.md +0 -0
  172. /package/.codex/skills/{release-skill → genesis-release}/agents/openai.yaml +0 -0
  173. /package/.codex/skills/{release-skill → genesis-release}/checklists/checklist.md +0 -0
  174. /package/.codex/skills/{release-skill → genesis-release}/examples/example.md +0 -0
  175. /package/.codex/skills/{release-skill → genesis-release}/templates/release-checklist-template.md +0 -0
  176. /package/.codex/skills/{research-skill → genesis-research}/SKILL.md +0 -0
  177. /package/.codex/skills/{research-skill → genesis-research}/agents/openai.yaml +0 -0
  178. /package/.codex/skills/{research-skill → genesis-research}/checklists/checklist.md +0 -0
  179. /package/.codex/skills/{research-skill → genesis-research}/examples/example.md +0 -0
  180. /package/.codex/skills/{research-skill → genesis-research}/templates/research-note-template.md +0 -0
@@ -0,0 +1,262 @@
1
+ #!/bin/bash
2
+ # Spec Impact Engine - Core Detection Script
3
+ # Detects spec changes and calculates downstream impact
4
+
5
+ set -e
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ REPO_ROOT="$(cd "$SCRIPT_DIR/../../../" && pwd)"
9
+ PLANNING_DIR="$REPO_ROOT/.planning"
10
+ CODEBASE_DIR="$REPO_ROOT/.codebase"
11
+ TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
12
+
13
+ # Colors
14
+ RED='\033[0;31m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[1;33m'
17
+ BLUE='\033[0;34m'
18
+ NC='\033[0m' # No Color
19
+
20
+ # Log functions
21
+ log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
22
+ log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
23
+ log_warning() { echo -e "${YELLOW}[WARN]${NC} $1"; }
24
+ log_error() { echo -e "${RED}[✗]${NC} $1"; }
25
+
26
+ # Check if running in git repo
27
+ check_git_repo() {
28
+ if ! git rev-parse --git-dir > /dev/null 2>&1; then
29
+ log_error "Not a git repository"
30
+ return 1
31
+ fi
32
+ return 0
33
+ }
34
+
35
+ # Get changed files since last commit
36
+ get_changed_files() {
37
+ local changed_docs=""
38
+
39
+ # Check REQUIREMENTS.md
40
+ if git diff --name-only | grep -q "\.planning/REQUIREMENTS\.md"; then
41
+ changed_docs="$changed_docs REQUIREMENTS.md"
42
+ fi
43
+
44
+ # Check API_DOCS.md
45
+ if git diff --name-only | grep -q "\.planning/API_DOCS\.md"; then
46
+ changed_docs="$changed_docs API_DOCS.md"
47
+ fi
48
+
49
+ # Check ARCHITECTURE.md
50
+ if git diff --name-only | grep -q "\.planning/ARCHITECTURE\.md"; then
51
+ changed_docs="$changed_docs ARCHITECTURE.md"
52
+ fi
53
+
54
+ # Check DESIGN.md
55
+ if git diff --name-only | grep -q "\.planning/DESIGN\.md"; then
56
+ changed_docs="$changed_docs DESIGN.md"
57
+ fi
58
+
59
+ # Check STACK.md
60
+ if git diff --name-only | grep -q "\.planning/STACK\.md"; then
61
+ changed_docs="$changed_docs STACK.md"
62
+ fi
63
+
64
+ # Check feature specs
65
+ if git diff --name-only | grep -q "\.planning/features/.*/SPEC\.md"; then
66
+ changed_docs="$changed_docs FEATURE_SPECS"
67
+ fi
68
+
69
+ # Check bug plans
70
+ if git diff --name-only | grep -q "\.planning/bugs/.*/PLAN\.md"; then
71
+ changed_docs="$changed_docs BUG_PLANS"
72
+ fi
73
+
74
+ echo "$changed_docs"
75
+ }
76
+
77
+ # Detect breaking changes
78
+ detect_breaking_changes() {
79
+ local file="$1"
80
+ local breaking_changes=""
81
+
82
+ log_info "Analyzing $file for breaking changes..."
83
+
84
+ # API breaking changes patterns
85
+ if [[ "$file" == "API_DOCS.md" ]]; then
86
+ # Check for endpoint signature changes
87
+ if git diff "$PLANNING_DIR/API_DOCS.md" | grep -E "^\-.*GET|POST|PUT|DELETE" > /dev/null; then
88
+ breaking_changes="endpoint_signature_changed"
89
+ log_warning "BREAKING: Endpoint signature changed"
90
+ fi
91
+
92
+ # Check for response format changes
93
+ if git diff "$PLANNING_DIR/API_DOCS.md" | grep -E "^\-.*\{.*\}" > /dev/null; then
94
+ breaking_changes="$breaking_changes response_format_changed"
95
+ log_warning "BREAKING: Response format changed"
96
+ fi
97
+ fi
98
+
99
+ # Database breaking changes
100
+ if [[ "$file" == "ARCHITECTURE.md" ]] || [[ "$file" == "REQUIREMENTS.md" ]]; then
101
+ if git diff "$PLANNING_DIR/$file" | grep -E "^\-.*schema|database|model" > /dev/null; then
102
+ breaking_changes="$breaking_changes schema_changed"
103
+ log_warning "BREAKING: Database schema changed"
104
+ fi
105
+ fi
106
+
107
+ echo "$breaking_changes"
108
+ }
109
+
110
+ # Identify affected phases
111
+ identify_affected_phases() {
112
+ local change_type="$1"
113
+ local affected_phases=""
114
+
115
+ if [[ -f "$CODEBASE_DIR/PHASE_DEPENDENCY_MAP.md" ]]; then
116
+ log_info "Reading phase dependency map..."
117
+ # This would parse PHASE_DEPENDENCY_MAP.md to find affected phases
118
+ # For now, scan all phase folders
119
+
120
+ for phase_dir in "$PLANNING_DIR"/features/*/; do
121
+ if [[ -f "$phase_dir/SPEC.md" ]]; then
122
+ local phase_name=$(basename "$phase_dir")
123
+ affected_phases="$affected_phases $phase_name"
124
+ fi
125
+ done
126
+
127
+ log_success "Identified $(echo $affected_phases | wc -w) affected phases"
128
+ fi
129
+
130
+ echo "$affected_phases"
131
+ }
132
+
133
+ # Calculate impact severity
134
+ calculate_severity() {
135
+ local change_type="$1"
136
+ local severity="low"
137
+
138
+ case "$change_type" in
139
+ *endpoint_signature_changed*)
140
+ severity="high"
141
+ ;;
142
+ *response_format_changed*)
143
+ severity="high"
144
+ ;;
145
+ *schema_changed*)
146
+ severity="medium"
147
+ ;;
148
+ *requirement_changed*)
149
+ severity="medium"
150
+ ;;
151
+ *)
152
+ severity="low"
153
+ ;;
154
+ esac
155
+
156
+ echo "$severity"
157
+ }
158
+
159
+ # Generate impact report
160
+ generate_impact_report() {
161
+ local changed_file="$1"
162
+ local breaking_changes="$2"
163
+ local affected_phases="$3"
164
+ local severity="$4"
165
+
166
+ local report_file="$CODEBASE_DIR/IMPACT_REPORT_$TIMESTAMP.md"
167
+
168
+ log_info "Generating impact report: $report_file"
169
+
170
+ cat > "$report_file" << EOF
171
+ # Spec Change Impact Report
172
+
173
+ **Date**: $(date '+%Y-%m-%d %H:%M:%S')
174
+ **Changed File**: $changed_file
175
+ **Breaking Changes**: $breaking_changes
176
+ **Severity**: $severity
177
+
178
+ ## Summary
179
+
180
+ File \`$changed_file\` was modified.
181
+
182
+ **Change Type(s)**: $breaking_changes
183
+ **Severity Level**: $severity
184
+
185
+ ## Affected Phases
186
+
187
+ EOF
188
+
189
+ local phase_count=0
190
+ for phase in $affected_phases; do
191
+ phase_count=$((phase_count + 1))
192
+ echo "- $phase" >> "$report_file"
193
+ done
194
+
195
+ cat >> "$report_file" << EOF
196
+
197
+ **Total Phases Affected**: $phase_count
198
+
199
+ ## Recommended Actions
200
+
201
+ 1. ✅ Review breaking changes
202
+ 2. → Update affected phase specs
203
+ 3. → Update test contracts
204
+ 4. → Run validation tests
205
+ 5. → Generate migration guides
206
+ 6. → Update ROADMAP.md if timeline affected
207
+
208
+ ## Validation Checklist
209
+
210
+ - [ ] All affected phases reviewed
211
+ - [ ] Phase specs updated
212
+ - [ ] Tests passing
213
+ - [ ] Migration guides created
214
+ - [ ] Timeline recalculated
215
+ - [ ] Team notified
216
+
217
+ ## Next Steps
218
+
219
+ Run: \`invoke spec-impact-engine /propagate-spec\`
220
+
221
+ To automatically update all affected downstream phases.
222
+
223
+ EOF
224
+
225
+ log_success "Impact report created: $report_file"
226
+ cat "$report_file"
227
+ }
228
+
229
+ # Main execution
230
+ main() {
231
+ log_info "Starting spec impact analysis..."
232
+
233
+ if ! check_git_repo; then
234
+ log_error "Must be run from a git repository"
235
+ exit 1
236
+ fi
237
+
238
+ local changed_files=$(get_changed_files)
239
+
240
+ if [[ -z "$changed_files" ]]; then
241
+ log_warning "No spec files changed"
242
+ exit 0
243
+ fi
244
+
245
+ log_success "Detected changes: $changed_files"
246
+
247
+ for file in $changed_files; do
248
+ log_info "Processing: $file"
249
+
250
+ local breaking=$(detect_breaking_changes "$file")
251
+ if [[ -n "$breaking" ]]; then
252
+ local affected=$(identify_affected_phases "$breaking")
253
+ local severity=$(calculate_severity "$breaking")
254
+
255
+ generate_impact_report "$file" "$breaking" "$affected" "$severity"
256
+ fi
257
+ done
258
+
259
+ log_success "Spec impact analysis complete"
260
+ }
261
+
262
+ main "$@"
@@ -0,0 +1,98 @@
1
+ # Example: Detecting Impact of a Breaking API Change
2
+
3
+ ## Scenario
4
+
5
+ Phase 1 API contract changes — `GET /api/users/:id` response field `role` (string) is replaced by `roles` (array of strings). This is a breaking change.
6
+
7
+ ## Trigger
8
+
9
+ ```bash
10
+ /spec-change .planning/API_DOCS.md
11
+ # spec-impact-engine activates automatically
12
+ ```
13
+
14
+ Or manually:
15
+
16
+ ```bash
17
+ invoke spec-impact-engine
18
+ # Parameters:
19
+ # changed_files: [".planning/API_DOCS.md"]
20
+ # impact_scope: "all"
21
+ # auto_update: true
22
+ # notify: true
23
+ ```
24
+
25
+ ## Phase 1: Change Detection
26
+
27
+ ```
28
+ Analyzing: .planning/API_DOCS.md
29
+
30
+ Detected change:
31
+ Type: BREAKING
32
+ Section: GET /api/users/:id → response
33
+ Old: { name, email, role: string }
34
+ New: { id, name, email, roles: string[] }
35
+ Severity: HIGH
36
+ Reason: Field renamed and type changed (string → array)
37
+ ```
38
+
39
+ ## Phase 2: Dependency Analysis
40
+
41
+ ```
42
+ Building dependency graph from .codebase/PHASE_DEPENDENCY_MAP.md...
43
+
44
+ Phase 2 (Tests): depends on Phase 1 API ← AFFECTED
45
+ Phase 3 (Backend): depends on Phase 1 API ← AFFECTED
46
+ Phase 4 (SDK): depends on Phase 3 ← AFFECTED (transitive)
47
+ Phase 5 (E2E): depends on Phase 4 ← AFFECTED (transitive)
48
+ ```
49
+
50
+ ## Phase 3: Impact Calculation
51
+
52
+ ```
53
+ Impact chain (DFS from Phase 1):
54
+
55
+ Phase 2 → MEDIUM: 5 mock assertions use `role` field
56
+ Phase 3 → HIGH: Response builder returns `role`, not `roles[]`
57
+ Phase 4 → MEDIUM: interface User has `role: string`, not `roles: string[]`
58
+ Phase 5 → LOW: 2 E2E scenarios check for role-based access
59
+
60
+ Update order: Phase 2 → Phase 3 → Phase 4 → Phase 5
61
+ Total estimate: ~2 hours
62
+ ```
63
+
64
+ ## Phase 4: Auto-Updates Applied
65
+
66
+ - **Phase 2** `tests/api-mocks.test.ts`:
67
+ - `expect(response.role).toBe('admin')` → `expect(response.roles).toContain('admin')`
68
+ - **Phase 3** `contracts/api/GetUser/response.json`:
69
+ - Schema updated: `roles: { type: "array", items: { type: "string" } }`
70
+ - **Phase 4** `types/api.ts`:
71
+ - `role: string` → `roles: string[]`
72
+ - **Phase 5** `playwright/e2e/user-profile.spec.ts`:
73
+ - Updated 2 role-check assertions
74
+
75
+ ## Impact Report Generated
76
+
77
+ ```
78
+ .codebase/IMPACT_REPORT_2026-05-31_14-30-00.md created:
79
+ - 4 phases affected
80
+ - 8 files auto-updated
81
+ - 2 hours timeline impact
82
+ - Migration guide generated: templates/migration-guide.md
83
+ ```
84
+
85
+ ## SPEC_CHANGELOG.md Entry
86
+
87
+ ```
88
+ - 2026-05-31T14:30:00Z | BREAKING | API field role → roles[] in GET /api/users/:id
89
+ Affected: Phase 2, 3, 4, 5 | Auto-updated: yes | Migration guide: IMPACT_REPORT_...
90
+ ```
91
+
92
+ ## Outcome
93
+
94
+ - ✅ Breaking change detected immediately
95
+ - ✅ All 4 downstream phases auto-updated
96
+ - ✅ Tests re-run and passing
97
+ - ✅ Migration guide generated
98
+ - ✅ 45 min manual discovery + update → 30 min automated
@@ -0,0 +1,248 @@
1
+ # Spec Change Impact Report
2
+
3
+ **Report ID**: IMPACT_{{TIMESTAMP}}
4
+ **Generated**: {{DATE}}
5
+ **Change Source**: {{CHANGED_FILE}}
6
+ **Severity**: {{SEVERITY}} <!-- HIGH | MEDIUM | LOW -->
7
+ **Change Type**: {{CHANGE_TYPE}} <!-- BREAKING | FEATURE | INTERNAL | DOC -->
8
+ **Reporter**: spec-impact-engine v1.0
9
+
10
+ ---
11
+
12
+ ## Executive Summary
13
+
14
+ {{CHANGE_SUMMARY_ONE_LINER}}
15
+
16
+ | Field | Value |
17
+ |-------|-------|
18
+ | Changed File | `{{CHANGED_FILE}}` |
19
+ | Changed Section | `{{CHANGED_SECTION}}` |
20
+ | Change Type | {{CHANGE_TYPE}} |
21
+ | Severity | {{SEVERITY}} |
22
+ | Phases Affected | {{AFFECTED_PHASE_COUNT}} |
23
+ | Estimated Update Time | {{ESTIMATED_HOURS}} hours |
24
+ | Manual Review Required | {{MANUAL_REVIEW}} |
25
+
26
+ ---
27
+
28
+ ## Change Details
29
+
30
+ ### What Changed
31
+
32
+ **Before**:
33
+ ```
34
+ {{OLD_VALUE}}
35
+ ```
36
+
37
+ **After**:
38
+ ```
39
+ {{NEW_VALUE}}
40
+ ```
41
+
42
+ ### Why It Changed
43
+
44
+ {{CHANGE_REASON}}
45
+
46
+ ### Breaking Status
47
+
48
+ - [ ] **BREAKING** — Existing consumers will break without migration
49
+ - [ ] **FEATURE** — New capability added (backward compatible)
50
+ - [ ] **INTERNAL** — No external impact
51
+
52
+ **Breaking assessment**: {{BREAKING_ASSESSMENT}}
53
+
54
+ ---
55
+
56
+ ## Affected Phases
57
+
58
+ | Phase | Dependency Type | Impact Level | Action Required | Status |
59
+ |-------|----------------|-------------|----------------|--------|
60
+ | Phase 1 (Contracts) | {{P1_DEP_TYPE}} | {{P1_IMPACT}} | {{P1_ACTION}} | {{P1_STATUS}} |
61
+ | Phase 2 (Tests) | {{P2_DEP_TYPE}} | {{P2_IMPACT}} | {{P2_ACTION}} | {{P2_STATUS}} |
62
+ | Phase 3 (Backend) | {{P3_DEP_TYPE}} | {{P3_IMPACT}} | {{P3_ACTION}} | {{P3_STATUS}} |
63
+ | Phase 4 (SDK) | {{P4_DEP_TYPE}} | {{P4_IMPACT}} | {{P4_ACTION}} | {{P4_STATUS}} |
64
+ | Phase 5 (E2E) | {{P5_DEP_TYPE}} | {{P5_IMPACT}} | {{P5_ACTION}} | {{P5_STATUS}} |
65
+
66
+ **Legend**:
67
+ - Impact: HIGH = code must change, MEDIUM = review needed, LOW = informational, N/A = not affected
68
+ - Status: ⚠️ NEEDS UPDATE | 🔍 REVIEW | ✅ OK | ⛔ BLOCKED
69
+
70
+ ---
71
+
72
+ ## Detailed Impact Per Phase
73
+
74
+ ### Phase 2: Tests
75
+
76
+ **Files affected**:
77
+ - `{{P2_FILE_1}}` — {{P2_CHANGE_DESC_1}}
78
+ - `{{P2_FILE_2}}` — {{P2_CHANGE_DESC_2}}
79
+
80
+ **Actions**:
81
+ - [ ] Update mock data: replace `{{OLD_FIELD}}` with `{{NEW_FIELD}}`
82
+ - [ ] Update assertions: verify response includes `{{NEW_FIELD}}`
83
+ - [ ] Remove obsolete assertions for `{{REMOVED_FIELD}}`
84
+ - [ ] Add test cases for new `{{NEW_BEHAVIOR}}`
85
+ - [ ] Validate: run `npm test -- {{P2_TEST_PATTERN}}`
86
+
87
+ **Estimated time**: {{P2_HOURS}} hours
88
+
89
+ ---
90
+
91
+ ### Phase 3: Backend Implementation
92
+
93
+ **Files affected**:
94
+ - `{{P3_FILE_1}}` — {{P3_CHANGE_DESC_1}}
95
+ - `{{P3_FILE_2}}` — {{P3_CHANGE_DESC_2}}
96
+
97
+ **Actions**:
98
+ - [ ] Update API contract schema: `contracts/api/{{ENDPOINT}}/response.json`
99
+ - [ ] Update handler to return `{{NEW_FIELD}}` in response
100
+ - [ ] Add migration note to handler docstring
101
+ - [ ] Validate: run integration tests for `{{ENDPOINT}}`
102
+
103
+ **Estimated time**: {{P3_HOURS}} hours
104
+
105
+ ---
106
+
107
+ ### Phase 4: Client SDK
108
+
109
+ **Files affected**:
110
+ - `{{P4_FILE_1}}` — {{P4_CHANGE_DESC_1}}
111
+
112
+ **Actions**:
113
+ - [ ] Update TypeScript interface: `{{INTERFACE_NAME}}`
114
+ - Remove field: `{{REMOVED_FIELD}}: {{OLD_TYPE}}`
115
+ - Add field: `{{NEW_FIELD}}: {{NEW_TYPE}}`
116
+ - [ ] Update serialization/deserialization if needed
117
+ - [ ] Add deprecation warning for removed field (if migration window active)
118
+ - [ ] Validate: run `tsc --noEmit` (no type errors)
119
+
120
+ **Estimated time**: {{P4_HOURS}} hours
121
+
122
+ ---
123
+
124
+ ### Phase 5: E2E Tests
125
+
126
+ **Files affected**:
127
+ - `{{P5_FILE_1}}` — {{P5_CHANGE_DESC_1}}
128
+
129
+ **Actions**:
130
+ - [ ] Update scenario that checks `{{REMOVED_FIELD}}`
131
+ - [ ] Add scenario for `{{NEW_FIELD}}` behavior
132
+ - [ ] Validate: run `npx playwright test {{P5_TEST_PATTERN}}`
133
+
134
+ **Estimated time**: {{P5_HOURS}} hours
135
+
136
+ ---
137
+
138
+ ## Migration Strategy
139
+
140
+ ### Recommended Execution Order
141
+
142
+ ```
143
+ 1. ✅ Phase 1: Contract updated (source of change)
144
+ 2. → Phase 2: Update test mocks and assertions (est. {{P2_HOURS}} h)
145
+ 3. → Phase 3: Update backend handler + response schema (est. {{P3_HOURS}} h)
146
+ 4. → Phase 4: Update client SDK types (est. {{P4_HOURS}} h)
147
+ 5. → Phase 5: Update E2E test scenarios (est. {{P5_HOURS}} h)
148
+
149
+ Total estimated: {{TOTAL_HOURS}} hours
150
+ ```
151
+
152
+ ### Topological Sort (Dependency Order)
153
+
154
+ ```
155
+ Phase 1 → Phase 2 → Phase 3 → Phase 4 → Phase 5
156
+ ```
157
+ Phases must be updated in this order to avoid downstream breakage.
158
+
159
+ ### Rollback Plan
160
+
161
+ If propagation fails at any phase:
162
+
163
+ ```bash
164
+ # Rollback Phase 2 only (if Phase 2 update broke tests):
165
+ git revert HEAD -- .planning/features/{{PHASE2_FEATURE}}/
166
+ npm test # verify passing again
167
+
168
+ # Rollback entire change (if cascading failures):
169
+ git revert <propagation-commit>
170
+ # Then manually review the spec change requirement before re-attempting
171
+ ```
172
+
173
+ ---
174
+
175
+ ## Auto-Generated Updates Log
176
+
177
+ | File | Update Type | Status | Timestamp |
178
+ |------|------------|--------|-----------|
179
+ | `{{FILE_1}}` | Mock data updated | {{STATUS_1}} | {{TS_1}} |
180
+ | `{{FILE_2}}` | Type definition updated | {{STATUS_2}} | {{TS_2}} |
181
+ | `{{FILE_3}}` | Contract schema updated | {{STATUS_3}} | {{TS_3}} |
182
+ | `{{FILE_4}}` | Assertion updated | {{STATUS_4}} | {{TS_4}} |
183
+ | `SPEC_CHANGELOG.md` | Entry appended | {{CHANGELOG_STATUS}} | {{CHANGELOG_TS}} |
184
+
185
+ ---
186
+
187
+ ## Validation Results
188
+
189
+ ### Pre-Commit Checklist
190
+
191
+ - [ ] **Syntax check**: All updated files are valid JSON/JS/TS
192
+ - [ ] **Contract alignment**: Updated contracts match actual changes
193
+ - [ ] **Test consistency**: Updated tests are semantically correct
194
+ - [ ] **Type safety**: Phase 4 types match Phase 3 API contract
195
+ - [ ] **Cross-phase validation**:
196
+ - [ ] Phase 3 types ⊆ Phase 4 client types
197
+ - [ ] Phase 2 test data matches Phase 3 API contract
198
+ - [ ] Phase 5 tests reference existing Phase 4 client methods
199
+ - [ ] **SPEC_CHANGELOG.md**: Entry added with correct severity
200
+ - [ ] **Migration guide**: Created (required for BREAKING changes)
201
+
202
+ ### Test Run Results
203
+
204
+ ```
205
+ Phase 2 tests: {{P2_TEST_RESULT}}
206
+ Phase 3 tests: {{P3_TEST_RESULT}}
207
+ Phase 4 type check: {{P4_TYPE_RESULT}}
208
+ Phase 5 tests: {{P5_TEST_RESULT}}
209
+ ```
210
+
211
+ ---
212
+
213
+ ## Risk Assessment
214
+
215
+ | Risk | Likelihood | Impact | Mitigation |
216
+ |------|-----------|--------|-----------|
217
+ | Phase 4 clients break on `{{REMOVED_FIELD}}` | {{LIKELIHOOD_1}} | {{IMPACT_1}} | {{MITIGATION_1}} |
218
+ | Timeline slippage if Phase 3 complex | {{LIKELIHOOD_2}} | {{IMPACT_2}} | {{MITIGATION_2}} |
219
+ | Circular dependency in phase updates | {{LIKELIHOOD_3}} | {{IMPACT_3}} | {{MITIGATION_3}} |
220
+
221
+ ---
222
+
223
+ ## SPEC_CHANGELOG.md Entry (Auto-Appended)
224
+
225
+ ```
226
+ - {{DATE}} | {{CHANGE_TYPE}} | {{CHANGE_SUMMARY_ONE_LINER}}
227
+ Changed: {{CHANGED_FILE}} → {{CHANGED_SECTION}}
228
+ Affected: Phase {{AFFECTED_PHASES}} | Migration guide: {{MIGRATION_GUIDE_LINK}}
229
+ Auto-updated phases: {{AUTO_UPDATED_PHASES}} | Manual review: {{MANUAL_REVIEW}}
230
+ ```
231
+
232
+ ---
233
+
234
+ ## Sign-Off
235
+
236
+ - [ ] **Developer review**: Impact report reviewed and accurate
237
+ - [ ] **Auto-updates validated**: Changes look correct, no unintended modifications
238
+ - [ ] **Tests passing**: All affected phase tests green
239
+ - [ ] **Migration guide complete**: (required if BREAKING)
240
+ - [ ] **Ready to proceed**: All downstream phases aligned
241
+
242
+ **Reviewed by**: ________________________
243
+ **Date**: {{DATE}}
244
+ **Status**: [ ] APPROVED TO PROCEED | [ ] NEEDS REWORK | [ ] ESCALATE
245
+
246
+ ---
247
+
248
+ *Generated by spec-impact-engine v1.0 | Genesis Codex Harness*