codex-genesis-harness 0.1.0 → 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 (328) hide show
  1. package/.codebase/API_CONTRACTS.md +12 -0
  2. package/.codebase/ARCHITECTURE.md +6 -0
  3. package/.codebase/ARCHITECTURE_REVIEW_COMPLETE.md +216 -0
  4. package/.codebase/CURRENT_STATE.md +8 -0
  5. package/.codebase/DEPENDENCY_GRAPH.md +14 -0
  6. package/.codebase/DOMAIN_MODELS.md +10 -0
  7. package/.codebase/EVOLUTION_PLAN.md +35 -0
  8. package/.codebase/FILE_NAMING_CLARIFICATION.md +161 -0
  9. package/.codebase/HARNESS_COMPLETENESS_AUDIT.md +613 -0
  10. package/.codebase/IMPLEMENTATION_COMPLETE.md +429 -0
  11. package/.codebase/IMPLEMENTATION_HANDOFF.md +351 -0
  12. package/.codebase/IMPROVEMENTS_SUMMARY.md +419 -0
  13. package/.codebase/KNOWN_PROBLEMS.md +6 -0
  14. package/.codebase/MODULE_INDEX.md +13 -0
  15. package/.codebase/PHASE3_SKILLS_NAMING_COMPLETE.md +292 -0
  16. package/.codebase/PHASE_DEPENDENCY_MAP.md +486 -0
  17. package/.codebase/PIPELINE_FLOW.md +14 -0
  18. package/.codebase/QUICK_START_SPEC_IMPACT.md +456 -0
  19. package/.codebase/README.md +139 -0
  20. package/.codebase/RECOVERY_POINTS.md +438 -0
  21. package/.codebase/TEST_MATRIX.md +11 -0
  22. package/.codebase/UI_ROUTES.md +4 -0
  23. package/.codebase/context/backend-summary.md +4 -0
  24. package/.codebase/context/frontend-summary.md +4 -0
  25. package/.codebase/context/pipeline-summary.md +4 -0
  26. package/.codebase/context/providers-summary.md +4 -0
  27. package/.codebase/context/render-summary.md +4 -0
  28. package/.codebase/context/tests-summary.md +4 -0
  29. package/.codex/skills/genesis-ai-provider/SKILL.md +46 -0
  30. package/.codex/skills/genesis-ai-provider/agents/openai.yaml +7 -0
  31. package/.codex/skills/genesis-ai-provider/checklists/checklist.md +9 -0
  32. package/.codex/skills/genesis-ai-provider/examples/example.md +4 -0
  33. package/.codex/skills/genesis-ai-provider/templates/provider-contract-template.md +9 -0
  34. package/.codex/skills/genesis-api-contract/SKILL.md +46 -0
  35. package/.codex/skills/genesis-api-contract/agents/openai.yaml +7 -0
  36. package/.codex/skills/genesis-api-contract/checklists/checklist.md +8 -0
  37. package/.codex/skills/genesis-api-contract/examples/example.md +4 -0
  38. package/.codex/skills/genesis-api-contract/templates/api-contract-template.md +4 -0
  39. package/.codex/skills/genesis-api-sync/SKILL.md +354 -0
  40. package/.codex/skills/genesis-api-sync/agents/openai.yaml +7 -0
  41. package/.codex/skills/genesis-api-sync/checklists/api-sync-checklist.md +101 -0
  42. package/.codex/skills/genesis-api-sync/examples/example.md +68 -0
  43. package/.codex/skills/genesis-api-sync/templates/api-change-template.md +257 -0
  44. package/.codex/skills/genesis-architecture/SKILL.md +46 -0
  45. package/.codex/skills/genesis-architecture/agents/openai.yaml +7 -0
  46. package/.codex/skills/genesis-architecture/checklists/checklist.md +8 -0
  47. package/.codex/skills/genesis-architecture/examples/example.md +4 -0
  48. package/.codex/skills/genesis-architecture/templates/architecture-decision-template.md +14 -0
  49. package/.codex/skills/genesis-codebase-map/SKILL.md +46 -0
  50. package/.codex/skills/genesis-codebase-map/agents/openai.yaml +7 -0
  51. package/.codex/skills/genesis-codebase-map/checklists/checklist.md +7 -0
  52. package/.codex/skills/genesis-codebase-map/examples/example.md +4 -0
  53. package/.codex/skills/genesis-codebase-map/templates/map-update-template.md +8 -0
  54. package/.codex/skills/genesis-debug-guide/SKILL.md +479 -0
  55. package/.codex/skills/genesis-debug-guide/agents/openai.yaml +7 -0
  56. package/.codex/skills/genesis-debug-guide/checklists/flaky-test-investigation.md +339 -0
  57. package/.codex/skills/genesis-debug-guide/checklists/production-bug-debug.md +210 -0
  58. package/.codex/skills/genesis-debug-guide/checklists/test-failure-debug.md +158 -0
  59. package/.codex/skills/genesis-debug-guide/examples/example.md +48 -0
  60. package/.codex/skills/genesis-debug-guide/observability/debug-commands.md +365 -0
  61. package/.codex/skills/genesis-debug-guide/playbooks/unit-test-failures.md +289 -0
  62. package/.codex/skills/genesis-debug-guide/templates/debug-investigation-log.md +288 -0
  63. package/.codex/skills/genesis-design-spec/SKILL.md +46 -0
  64. package/.codex/skills/genesis-design-spec/agents/openai.yaml +7 -0
  65. package/.codex/skills/genesis-design-spec/checklists/checklist.md +7 -0
  66. package/.codex/skills/genesis-design-spec/examples/example.md +4 -0
  67. package/.codex/skills/genesis-design-spec/templates/design-spec-template.md +9 -0
  68. package/.codex/skills/genesis-docs/SKILL.md +46 -0
  69. package/.codex/skills/genesis-docs/agents/openai.yaml +7 -0
  70. package/.codex/skills/genesis-docs/checklists/checklist.md +7 -0
  71. package/.codex/skills/genesis-docs/examples/example.md +4 -0
  72. package/.codex/skills/genesis-docs/templates/docs-update-template.md +8 -0
  73. package/.codex/skills/genesis-docs-automation/SKILL.md +1003 -0
  74. package/.codex/skills/genesis-docs-automation/agents/openai.yaml +7 -0
  75. package/.codex/skills/genesis-docs-automation/checklists/docs-validation.md +359 -0
  76. package/.codex/skills/genesis-docs-automation/checklists/spec-alignment.md +312 -0
  77. package/.codex/skills/genesis-docs-automation/examples/example.md +59 -0
  78. package/.codex/skills/genesis-docs-automation/observability/docs-tracking.md +382 -0
  79. package/.codex/skills/genesis-docs-automation/playbooks/auto-update-flow.md +851 -0
  80. package/.codex/skills/genesis-docs-automation/playbooks/changelog-generation.md +491 -0
  81. package/.codex/skills/genesis-docs-automation/templates/changelog-entry-template.md +187 -0
  82. package/.codex/skills/genesis-docs-automation/templates/handoff-template.md +297 -0
  83. package/.codex/skills/genesis-harness/SKILL.md +1418 -0
  84. package/.codex/skills/genesis-harness/agents/openai.yaml +9 -0
  85. package/.codex/skills/genesis-harness/checklists/bug-fix-qa.md +169 -0
  86. package/.codex/skills/genesis-harness/checklists/checklist.md +10 -0
  87. package/.codex/skills/genesis-harness/checklists/new-feature-qa.md +157 -0
  88. package/.codex/skills/genesis-harness/checklists/refactor-qa.md +216 -0
  89. package/.codex/skills/genesis-harness/checklists/requirements-validation.md +211 -0
  90. package/.codex/skills/genesis-harness/examples/example.md +4 -0
  91. package/.codex/skills/genesis-harness/resources/change-impact-matrix-template.md +204 -0
  92. package/.codex/skills/genesis-harness/resources/foundation-phase-template.md +131 -0
  93. package/.codex/skills/genesis-harness/resources/phase-00-foundation-template.md +76 -0
  94. package/.codex/skills/genesis-harness/resources/post-implementation-guide.md +347 -0
  95. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-architecture-boundaries.sh +23 -23
  96. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-docs-sync.sh +24 -24
  97. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-no-debug-logs.sh +21 -21
  98. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-required-planning-files.sh +46 -46
  99. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-spec-changelog.sh +24 -24
  100. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-task-tracking.sh +25 -25
  101. package/.codex/skills/genesis-harness/scripts/compact-context.sh +54 -0
  102. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/create-adr.sh +74 -74
  103. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/create-bug.sh +160 -160
  104. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/create-feature.sh +217 -217
  105. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/detect-stack.sh +26 -26
  106. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/init-planning.sh +750 -719
  107. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/list-changed-files.sh +12 -12
  108. package/.codex/skills/genesis-harness/scripts/offload-log.sh +72 -0
  109. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/run-verification.sh +47 -47
  110. package/.codex/skills/genesis-harness/scripts/run-verify-loop.sh +75 -0
  111. package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/update-state.sh +33 -33
  112. package/.codex/skills/genesis-harness/templates/harness-workflow-template.md +10 -0
  113. package/.codex/skills/genesis-harness-engineering/SKILL.md +159 -0
  114. package/.codex/skills/genesis-harness-engineering/agents/openai.yaml +7 -0
  115. package/.codex/skills/genesis-harness-engineering/checklists/checklist.md +48 -0
  116. package/.codex/skills/genesis-harness-engineering/examples/example.md +57 -0
  117. package/.codex/skills/genesis-harness-engineering/playbooks/harness-evolution.md +99 -0
  118. package/.codex/skills/genesis-harness-engineering/templates/harness-change-template.md +37 -0
  119. package/.codex/skills/genesis-new-design/SKILL.md +95 -0
  120. package/.codex/skills/genesis-new-design/agents/openai.yaml +4 -0
  121. package/.codex/skills/genesis-new-design/checklists/checklist.md +8 -0
  122. package/.codex/skills/genesis-new-design/examples/example.md +4 -0
  123. package/.codex/skills/genesis-new-design/templates/new-design-template.md +9 -0
  124. package/.codex/skills/genesis-observability-automation/SKILL.md +382 -0
  125. package/.codex/skills/genesis-observability-automation/agents/openai.yaml +7 -0
  126. package/.codex/skills/genesis-observability-automation/examples/example.md +86 -0
  127. package/.codex/skills/genesis-performance-profiling/SKILL.md +510 -0
  128. package/.codex/skills/genesis-performance-profiling/agents/openai.yaml +6 -0
  129. package/.codex/skills/genesis-performance-profiling/checklists/optimization-verification.md +199 -0
  130. package/.codex/skills/genesis-performance-profiling/checklists/performance-baseline.md +183 -0
  131. package/.codex/skills/genesis-performance-profiling/examples/example.md +234 -0
  132. package/.codex/skills/genesis-performance-profiling/observability/performance-tracking.md +202 -0
  133. package/.codex/skills/genesis-performance-profiling/playbooks/load-testing-orchestration.md +593 -0
  134. package/.codex/skills/genesis-performance-profiling/playbooks/profiling-playbook.md +601 -0
  135. package/.codex/skills/genesis-performance-profiling/templates/load-test-config-template.md +428 -0
  136. package/.codex/skills/genesis-performance-profiling/templates/performance-report-template.md +238 -0
  137. package/.codex/skills/genesis-pipeline-orchestration/SKILL.md +46 -0
  138. package/.codex/skills/genesis-pipeline-orchestration/agents/openai.yaml +7 -0
  139. package/.codex/skills/genesis-pipeline-orchestration/checklists/checklist.md +12 -0
  140. package/.codex/skills/genesis-pipeline-orchestration/examples/example.md +4 -0
  141. package/.codex/skills/genesis-pipeline-orchestration/templates/orchestration-template.md +12 -0
  142. package/.codex/skills/genesis-planning/SKILL.md +46 -0
  143. package/.codex/skills/genesis-planning/agents/openai.yaml +7 -0
  144. package/.codex/skills/genesis-planning/checklists/checklist.md +8 -0
  145. package/.codex/skills/genesis-planning/examples/example.md +4 -0
  146. package/.codex/skills/genesis-planning/templates/plan-template.md +11 -0
  147. package/.codex/skills/genesis-release/SKILL.md +46 -0
  148. package/.codex/skills/genesis-release/agents/openai.yaml +7 -0
  149. package/.codex/skills/genesis-release/checklists/checklist.md +8 -0
  150. package/.codex/skills/genesis-release/examples/example.md +4 -0
  151. package/.codex/skills/genesis-release/templates/release-checklist-template.md +9 -0
  152. package/.codex/skills/genesis-release-orchestration/SKILL.md +653 -0
  153. package/.codex/skills/genesis-release-orchestration/agents/openai.yaml +7 -0
  154. package/.codex/skills/genesis-release-orchestration/checklists/post-deployment-verification.md +274 -0
  155. package/.codex/skills/genesis-release-orchestration/checklists/pre-release-validation.md +220 -0
  156. package/.codex/skills/genesis-release-orchestration/examples/example.md +78 -0
  157. package/.codex/skills/genesis-release-orchestration/observability/release-tracking.md +253 -0
  158. package/.codex/skills/genesis-release-orchestration/playbooks/canary-deployment-orchestration.md +472 -0
  159. package/.codex/skills/genesis-release-orchestration/playbooks/semantic-versioning-automation.md +494 -0
  160. package/.codex/skills/genesis-release-orchestration/templates/deployment-strategy-template.md +303 -0
  161. package/.codex/skills/genesis-release-orchestration/templates/release-runbook-template.md +420 -0
  162. package/.codex/skills/genesis-research/SKILL.md +46 -0
  163. package/.codex/skills/genesis-research/agents/openai.yaml +7 -0
  164. package/.codex/skills/genesis-research/checklists/checklist.md +7 -0
  165. package/.codex/skills/genesis-research/examples/example.md +4 -0
  166. package/.codex/skills/genesis-research/templates/research-note-template.md +9 -0
  167. package/.codex/skills/genesis-research-first/SKILL.md +237 -0
  168. package/.codex/skills/genesis-research-first/agents/openai.yaml +7 -0
  169. package/.codex/skills/genesis-research-first/examples/example.md +85 -0
  170. package/.codex/skills/genesis-spec-propagation/SKILL.md +534 -0
  171. package/.codex/skills/genesis-spec-propagation/agents/openai.yaml +7 -0
  172. package/.codex/skills/genesis-spec-propagation/checklists/phase-update-verification.md +384 -0
  173. package/.codex/skills/genesis-spec-propagation/checklists/spec-change-detection.md +257 -0
  174. package/.codex/skills/genesis-spec-propagation/examples/example.md +63 -0
  175. package/.codex/skills/genesis-spec-propagation/observability/propagation-tracking.md +373 -0
  176. package/.codex/skills/genesis-spec-propagation/playbooks/breaking-change-propagation.md +692 -0
  177. package/.codex/skills/genesis-spec-propagation/playbooks/feature-change-propagation.md +434 -0
  178. package/.codex/skills/genesis-spec-propagation/templates/migration-guide-template.md +407 -0
  179. package/.codex/skills/genesis-upgrade-design/SKILL.md +97 -0
  180. package/.codex/skills/genesis-upgrade-design/agents/openai.yaml +4 -0
  181. package/.codex/skills/genesis-upgrade-design/checklists/checklist.md +8 -0
  182. package/.codex/skills/genesis-upgrade-design/examples/example.md +4 -0
  183. package/.codex/skills/genesis-upgrade-design/templates/upgrade-design-template.md +9 -0
  184. package/.codex/skills/spec-impact-engine/SKILL.md +504 -0
  185. package/.codex/skills/spec-impact-engine/agents/openai.yaml +7 -0
  186. package/.codex/skills/spec-impact-engine/detect-spec-changes.sh +262 -0
  187. package/.codex/skills/spec-impact-engine/examples/example.md +98 -0
  188. package/.codex/skills/spec-impact-engine/templates/impact-report.md +248 -0
  189. package/.codex/skills/spec-impact-engine/templates/migration-guide.md +223 -0
  190. package/.codex/skills/ui-ux-test-skill/SKILL.md +46 -0
  191. package/.codex/skills/ui-ux-test-skill/agents/openai.yaml +7 -0
  192. package/.codex/skills/ui-ux-test-skill/checklists/checklist.md +8 -0
  193. package/.codex/skills/ui-ux-test-skill/examples/example.md +4 -0
  194. package/.codex/skills/ui-ux-test-skill/templates/playwright-test-template.md +4 -0
  195. package/.codex-plugin/plugin.json +13 -11
  196. package/README.EN.md +719 -0
  197. package/README.VI.md +712 -0
  198. package/README.md +318 -181
  199. package/VERSION +1 -1
  200. package/bin/genesis-harness.js +133 -79
  201. package/contracts/agents/CharacterBibleAgent/error.json +1 -0
  202. package/contracts/agents/CharacterBibleAgent/example.json +1 -0
  203. package/contracts/agents/CharacterBibleAgent/request.json +1 -0
  204. package/contracts/agents/CharacterBibleAgent/response.json +1 -0
  205. package/contracts/agents/CharacterBibleAgent/schema.json +1 -0
  206. package/contracts/agents/ImageGenerationAgent/error.json +1 -0
  207. package/contracts/agents/ImageGenerationAgent/example.json +1 -0
  208. package/contracts/agents/ImageGenerationAgent/request.json +1 -0
  209. package/contracts/agents/ImageGenerationAgent/response.json +1 -0
  210. package/contracts/agents/ImageGenerationAgent/schema.json +1 -0
  211. package/contracts/agents/PipelineOrchestrator/error.json +1 -0
  212. package/contracts/agents/PipelineOrchestrator/example.json +1 -0
  213. package/contracts/agents/PipelineOrchestrator/request.json +1 -0
  214. package/contracts/agents/PipelineOrchestrator/response.json +1 -0
  215. package/contracts/agents/PipelineOrchestrator/schema.json +1 -0
  216. package/contracts/agents/PromptGenerationAgent/error.json +1 -0
  217. package/contracts/agents/PromptGenerationAgent/example.json +1 -0
  218. package/contracts/agents/PromptGenerationAgent/request.json +1 -0
  219. package/contracts/agents/PromptGenerationAgent/response.json +1 -0
  220. package/contracts/agents/PromptGenerationAgent/schema.json +1 -0
  221. package/contracts/agents/RenderAgent/error.json +1 -0
  222. package/contracts/agents/RenderAgent/example.json +1 -0
  223. package/contracts/agents/RenderAgent/request.json +1 -0
  224. package/contracts/agents/RenderAgent/response.json +1 -0
  225. package/contracts/agents/RenderAgent/schema.json +1 -0
  226. package/contracts/agents/ScenePlanningAgent/error.json +1 -0
  227. package/contracts/agents/ScenePlanningAgent/example.json +1 -0
  228. package/contracts/agents/ScenePlanningAgent/request.json +1 -0
  229. package/contracts/agents/ScenePlanningAgent/response.json +1 -0
  230. package/contracts/agents/ScenePlanningAgent/schema.json +1 -0
  231. package/contracts/agents/ScreenplayAgent/error.json +1 -0
  232. package/contracts/agents/ScreenplayAgent/example.json +1 -0
  233. package/contracts/agents/ScreenplayAgent/request.json +1 -0
  234. package/contracts/agents/ScreenplayAgent/response.json +1 -0
  235. package/contracts/agents/ScreenplayAgent/schema.json +1 -0
  236. package/contracts/agents/StoryAnalysisAgent/error.json +1 -0
  237. package/contracts/agents/StoryAnalysisAgent/example.json +1 -0
  238. package/contracts/agents/StoryAnalysisAgent/request.json +1 -0
  239. package/contracts/agents/StoryAnalysisAgent/response.json +1 -0
  240. package/contracts/agents/StoryAnalysisAgent/schema.json +1 -0
  241. package/contracts/agents/SubtitleGenerationAgent/error.json +1 -0
  242. package/contracts/agents/SubtitleGenerationAgent/example.json +1 -0
  243. package/contracts/agents/SubtitleGenerationAgent/request.json +1 -0
  244. package/contracts/agents/SubtitleGenerationAgent/response.json +1 -0
  245. package/contracts/agents/SubtitleGenerationAgent/schema.json +1 -0
  246. package/contracts/agents/VoiceGenerationAgent/error.json +1 -0
  247. package/contracts/agents/VoiceGenerationAgent/example.json +1 -0
  248. package/contracts/agents/VoiceGenerationAgent/request.json +1 -0
  249. package/contracts/agents/VoiceGenerationAgent/response.json +1 -0
  250. package/contracts/agents/VoiceGenerationAgent/schema.json +1 -0
  251. package/contracts/api/README.md +4 -0
  252. package/contracts/api/endpoint-template/error.json +7 -0
  253. package/contracts/api/endpoint-template/example.json +11 -0
  254. package/contracts/api/endpoint-template/request.json +7 -0
  255. package/contracts/api/endpoint-template/response.json +6 -0
  256. package/contracts/api/endpoint-template/schema.json +9 -0
  257. package/contracts/events/README.md +4 -0
  258. package/contracts/events/event-template/error.json +4 -0
  259. package/contracts/events/event-template/example.json +6 -0
  260. package/contracts/events/event-template/request.json +6 -0
  261. package/contracts/events/event-template/response.json +3 -0
  262. package/contracts/events/event-template/schema.json +8 -0
  263. package/contracts/ui/README.md +4 -0
  264. package/contracts/ui/screen-template/error.json +4 -0
  265. package/contracts/ui/screen-template/example.json +7 -0
  266. package/contracts/ui/screen-template/request.json +4 -0
  267. package/contracts/ui/screen-template/response.json +4 -0
  268. package/contracts/ui/screen-template/schema.json +8 -0
  269. package/fixtures/agents/agent-fixture-template.md +14 -0
  270. package/fixtures/api/api-fixture-template.md +14 -0
  271. package/fixtures/images/image-fixture-template.md +14 -0
  272. package/fixtures/pipeline/pipeline-fixture-template.md +14 -0
  273. package/fixtures/render/render-fixture-template.md +14 -0
  274. package/fixtures/tts/tts-fixture-template.md +14 -0
  275. package/fixtures/videos/video-fixture-template.md +14 -0
  276. package/observability/agent-runs/agent-run-template.md +22 -0
  277. package/observability/decision-logs/decision-log-template.md +18 -0
  278. package/observability/failures/failure-template.md +18 -0
  279. package/package.json +8 -2
  280. package/playwright/e2e/e2e-template.md +4 -0
  281. package/playwright/fixtures/ui-fixture-template.md +4 -0
  282. package/playwright/smoke/smoke-template.md +4 -0
  283. package/playwright/visual/visual-regression-template.md +4 -0
  284. package/scripts/README.md +342 -0
  285. package/scripts/compact-context.sh +54 -0
  286. package/scripts/detect-changes.sh +152 -0
  287. package/scripts/install.sh +103 -69
  288. package/scripts/offload-log.sh +72 -0
  289. package/scripts/run-evals.sh +118 -52
  290. package/scripts/run-verify-loop.sh +75 -0
  291. package/scripts/uninstall.sh +81 -52
  292. package/scripts/verify.sh +380 -109
  293. package/tests/contracts/contract-template.test.md +10 -0
  294. package/tests/fixtures/fixture-index.md +4 -0
  295. package/tests/integration/integration-template.test.md +4 -0
  296. package/tests/unit/unit-template.test.md +4 -0
  297. package/.codex/skills/project-genesis-harness/SKILL.md +0 -727
  298. package/.codex/skills/project-genesis-harness/agents/openai.yaml +0 -9
  299. /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/planning-schema.md +0 -0
  300. /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/quality-rubric.md +0 -0
  301. /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/research-rubric.md +0 -0
  302. /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/workflows.md +0 -0
  303. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/agents-template.md +0 -0
  304. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/api-docs-template.md +0 -0
  305. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/architecture-template.md +0 -0
  306. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/audit-template.md +0 -0
  307. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/bug-template.md +0 -0
  308. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/check-template.md +0 -0
  309. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/conventions-template.md +0 -0
  310. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/decision-template.md +0 -0
  311. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/design-template.md +0 -0
  312. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/escalation-template.md +0 -0
  313. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/feature-template.md +0 -0
  314. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/integrations-template.md +0 -0
  315. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/journeys-template.md +0 -0
  316. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/lessons-learned-template.md +0 -0
  317. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/observability-template.md +0 -0
  318. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/phase-template.md +0 -0
  319. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/pitfalls-template.md +0 -0
  320. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/planning-tree-template.md +0 -0
  321. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/project-template.md +0 -0
  322. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/quality-score-template.md +0 -0
  323. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/requirements-template.md +0 -0
  324. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/research-template.md +0 -0
  325. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/review-template.md +0 -0
  326. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/spec-changelog-template.md +0 -0
  327. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/stack-template.md +0 -0
  328. /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/verification-template.md +0 -0
@@ -0,0 +1,434 @@
1
+ # Feature Change Propagation Playbook
2
+
3
+ ## Overview
4
+
5
+ **Scenario**: New optional field added to API response (or new endpoint, new enum value, etc.)
6
+
7
+ **Complexity**: MEDIUM (mostly automatic, some manual review)
8
+
9
+ **Time**: 30-60 minutes
10
+
11
+ **Manual Steps**: Low (mainly review & validation)
12
+
13
+ ---
14
+
15
+ ## Example: Adding New Optional Field
16
+
17
+ Suppose API response gets new field `avatarUrl`:
18
+
19
+ ```diff
20
+ // OLD API response
21
+ {
22
+ "id": 123,
23
+ "name": "John Doe"
24
+ }
25
+
26
+ // NEW API response
27
+ {
28
+ "id": 123,
29
+ "name": "John Doe",
30
+ + "avatarUrl": "https://example.com/avatar.jpg"
31
+ }
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Step 1: Understand the Feature (5 min)
37
+
38
+ ### Questions to Answer
39
+
40
+ 1. **Why added?** Is it for new UI feature, performance, or future use?
41
+ 2. **Optional or required?** Should consumers always expect it?
42
+ 3. **Data type**: What is the structure and constraints?
43
+ 4. **Deprecates anything?** Are we replacing an old field?
44
+ 5. **Performance impact?** Does fetching this field slow down API?
45
+ 6. **Backward compatibility**: Will old clients still work without it?
46
+
47
+ ### Record Decision
48
+
49
+ ```markdown
50
+ ## Feature: Add avatarUrl to User Response
51
+
52
+ **Why**: New user profile UI needs avatar display
53
+
54
+ **Field Details**:
55
+ - Name: avatarUrl
56
+ - Type: string (URL)
57
+ - Optional: Yes (default to null if user has no avatar)
58
+ - Constraints: Valid URL format, max 2048 chars
59
+ - Deprecates: None
60
+ - Performance: No additional DB query needed
61
+
62
+ **Backward Compatibility**: Old clients will simply not use field (ignore unknown properties)
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Step 2: Update Phase 1 - API Contract (ALREADY DONE)
68
+
69
+ This is the original spec change. Verify it's complete:
70
+
71
+ ```json
72
+ {
73
+ "type": "object",
74
+ "properties": {
75
+ "id": { "type": "integer" },
76
+ "name": { "type": "string" },
77
+ "avatarUrl": {
78
+ "type": ["string", "null"],
79
+ "format": "uri",
80
+ "description": "URL to user's avatar image",
81
+ "maxLength": 2048
82
+ }
83
+ },
84
+ "required": ["id", "name"]
85
+ }
86
+ ```
87
+
88
+ ✅ Contract has new field as optional
89
+
90
+ ---
91
+
92
+ ## Step 3: Phase 2 - Update Tests (15 min)
93
+
94
+ ### 3a. Update Mock Data
95
+
96
+ Find test mocks: `tests/fixtures/user-mocks.js`
97
+
98
+ ```javascript
99
+ // BEFORE
100
+ const mockUsers = [
101
+ { id: 1, name: 'Alice' },
102
+ { id: 2, name: 'Bob' },
103
+ { id: 3, name: 'Charlie' }
104
+ ];
105
+
106
+ // AFTER - Add avatarUrl to some mocks (realistic data)
107
+ const mockUsers = [
108
+ {
109
+ id: 1,
110
+ name: 'Alice',
111
+ avatarUrl: 'https://example.com/avatars/alice.jpg'
112
+ },
113
+ {
114
+ id: 2,
115
+ name: 'Bob',
116
+ avatarUrl: null // No avatar
117
+ },
118
+ {
119
+ id: 3,
120
+ name: 'Charlie',
121
+ avatarUrl: 'https://example.com/avatars/charlie.jpg'
122
+ }
123
+ ];
124
+ ```
125
+
126
+ **Tip**: Include both cases (with URL and null) for realistic testing.
127
+
128
+ ### 3b. Add New Test Cases
129
+
130
+ Add `tests/api.test.js`:
131
+
132
+ ```javascript
133
+ describe('User API - avatarUrl field', () => {
134
+ test('should include avatarUrl in user response', async () => {
135
+ const response = await api.getUser(1);
136
+ expect(response).toHaveProperty('avatarUrl');
137
+ expect(response.avatarUrl).toMatch(/^https:\/\//);
138
+ });
139
+
140
+ test('should handle null avatarUrl for users without avatar', async () => {
141
+ const response = await api.getUser(2);
142
+ expect(response).toHaveProperty('avatarUrl');
143
+ expect(response.avatarUrl).toBeNull();
144
+ });
145
+
146
+ test('should validate avatarUrl format', async () => {
147
+ const response = await api.getUser(1);
148
+ if (response.avatarUrl) {
149
+ expect(response.avatarUrl).toMatch(/^https?:\/\/.+/);
150
+ }
151
+ });
152
+ });
153
+ ```
154
+
155
+ ### 3c. Run Tests
156
+
157
+ ```bash
158
+ npm test -- tests/api.test.js
159
+
160
+ # Expected: All tests pass ✅
161
+ ```
162
+
163
+ ---
164
+
165
+ ## Step 4: Phase 3 - Update Backend Implementation (15 min)
166
+
167
+ ### 4a. Update API Response Builder
168
+
169
+ Find handler: `src/handlers/user.handler.js`
170
+
171
+ ```javascript
172
+ // BEFORE
173
+ async function getUser(req, res) {
174
+ const user = await db.users.findById(req.params.id);
175
+ return res.json({
176
+ id: user.id,
177
+ name: user.name
178
+ });
179
+ }
180
+
181
+ // AFTER - Include avatarUrl
182
+ async function getUser(req, res) {
183
+ const user = await db.users.findById(req.params.id);
184
+ return res.json({
185
+ id: user.id,
186
+ name: user.name,
187
+ avatarUrl: user.avatar_url || null // Map DB field
188
+ });
189
+ }
190
+ ```
191
+
192
+ ### 4b. Update Database Query (if needed)
193
+
194
+ If `avatar_url` column doesn't exist yet:
195
+
196
+ ```sql
197
+ -- Migration: add_user_avatar_url.sql
198
+ ALTER TABLE users ADD COLUMN avatar_url VARCHAR(2048) DEFAULT NULL;
199
+ ```
200
+
201
+ ### 4c. Update Contract Docstring
202
+
203
+ ```javascript
204
+ /**
205
+ * GET /api/users/:id
206
+ *
207
+ * Returns user data.
208
+ *
209
+ * NEW (v1.1): Field 'avatarUrl' added - optional URL to user's avatar
210
+ *
211
+ * Response: { id, name, avatarUrl? }
212
+ *
213
+ * Example:
214
+ * {
215
+ * "id": 1,
216
+ * "name": "Alice",
217
+ * "avatarUrl": "https://example.com/avatars/alice.jpg"
218
+ * }
219
+ */
220
+ ```
221
+
222
+ ### 4d. Validate Contract
223
+
224
+ ```bash
225
+ npm run validate:contracts
226
+
227
+ # Expected: Valid ✅
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Step 5: Phase 4 - Update Client SDK (10 min)
233
+
234
+ ### 5a. Update Type Definitions
235
+
236
+ File: `types/api.ts`
237
+
238
+ ```typescript
239
+ // BEFORE
240
+ interface User {
241
+ id: number;
242
+ name: string;
243
+ }
244
+
245
+ // AFTER
246
+ interface User {
247
+ id: number;
248
+ name: string;
249
+ avatarUrl?: string | null; // Optional URL to avatar
250
+ }
251
+ ```
252
+
253
+ ### 5b. Update Client Method (if needed)
254
+
255
+ ```typescript
256
+ // Usually no change to method signature, just return type updated
257
+
258
+ async function fetchUser(id: number): Promise<User> {
259
+ const response = await fetch(`/api/users/${id}`);
260
+ return response.json(); // Now includes avatarUrl
261
+ }
262
+ ```
263
+
264
+ ### 5c. Type Check
265
+
266
+ ```bash
267
+ npm run tsc --noEmit
268
+
269
+ # Expected: No type errors ✅
270
+ ```
271
+
272
+ ---
273
+
274
+ ## Step 6: Phase 5 - Update E2E Tests (10 min)
275
+
276
+ ### 6a. Add Scenario
277
+
278
+ File: `playwright/e2e/user.spec.ts`
279
+
280
+ ```javascript
281
+ test('should display user avatar when available', async ({ page }) => {
282
+ await page.goto('/users/1');
283
+
284
+ // New scenario: avatar displays if avatarUrl present
285
+ const avatar = page.locator('[data-test="user-avatar"]');
286
+ await expect(avatar).toBeVisible();
287
+ await expect(avatar).toHaveAttribute('src', /^https:\/\//);
288
+ });
289
+
290
+ test('should hide avatar placeholder when user has no avatar', async ({ page }) => {
291
+ await page.goto('/users/2');
292
+
293
+ // User 2 has null avatarUrl
294
+ const avatar = page.locator('[data-test="user-avatar"]');
295
+ await expect(avatar).not.toBeVisible();
296
+ });
297
+ ```
298
+
299
+ ### 6b. Run E2E Tests
300
+
301
+ ```bash
302
+ npm run test:e2e -- user.spec.ts
303
+
304
+ # Expected: All pass ✅
305
+ ```
306
+
307
+ ---
308
+
309
+ ## Step 7: Validation (5 min)
310
+
311
+ ### 7a. Syntax Check
312
+
313
+ ```bash
314
+ npm run lint
315
+
316
+ # All files pass linting? ✅
317
+ ```
318
+
319
+ ### 7b. Integration Test
320
+
321
+ ```bash
322
+ npm run test
323
+
324
+ # Run all tests together
325
+ # Phase 2 + Phase 3 + Phase 4 + Phase 5 should all pass ✅
326
+ ```
327
+
328
+ ### 7c. Cross-Phase Consistency
329
+
330
+ Verify alignment:
331
+
332
+ ```
333
+ Phase 1: Contract includes avatarUrl ✓
334
+ Phase 2: Tests check for avatarUrl ✓
335
+ Phase 3: API returns avatarUrl ✓
336
+ Phase 4: SDK types include avatarUrl ✓
337
+ Phase 5: E2E tests verify avatarUrl display ✓
338
+ ```
339
+
340
+ ---
341
+
342
+ ## Step 8: Documentation (5 min)
343
+
344
+ ### 8a. Update SPEC_CHANGELOG.md
345
+
346
+ ```markdown
347
+ - 2026-05-31T10:30:00Z | FEATURE | Added avatarUrl to User response
348
+ New optional field for user profile UI improvements
349
+ Auto-updated phases: 2, 3, 4, 5
350
+ Impact: Clients can optionally display user avatars
351
+ ```
352
+
353
+ ### 8b. Update CURRENT_STATE.md
354
+
355
+ ```markdown
356
+ ## Current Phase State
357
+
358
+ - Phase 1 (Contracts): User API contract v1.1 with avatarUrl ✅
359
+ - Phase 2 (Tests): 3 new tests for avatarUrl scenarios ✅
360
+ - Phase 3 (Implementation): Handler returns avatarUrl ✅
361
+ - Phase 4 (SDK): Types updated, avatarUrl optional ✅
362
+ - Phase 5 (E2E): 2 new E2E tests for avatar display ✅
363
+ ```
364
+
365
+ ---
366
+
367
+ ## Step 9: Sign-Off
368
+
369
+ - [ ] Phase 2: Tests pass ✅
370
+ - [ ] Phase 3: Handler returns avatarUrl ✅
371
+ - [ ] Phase 4: Types updated ✅
372
+ - [ ] Phase 5: E2E tests pass ✅
373
+ - [ ] All tests green: `npm test` ✅
374
+ - [ ] SPEC_CHANGELOG.md: Updated ✅
375
+ - [ ] Ready for commit ✅
376
+
377
+ ---
378
+
379
+ ## Common Issues & Recovery
380
+
381
+ ### Issue: E2E Tests Can't Find Avatar Element
382
+
383
+ **Cause**: UI doesn't yet render avatar for new field
384
+
385
+ **Recovery**:
386
+ 1. Create feature branch: `git checkout -b feat/user-avatar-ui`
387
+ 2. Implement UI changes to display avatarUrl
388
+ 3. Run E2E tests again: `npm run test:e2e`
389
+ 4. Merge UI changes back to main branch
390
+
391
+ ### Issue: Phase 3 Doesn't Have avatar_url Column
392
+
393
+ **Cause**: Database migration not run
394
+
395
+ **Recovery**:
396
+ 1. Run migrations: `npm run migrate`
397
+ 2. Verify column exists: `SELECT * FROM users LIMIT 1;`
398
+ 3. Re-run Phase 3 tests
399
+
400
+ ### Issue: Client SDK Still Can't Find avatarUrl
401
+
402
+ **Cause**: Stale cache or old test data
403
+
404
+ **Recovery**:
405
+ 1. Clear cache: `rm -rf node_modules/.cache`
406
+ 2. Reinstall: `npm install`
407
+ 3. Re-run type check: `npm run tsc --noEmit`
408
+
409
+ ---
410
+
411
+ ## Time Breakdown
412
+
413
+ | Phase | Task | Time |
414
+ |-------|------|------|
415
+ | 1 | Understand feature | 5 min |
416
+ | 2 | Update tests | 15 min |
417
+ | 3 | Update API handler | 15 min |
418
+ | 4 | Update SDK types | 10 min |
419
+ | 5 | Update E2E tests | 10 min |
420
+ | — | Validation | 5 min |
421
+ | **Total** | | **60 min** |
422
+
423
+ ---
424
+
425
+ ## Success Criteria
426
+
427
+ ✅ All tests pass (Phase 2-5)
428
+ ✅ Types are consistent (Phase 4 ⊂ Phase 3 API)
429
+ ✅ E2E scenarios reference avatarUrl correctly
430
+ ✅ SPEC_CHANGELOG.md entry added
431
+ ✅ No manual touchups needed
432
+ ✅ Backward compatible (old clients work fine)
433
+ ✅ Ready for merge to main
434
+