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.
- package/.codebase/API_CONTRACTS.md +12 -0
- package/.codebase/ARCHITECTURE.md +6 -0
- package/.codebase/ARCHITECTURE_REVIEW_COMPLETE.md +216 -0
- package/.codebase/CURRENT_STATE.md +8 -0
- package/.codebase/DEPENDENCY_GRAPH.md +14 -0
- package/.codebase/DOMAIN_MODELS.md +10 -0
- package/.codebase/EVOLUTION_PLAN.md +35 -0
- package/.codebase/FILE_NAMING_CLARIFICATION.md +161 -0
- package/.codebase/HARNESS_COMPLETENESS_AUDIT.md +613 -0
- package/.codebase/IMPLEMENTATION_COMPLETE.md +429 -0
- package/.codebase/IMPLEMENTATION_HANDOFF.md +351 -0
- package/.codebase/IMPROVEMENTS_SUMMARY.md +419 -0
- package/.codebase/KNOWN_PROBLEMS.md +6 -0
- package/.codebase/MODULE_INDEX.md +13 -0
- package/.codebase/PHASE3_SKILLS_NAMING_COMPLETE.md +292 -0
- package/.codebase/PHASE_DEPENDENCY_MAP.md +486 -0
- package/.codebase/PIPELINE_FLOW.md +14 -0
- package/.codebase/QUICK_START_SPEC_IMPACT.md +456 -0
- package/.codebase/README.md +139 -0
- package/.codebase/RECOVERY_POINTS.md +438 -0
- package/.codebase/TEST_MATRIX.md +11 -0
- package/.codebase/UI_ROUTES.md +4 -0
- package/.codebase/context/backend-summary.md +4 -0
- package/.codebase/context/frontend-summary.md +4 -0
- package/.codebase/context/pipeline-summary.md +4 -0
- package/.codebase/context/providers-summary.md +4 -0
- package/.codebase/context/render-summary.md +4 -0
- package/.codebase/context/tests-summary.md +4 -0
- package/.codex/skills/genesis-ai-provider/SKILL.md +46 -0
- package/.codex/skills/genesis-ai-provider/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-ai-provider/checklists/checklist.md +9 -0
- package/.codex/skills/genesis-ai-provider/examples/example.md +4 -0
- package/.codex/skills/genesis-ai-provider/templates/provider-contract-template.md +9 -0
- package/.codex/skills/genesis-api-contract/SKILL.md +46 -0
- package/.codex/skills/genesis-api-contract/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-api-contract/checklists/checklist.md +8 -0
- package/.codex/skills/genesis-api-contract/examples/example.md +4 -0
- package/.codex/skills/genesis-api-contract/templates/api-contract-template.md +4 -0
- package/.codex/skills/genesis-api-sync/SKILL.md +354 -0
- package/.codex/skills/genesis-api-sync/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-api-sync/checklists/api-sync-checklist.md +101 -0
- package/.codex/skills/genesis-api-sync/examples/example.md +68 -0
- package/.codex/skills/genesis-api-sync/templates/api-change-template.md +257 -0
- package/.codex/skills/genesis-architecture/SKILL.md +46 -0
- package/.codex/skills/genesis-architecture/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-architecture/checklists/checklist.md +8 -0
- package/.codex/skills/genesis-architecture/examples/example.md +4 -0
- package/.codex/skills/genesis-architecture/templates/architecture-decision-template.md +14 -0
- package/.codex/skills/genesis-codebase-map/SKILL.md +46 -0
- package/.codex/skills/genesis-codebase-map/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-codebase-map/checklists/checklist.md +7 -0
- package/.codex/skills/genesis-codebase-map/examples/example.md +4 -0
- package/.codex/skills/genesis-codebase-map/templates/map-update-template.md +8 -0
- package/.codex/skills/genesis-debug-guide/SKILL.md +479 -0
- package/.codex/skills/genesis-debug-guide/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-debug-guide/checklists/flaky-test-investigation.md +339 -0
- package/.codex/skills/genesis-debug-guide/checklists/production-bug-debug.md +210 -0
- package/.codex/skills/genesis-debug-guide/checklists/test-failure-debug.md +158 -0
- package/.codex/skills/genesis-debug-guide/examples/example.md +48 -0
- package/.codex/skills/genesis-debug-guide/observability/debug-commands.md +365 -0
- package/.codex/skills/genesis-debug-guide/playbooks/unit-test-failures.md +289 -0
- package/.codex/skills/genesis-debug-guide/templates/debug-investigation-log.md +288 -0
- package/.codex/skills/genesis-design-spec/SKILL.md +46 -0
- package/.codex/skills/genesis-design-spec/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-design-spec/checklists/checklist.md +7 -0
- package/.codex/skills/genesis-design-spec/examples/example.md +4 -0
- package/.codex/skills/genesis-design-spec/templates/design-spec-template.md +9 -0
- package/.codex/skills/genesis-docs/SKILL.md +46 -0
- package/.codex/skills/genesis-docs/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-docs/checklists/checklist.md +7 -0
- package/.codex/skills/genesis-docs/examples/example.md +4 -0
- package/.codex/skills/genesis-docs/templates/docs-update-template.md +8 -0
- package/.codex/skills/genesis-docs-automation/SKILL.md +1003 -0
- package/.codex/skills/genesis-docs-automation/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-docs-automation/checklists/docs-validation.md +359 -0
- package/.codex/skills/genesis-docs-automation/checklists/spec-alignment.md +312 -0
- package/.codex/skills/genesis-docs-automation/examples/example.md +59 -0
- package/.codex/skills/genesis-docs-automation/observability/docs-tracking.md +382 -0
- package/.codex/skills/genesis-docs-automation/playbooks/auto-update-flow.md +851 -0
- package/.codex/skills/genesis-docs-automation/playbooks/changelog-generation.md +491 -0
- package/.codex/skills/genesis-docs-automation/templates/changelog-entry-template.md +187 -0
- package/.codex/skills/genesis-docs-automation/templates/handoff-template.md +297 -0
- package/.codex/skills/genesis-harness/SKILL.md +1418 -0
- package/.codex/skills/genesis-harness/agents/openai.yaml +9 -0
- package/.codex/skills/genesis-harness/checklists/bug-fix-qa.md +169 -0
- package/.codex/skills/genesis-harness/checklists/checklist.md +10 -0
- package/.codex/skills/genesis-harness/checklists/new-feature-qa.md +157 -0
- package/.codex/skills/genesis-harness/checklists/refactor-qa.md +216 -0
- package/.codex/skills/genesis-harness/checklists/requirements-validation.md +211 -0
- package/.codex/skills/genesis-harness/examples/example.md +4 -0
- package/.codex/skills/genesis-harness/resources/change-impact-matrix-template.md +204 -0
- package/.codex/skills/genesis-harness/resources/foundation-phase-template.md +131 -0
- package/.codex/skills/genesis-harness/resources/phase-00-foundation-template.md +76 -0
- package/.codex/skills/genesis-harness/resources/post-implementation-guide.md +347 -0
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-architecture-boundaries.sh +23 -23
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-docs-sync.sh +24 -24
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-no-debug-logs.sh +21 -21
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-required-planning-files.sh +46 -46
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-spec-changelog.sh +24 -24
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/check-task-tracking.sh +25 -25
- package/.codex/skills/genesis-harness/scripts/compact-context.sh +54 -0
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/create-adr.sh +74 -74
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/create-bug.sh +160 -160
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/create-feature.sh +217 -217
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/detect-stack.sh +26 -26
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/init-planning.sh +750 -719
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/list-changed-files.sh +12 -12
- package/.codex/skills/genesis-harness/scripts/offload-log.sh +72 -0
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/run-verification.sh +47 -47
- package/.codex/skills/genesis-harness/scripts/run-verify-loop.sh +75 -0
- package/.codex/skills/{project-genesis-harness → genesis-harness}/scripts/update-state.sh +33 -33
- package/.codex/skills/genesis-harness/templates/harness-workflow-template.md +10 -0
- package/.codex/skills/genesis-harness-engineering/SKILL.md +159 -0
- package/.codex/skills/genesis-harness-engineering/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-harness-engineering/checklists/checklist.md +48 -0
- package/.codex/skills/genesis-harness-engineering/examples/example.md +57 -0
- package/.codex/skills/genesis-harness-engineering/playbooks/harness-evolution.md +99 -0
- package/.codex/skills/genesis-harness-engineering/templates/harness-change-template.md +37 -0
- package/.codex/skills/genesis-new-design/SKILL.md +95 -0
- package/.codex/skills/genesis-new-design/agents/openai.yaml +4 -0
- package/.codex/skills/genesis-new-design/checklists/checklist.md +8 -0
- package/.codex/skills/genesis-new-design/examples/example.md +4 -0
- package/.codex/skills/genesis-new-design/templates/new-design-template.md +9 -0
- package/.codex/skills/genesis-observability-automation/SKILL.md +382 -0
- package/.codex/skills/genesis-observability-automation/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-observability-automation/examples/example.md +86 -0
- package/.codex/skills/genesis-performance-profiling/SKILL.md +510 -0
- package/.codex/skills/genesis-performance-profiling/agents/openai.yaml +6 -0
- package/.codex/skills/genesis-performance-profiling/checklists/optimization-verification.md +199 -0
- package/.codex/skills/genesis-performance-profiling/checklists/performance-baseline.md +183 -0
- package/.codex/skills/genesis-performance-profiling/examples/example.md +234 -0
- package/.codex/skills/genesis-performance-profiling/observability/performance-tracking.md +202 -0
- package/.codex/skills/genesis-performance-profiling/playbooks/load-testing-orchestration.md +593 -0
- package/.codex/skills/genesis-performance-profiling/playbooks/profiling-playbook.md +601 -0
- package/.codex/skills/genesis-performance-profiling/templates/load-test-config-template.md +428 -0
- package/.codex/skills/genesis-performance-profiling/templates/performance-report-template.md +238 -0
- package/.codex/skills/genesis-pipeline-orchestration/SKILL.md +46 -0
- package/.codex/skills/genesis-pipeline-orchestration/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-pipeline-orchestration/checklists/checklist.md +12 -0
- package/.codex/skills/genesis-pipeline-orchestration/examples/example.md +4 -0
- package/.codex/skills/genesis-pipeline-orchestration/templates/orchestration-template.md +12 -0
- package/.codex/skills/genesis-planning/SKILL.md +46 -0
- package/.codex/skills/genesis-planning/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-planning/checklists/checklist.md +8 -0
- package/.codex/skills/genesis-planning/examples/example.md +4 -0
- package/.codex/skills/genesis-planning/templates/plan-template.md +11 -0
- package/.codex/skills/genesis-release/SKILL.md +46 -0
- package/.codex/skills/genesis-release/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-release/checklists/checklist.md +8 -0
- package/.codex/skills/genesis-release/examples/example.md +4 -0
- package/.codex/skills/genesis-release/templates/release-checklist-template.md +9 -0
- package/.codex/skills/genesis-release-orchestration/SKILL.md +653 -0
- package/.codex/skills/genesis-release-orchestration/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-release-orchestration/checklists/post-deployment-verification.md +274 -0
- package/.codex/skills/genesis-release-orchestration/checklists/pre-release-validation.md +220 -0
- package/.codex/skills/genesis-release-orchestration/examples/example.md +78 -0
- package/.codex/skills/genesis-release-orchestration/observability/release-tracking.md +253 -0
- package/.codex/skills/genesis-release-orchestration/playbooks/canary-deployment-orchestration.md +472 -0
- package/.codex/skills/genesis-release-orchestration/playbooks/semantic-versioning-automation.md +494 -0
- package/.codex/skills/genesis-release-orchestration/templates/deployment-strategy-template.md +303 -0
- package/.codex/skills/genesis-release-orchestration/templates/release-runbook-template.md +420 -0
- package/.codex/skills/genesis-research/SKILL.md +46 -0
- package/.codex/skills/genesis-research/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-research/checklists/checklist.md +7 -0
- package/.codex/skills/genesis-research/examples/example.md +4 -0
- package/.codex/skills/genesis-research/templates/research-note-template.md +9 -0
- package/.codex/skills/genesis-research-first/SKILL.md +237 -0
- package/.codex/skills/genesis-research-first/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-research-first/examples/example.md +85 -0
- package/.codex/skills/genesis-spec-propagation/SKILL.md +534 -0
- package/.codex/skills/genesis-spec-propagation/agents/openai.yaml +7 -0
- package/.codex/skills/genesis-spec-propagation/checklists/phase-update-verification.md +384 -0
- package/.codex/skills/genesis-spec-propagation/checklists/spec-change-detection.md +257 -0
- package/.codex/skills/genesis-spec-propagation/examples/example.md +63 -0
- package/.codex/skills/genesis-spec-propagation/observability/propagation-tracking.md +373 -0
- package/.codex/skills/genesis-spec-propagation/playbooks/breaking-change-propagation.md +692 -0
- package/.codex/skills/genesis-spec-propagation/playbooks/feature-change-propagation.md +434 -0
- package/.codex/skills/genesis-spec-propagation/templates/migration-guide-template.md +407 -0
- package/.codex/skills/genesis-upgrade-design/SKILL.md +97 -0
- package/.codex/skills/genesis-upgrade-design/agents/openai.yaml +4 -0
- package/.codex/skills/genesis-upgrade-design/checklists/checklist.md +8 -0
- package/.codex/skills/genesis-upgrade-design/examples/example.md +4 -0
- package/.codex/skills/genesis-upgrade-design/templates/upgrade-design-template.md +9 -0
- package/.codex/skills/spec-impact-engine/SKILL.md +504 -0
- package/.codex/skills/spec-impact-engine/agents/openai.yaml +7 -0
- package/.codex/skills/spec-impact-engine/detect-spec-changes.sh +262 -0
- package/.codex/skills/spec-impact-engine/examples/example.md +98 -0
- package/.codex/skills/spec-impact-engine/templates/impact-report.md +248 -0
- package/.codex/skills/spec-impact-engine/templates/migration-guide.md +223 -0
- package/.codex/skills/ui-ux-test-skill/SKILL.md +46 -0
- package/.codex/skills/ui-ux-test-skill/agents/openai.yaml +7 -0
- package/.codex/skills/ui-ux-test-skill/checklists/checklist.md +8 -0
- package/.codex/skills/ui-ux-test-skill/examples/example.md +4 -0
- package/.codex/skills/ui-ux-test-skill/templates/playwright-test-template.md +4 -0
- package/.codex-plugin/plugin.json +13 -11
- package/README.EN.md +719 -0
- package/README.VI.md +712 -0
- package/README.md +318 -181
- package/VERSION +1 -1
- package/bin/genesis-harness.js +133 -79
- package/contracts/agents/CharacterBibleAgent/error.json +1 -0
- package/contracts/agents/CharacterBibleAgent/example.json +1 -0
- package/contracts/agents/CharacterBibleAgent/request.json +1 -0
- package/contracts/agents/CharacterBibleAgent/response.json +1 -0
- package/contracts/agents/CharacterBibleAgent/schema.json +1 -0
- package/contracts/agents/ImageGenerationAgent/error.json +1 -0
- package/contracts/agents/ImageGenerationAgent/example.json +1 -0
- package/contracts/agents/ImageGenerationAgent/request.json +1 -0
- package/contracts/agents/ImageGenerationAgent/response.json +1 -0
- package/contracts/agents/ImageGenerationAgent/schema.json +1 -0
- package/contracts/agents/PipelineOrchestrator/error.json +1 -0
- package/contracts/agents/PipelineOrchestrator/example.json +1 -0
- package/contracts/agents/PipelineOrchestrator/request.json +1 -0
- package/contracts/agents/PipelineOrchestrator/response.json +1 -0
- package/contracts/agents/PipelineOrchestrator/schema.json +1 -0
- package/contracts/agents/PromptGenerationAgent/error.json +1 -0
- package/contracts/agents/PromptGenerationAgent/example.json +1 -0
- package/contracts/agents/PromptGenerationAgent/request.json +1 -0
- package/contracts/agents/PromptGenerationAgent/response.json +1 -0
- package/contracts/agents/PromptGenerationAgent/schema.json +1 -0
- package/contracts/agents/RenderAgent/error.json +1 -0
- package/contracts/agents/RenderAgent/example.json +1 -0
- package/contracts/agents/RenderAgent/request.json +1 -0
- package/contracts/agents/RenderAgent/response.json +1 -0
- package/contracts/agents/RenderAgent/schema.json +1 -0
- package/contracts/agents/ScenePlanningAgent/error.json +1 -0
- package/contracts/agents/ScenePlanningAgent/example.json +1 -0
- package/contracts/agents/ScenePlanningAgent/request.json +1 -0
- package/contracts/agents/ScenePlanningAgent/response.json +1 -0
- package/contracts/agents/ScenePlanningAgent/schema.json +1 -0
- package/contracts/agents/ScreenplayAgent/error.json +1 -0
- package/contracts/agents/ScreenplayAgent/example.json +1 -0
- package/contracts/agents/ScreenplayAgent/request.json +1 -0
- package/contracts/agents/ScreenplayAgent/response.json +1 -0
- package/contracts/agents/ScreenplayAgent/schema.json +1 -0
- package/contracts/agents/StoryAnalysisAgent/error.json +1 -0
- package/contracts/agents/StoryAnalysisAgent/example.json +1 -0
- package/contracts/agents/StoryAnalysisAgent/request.json +1 -0
- package/contracts/agents/StoryAnalysisAgent/response.json +1 -0
- package/contracts/agents/StoryAnalysisAgent/schema.json +1 -0
- package/contracts/agents/SubtitleGenerationAgent/error.json +1 -0
- package/contracts/agents/SubtitleGenerationAgent/example.json +1 -0
- package/contracts/agents/SubtitleGenerationAgent/request.json +1 -0
- package/contracts/agents/SubtitleGenerationAgent/response.json +1 -0
- package/contracts/agents/SubtitleGenerationAgent/schema.json +1 -0
- package/contracts/agents/VoiceGenerationAgent/error.json +1 -0
- package/contracts/agents/VoiceGenerationAgent/example.json +1 -0
- package/contracts/agents/VoiceGenerationAgent/request.json +1 -0
- package/contracts/agents/VoiceGenerationAgent/response.json +1 -0
- package/contracts/agents/VoiceGenerationAgent/schema.json +1 -0
- package/contracts/api/README.md +4 -0
- package/contracts/api/endpoint-template/error.json +7 -0
- package/contracts/api/endpoint-template/example.json +11 -0
- package/contracts/api/endpoint-template/request.json +7 -0
- package/contracts/api/endpoint-template/response.json +6 -0
- package/contracts/api/endpoint-template/schema.json +9 -0
- package/contracts/events/README.md +4 -0
- package/contracts/events/event-template/error.json +4 -0
- package/contracts/events/event-template/example.json +6 -0
- package/contracts/events/event-template/request.json +6 -0
- package/contracts/events/event-template/response.json +3 -0
- package/contracts/events/event-template/schema.json +8 -0
- package/contracts/ui/README.md +4 -0
- package/contracts/ui/screen-template/error.json +4 -0
- package/contracts/ui/screen-template/example.json +7 -0
- package/contracts/ui/screen-template/request.json +4 -0
- package/contracts/ui/screen-template/response.json +4 -0
- package/contracts/ui/screen-template/schema.json +8 -0
- package/fixtures/agents/agent-fixture-template.md +14 -0
- package/fixtures/api/api-fixture-template.md +14 -0
- package/fixtures/images/image-fixture-template.md +14 -0
- package/fixtures/pipeline/pipeline-fixture-template.md +14 -0
- package/fixtures/render/render-fixture-template.md +14 -0
- package/fixtures/tts/tts-fixture-template.md +14 -0
- package/fixtures/videos/video-fixture-template.md +14 -0
- package/observability/agent-runs/agent-run-template.md +22 -0
- package/observability/decision-logs/decision-log-template.md +18 -0
- package/observability/failures/failure-template.md +18 -0
- package/package.json +8 -2
- package/playwright/e2e/e2e-template.md +4 -0
- package/playwright/fixtures/ui-fixture-template.md +4 -0
- package/playwright/smoke/smoke-template.md +4 -0
- package/playwright/visual/visual-regression-template.md +4 -0
- package/scripts/README.md +342 -0
- package/scripts/compact-context.sh +54 -0
- package/scripts/detect-changes.sh +152 -0
- package/scripts/install.sh +103 -69
- package/scripts/offload-log.sh +72 -0
- package/scripts/run-evals.sh +118 -52
- package/scripts/run-verify-loop.sh +75 -0
- package/scripts/uninstall.sh +81 -52
- package/scripts/verify.sh +380 -109
- package/tests/contracts/contract-template.test.md +10 -0
- package/tests/fixtures/fixture-index.md +4 -0
- package/tests/integration/integration-template.test.md +4 -0
- package/tests/unit/unit-template.test.md +4 -0
- package/.codex/skills/project-genesis-harness/SKILL.md +0 -727
- package/.codex/skills/project-genesis-harness/agents/openai.yaml +0 -9
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/planning-schema.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/quality-rubric.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/research-rubric.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/references/workflows.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/agents-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/api-docs-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/architecture-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/audit-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/bug-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/check-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/conventions-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/decision-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/design-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/escalation-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/feature-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/integrations-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/journeys-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/lessons-learned-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/observability-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/phase-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/pitfalls-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/planning-tree-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/project-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/quality-score-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/requirements-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/research-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/review-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/spec-changelog-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/stack-template.md +0 -0
- /package/.codex/skills/{project-genesis-harness → genesis-harness}/resources/verification-template.md +0 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
# Phase-Specific Update Verification
|
|
2
|
+
|
|
3
|
+
Verify that each phase was updated correctly after automatic propagation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Phase 2: Test Updates
|
|
8
|
+
|
|
9
|
+
### Checklist: Test Mocks Updated
|
|
10
|
+
|
|
11
|
+
- [ ] Mock data file identified: `tests/fixtures/mocks/*.js`
|
|
12
|
+
- [ ] Old mock data removed (if breaking)
|
|
13
|
+
- [ ] New mock data structure matches API spec
|
|
14
|
+
- [ ] All required fields in mocks
|
|
15
|
+
- [ ] Optional fields handled correctly
|
|
16
|
+
- [ ] Test data types match API response types
|
|
17
|
+
|
|
18
|
+
**Example**:
|
|
19
|
+
```javascript
|
|
20
|
+
// Before propagation
|
|
21
|
+
const mockUser = {
|
|
22
|
+
id: 1,
|
|
23
|
+
name: 'John',
|
|
24
|
+
avatar: '/avatar.png' // This was removed
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// After propagation
|
|
28
|
+
const mockUser = {
|
|
29
|
+
id: 1,
|
|
30
|
+
name: 'John'
|
|
31
|
+
// avatar removed - matches new API spec
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Checklist: Test Assertions Updated
|
|
36
|
+
|
|
37
|
+
- [ ] Assertions check new fields (if feature change)
|
|
38
|
+
- [ ] Assertions removed for deleted fields (if breaking)
|
|
39
|
+
- [ ] Type assertions match new types
|
|
40
|
+
- [ ] Optional vs required assertions correct
|
|
41
|
+
- [ ] Test descriptions updated
|
|
42
|
+
|
|
43
|
+
**Example**:
|
|
44
|
+
```javascript
|
|
45
|
+
// Before
|
|
46
|
+
expect(response.avatar).toBeDefined();
|
|
47
|
+
expect(response.avatar).toMatch(/^\/\w+\.png$/);
|
|
48
|
+
|
|
49
|
+
// After (avatar removed)
|
|
50
|
+
expect(response).not.toHaveProperty('avatar');
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Checklist: Test Descriptions
|
|
54
|
+
|
|
55
|
+
- [ ] Test descriptions match new spec
|
|
56
|
+
- [ ] Comments explain new test scenarios
|
|
57
|
+
- [ ] "What changed" explained in test comments
|
|
58
|
+
- [ ] No outdated comments about removed fields
|
|
59
|
+
|
|
60
|
+
### Validation
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Run Phase 2 tests
|
|
64
|
+
npm test -- tests/
|
|
65
|
+
# All tests passing? ✅
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Phase 3: Backend Contract Updates
|
|
71
|
+
|
|
72
|
+
### Checklist: API Contract Schema
|
|
73
|
+
|
|
74
|
+
- [ ] Contract file identified: `contracts/api/response.json`
|
|
75
|
+
- [ ] Schema matches new API spec exactly
|
|
76
|
+
- [ ] New fields added (if feature)
|
|
77
|
+
- [ ] Old fields removed (if breaking)
|
|
78
|
+
- [ ] Field types correct
|
|
79
|
+
- [ ] Required vs optional correct
|
|
80
|
+
- [ ] Validation rules updated
|
|
81
|
+
- [ ] Comments/descriptions updated
|
|
82
|
+
|
|
83
|
+
**Example**:
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"type": "object",
|
|
87
|
+
"properties": {
|
|
88
|
+
"id": { "type": "integer" },
|
|
89
|
+
"name": { "type": "string" },
|
|
90
|
+
// "avatar" removed - breaking change
|
|
91
|
+
"email": { "type": "string", "format": "email" } // new optional
|
|
92
|
+
},
|
|
93
|
+
"required": ["id", "name"] // avatar removed from required
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Checklist: Database Schema
|
|
98
|
+
|
|
99
|
+
If database schema affected:
|
|
100
|
+
- [ ] Schema change identified in `contracts/db/schema.json`
|
|
101
|
+
- [ ] Migration script generated (if breaking)
|
|
102
|
+
- [ ] Backward compatibility considered (if applicable)
|
|
103
|
+
- [ ] Indexes updated (if necessary)
|
|
104
|
+
- [ ] Rollback procedure documented
|
|
105
|
+
|
|
106
|
+
### Checklist: Implementation Docstring
|
|
107
|
+
|
|
108
|
+
- [ ] Handler docstring updated with new parameters
|
|
109
|
+
- [ ] Response structure documented correctly
|
|
110
|
+
- [ ] Breaking changes noted in docstring
|
|
111
|
+
- [ ] Migration path mentioned (if breaking)
|
|
112
|
+
|
|
113
|
+
**Example**:
|
|
114
|
+
```javascript
|
|
115
|
+
/**
|
|
116
|
+
* GET /api/users/:id
|
|
117
|
+
*
|
|
118
|
+
* Returns user data (v2 format).
|
|
119
|
+
*
|
|
120
|
+
* BREAKING CHANGE (v2): Field 'avatar' removed. Use 'avatarUrl' instead.
|
|
121
|
+
* Migration: https://docs.example.com/migration-v1-to-v2
|
|
122
|
+
*
|
|
123
|
+
* Response: { id, name, avatarUrl?, email? }
|
|
124
|
+
*/
|
|
125
|
+
handler.get('/users/:id', (req, res) => { ... });
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Validation
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Validate API contract
|
|
132
|
+
npm run validate:contracts
|
|
133
|
+
|
|
134
|
+
# Type check
|
|
135
|
+
npm run tsc --noEmit
|
|
136
|
+
|
|
137
|
+
# All valid? ✅
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Phase 4: Client SDK Updates
|
|
143
|
+
|
|
144
|
+
### Checklist: Type Definitions
|
|
145
|
+
|
|
146
|
+
- [ ] Type file identified: `types/api.ts`
|
|
147
|
+
- [ ] Interface definition matches API contract
|
|
148
|
+
- [ ] New fields added with correct types (if feature)
|
|
149
|
+
- [ ] Old fields removed (if breaking)
|
|
150
|
+
- [ ] Optional vs required correct
|
|
151
|
+
- [ ] Union types updated if applicable
|
|
152
|
+
|
|
153
|
+
**Example**:
|
|
154
|
+
```typescript
|
|
155
|
+
// Before
|
|
156
|
+
interface User {
|
|
157
|
+
id: number;
|
|
158
|
+
name: string;
|
|
159
|
+
avatar: string;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// After
|
|
163
|
+
interface User {
|
|
164
|
+
id: number;
|
|
165
|
+
name: string;
|
|
166
|
+
avatarUrl?: string; // Optional, new field
|
|
167
|
+
email?: string; // Optional, new field
|
|
168
|
+
// avatar removed
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Checklist: Client Methods
|
|
173
|
+
|
|
174
|
+
- [ ] Client method signatures updated (if breaking)
|
|
175
|
+
- [ ] Return types match new API contract
|
|
176
|
+
- [ ] Parameter types updated
|
|
177
|
+
- [ ] Optional parameters marked correctly
|
|
178
|
+
|
|
179
|
+
**Example**:
|
|
180
|
+
```typescript
|
|
181
|
+
// Before
|
|
182
|
+
fetchUser(id: number): Promise<User & { avatar: string }> { ... }
|
|
183
|
+
|
|
184
|
+
// After
|
|
185
|
+
fetchUser(id: number): Promise<User> { ... }
|
|
186
|
+
// avatar removed from return type
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Checklist: Serialization/Deserialization
|
|
190
|
+
|
|
191
|
+
- [ ] Serialization logic updated (request → API)
|
|
192
|
+
- [ ] Deserialization logic updated (API → client)
|
|
193
|
+
- [ ] Field mapping updated if breaking
|
|
194
|
+
- [ ] Type casting correct
|
|
195
|
+
|
|
196
|
+
### Checklist: Deprecation Warnings (BREAKING ONLY)
|
|
197
|
+
|
|
198
|
+
- [ ] Deprecation notice added to affected methods
|
|
199
|
+
- [ ] Migration path documented
|
|
200
|
+
- [ ] Timeline for removal specified
|
|
201
|
+
- [ ] Alternative methods suggested
|
|
202
|
+
|
|
203
|
+
**Example**:
|
|
204
|
+
```typescript
|
|
205
|
+
/**
|
|
206
|
+
* @deprecated Use fetchUser() instead, avatar field removed in v2
|
|
207
|
+
* Migration: https://docs.example.com/migration-v1-to-v2
|
|
208
|
+
* Removal date: 2026-12-31
|
|
209
|
+
*/
|
|
210
|
+
fetchUserWithAvatar(id: number): Promise<User> { ... }
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Validation
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Type check
|
|
217
|
+
npm run tsc --noEmit
|
|
218
|
+
|
|
219
|
+
# Any type errors? ❌
|
|
220
|
+
# All types valid? ✅
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Phase 5: E2E Test Updates
|
|
226
|
+
|
|
227
|
+
### Checklist: Scenario Files
|
|
228
|
+
|
|
229
|
+
- [ ] Scenario file identified: `playwright/e2e/scenarios.md`
|
|
230
|
+
- [ ] New scenarios added for new fields (if feature)
|
|
231
|
+
- [ ] Old scenarios removed or updated (if breaking)
|
|
232
|
+
- [ ] Scenarios reference correct Phase 4 SDK methods
|
|
233
|
+
- [ ] Test data matches updated spec
|
|
234
|
+
|
|
235
|
+
**Example**:
|
|
236
|
+
```markdown
|
|
237
|
+
## Create User with Email
|
|
238
|
+
|
|
239
|
+
- Input: { name: "John", email: "john@example.com" }
|
|
240
|
+
- Expected: User created with email field
|
|
241
|
+
- ❌ Removed: "Create User with Avatar" (avatar removed in v2)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Checklist: E2E Assertions
|
|
245
|
+
|
|
246
|
+
- [ ] Assertions check new fields (if feature)
|
|
247
|
+
- [ ] Assertions removed for deleted fields (if breaking)
|
|
248
|
+
- [ ] Assertions match new API response structure
|
|
249
|
+
- [ ] Element selectors still valid (if UI affected)
|
|
250
|
+
|
|
251
|
+
**Example**:
|
|
252
|
+
```javascript
|
|
253
|
+
// Before
|
|
254
|
+
page.locator('[data-test="user-avatar"]').isVisible()
|
|
255
|
+
|
|
256
|
+
// After (avatar removed from UI)
|
|
257
|
+
page.locator('[data-test="user-avatar"]').isHidden()
|
|
258
|
+
// OR removed entirely if no UI replacement
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Checklist: Test Data
|
|
262
|
+
|
|
263
|
+
- [ ] Test data fixtures match new API spec
|
|
264
|
+
- [ ] Mock responses updated if needed
|
|
265
|
+
- [ ] Page objects reference updated fields
|
|
266
|
+
- [ ] Helper functions updated
|
|
267
|
+
|
|
268
|
+
### Checklist: Page Objects
|
|
269
|
+
|
|
270
|
+
- [ ] Page object selectors match updated UI
|
|
271
|
+
- [ ] Methods return correct data types
|
|
272
|
+
- [ ] No references to removed fields
|
|
273
|
+
|
|
274
|
+
### Validation
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# Run E2E tests (subset to verify updates)
|
|
278
|
+
npm run test:e2e -- --grep "User"
|
|
279
|
+
|
|
280
|
+
# All E2E tests passing? ✅
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Cross-Phase Consistency Check
|
|
286
|
+
|
|
287
|
+
After all phases updated, verify they're still aligned.
|
|
288
|
+
|
|
289
|
+
### Type System Alignment
|
|
290
|
+
|
|
291
|
+
- [ ] Phase 3 API contract types ⊂ Phase 4 SDK types?
|
|
292
|
+
- [ ] Phase 2 test data types match Phase 3 API response?
|
|
293
|
+
- [ ] Phase 5 test data types match Phase 4 SDK input?
|
|
294
|
+
|
|
295
|
+
**Check**: Types shouldn't require conversion between phases
|
|
296
|
+
|
|
297
|
+
### Data Flow Alignment
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
Phase 2: Mock data
|
|
301
|
+
↓ (matches)
|
|
302
|
+
Phase 3: API response schema
|
|
303
|
+
↓ (matches)
|
|
304
|
+
Phase 4: Client type definitions
|
|
305
|
+
↓ (matches)
|
|
306
|
+
Phase 5: E2E test expectations
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
- [ ] Mock → API Contract: Same fields & types
|
|
310
|
+
- [ ] API Contract → Client Types: Same structure
|
|
311
|
+
- [ ] Client Types → E2E Tests: Same data
|
|
312
|
+
|
|
313
|
+
### Method Call Alignment
|
|
314
|
+
|
|
315
|
+
- [ ] Phase 5 E2E calls Phase 4 methods correctly
|
|
316
|
+
- [ ] Phase 4 SDK methods call Phase 3 endpoints correctly
|
|
317
|
+
- [ ] Phase 2 tests verify same behavior as Phase 3
|
|
318
|
+
|
|
319
|
+
### Validation
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
# Run all tests together
|
|
323
|
+
npm run test:full
|
|
324
|
+
|
|
325
|
+
# No integration errors? ✅
|
|
326
|
+
# No type mismatches? ✅
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Conflict Resolution
|
|
332
|
+
|
|
333
|
+
If any phase is out of sync with others, document the conflict.
|
|
334
|
+
|
|
335
|
+
### Conflict Recording
|
|
336
|
+
|
|
337
|
+
Create `CONFLICT_LOG.md` entry:
|
|
338
|
+
|
|
339
|
+
```markdown
|
|
340
|
+
## Conflict: Phase 3 ↔ Phase 4 Type Mismatch
|
|
341
|
+
|
|
342
|
+
**Date**: 2026-05-31
|
|
343
|
+
**Severity**: HIGH
|
|
344
|
+
**Change**: API response removed 'avatar' field
|
|
345
|
+
|
|
346
|
+
**Conflict Details**:
|
|
347
|
+
- Phase 3 API contract: { id, name, email } ✓
|
|
348
|
+
- Phase 4 SDK types: { id, name, avatar, email } ✗
|
|
349
|
+
- Mismatch: avatar field in SDK but not in API
|
|
350
|
+
|
|
351
|
+
**Resolution**:
|
|
352
|
+
1. Remove avatar from Phase 4 types
|
|
353
|
+
2. Add deprecation warning
|
|
354
|
+
3. Re-run validation
|
|
355
|
+
|
|
356
|
+
**Status**: RESOLVED
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Manual Intervention
|
|
360
|
+
|
|
361
|
+
If conflicts found:
|
|
362
|
+
1. **Identify**: Which phases are misaligned?
|
|
363
|
+
2. **Cause**: Why did propagation miss this?
|
|
364
|
+
3. **Fix**: Manual update to misaligned phase
|
|
365
|
+
4. **Document**: Add to CONFLICT_LOG.md
|
|
366
|
+
5. **Re-validate**: Run tests again
|
|
367
|
+
6. **Improve**: Update patterns to prevent recurrence
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Sign-Off Checklist
|
|
372
|
+
|
|
373
|
+
Once all updates complete and validated:
|
|
374
|
+
|
|
375
|
+
- [ ] Phase 2 tests: All green ✅
|
|
376
|
+
- [ ] Phase 3 contract: Valid & aligned ✅
|
|
377
|
+
- [ ] Phase 4 SDK: Types correct & synchronized ✅
|
|
378
|
+
- [ ] Phase 5 E2E: Tests pass & scenarios updated ✅
|
|
379
|
+
- [ ] Cross-phase consistency: Verified ✅
|
|
380
|
+
- [ ] No conflicts: All aligned ✅
|
|
381
|
+
- [ ] Migration guide: Complete (if breaking) ✅
|
|
382
|
+
- [ ] SPEC_CHANGELOG.md: Entry added ✅
|
|
383
|
+
- [ ] Ready for commit ✅
|
|
384
|
+
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Spec Change Detection Checklist
|
|
2
|
+
|
|
3
|
+
## Pre-Propagation Verification
|
|
4
|
+
|
|
5
|
+
Verify before starting automatic propagation.
|
|
6
|
+
|
|
7
|
+
### 1. Change Documentation ✓
|
|
8
|
+
|
|
9
|
+
- [ ] Change is well-documented (why changed, impact)
|
|
10
|
+
- [ ] Old spec vs new spec available for comparison
|
|
11
|
+
- [ ] Change type identified (breaking/feature/non-impact)
|
|
12
|
+
- [ ] SPEC_CHANGELOG.md entry created (if not, auto-append)
|
|
13
|
+
|
|
14
|
+
### 2. Change Validity
|
|
15
|
+
|
|
16
|
+
- [ ] Change is intentional (not a mistake)
|
|
17
|
+
- [ ] Change doesn't introduce new technical debt
|
|
18
|
+
- [ ] Change is aligned with project architecture
|
|
19
|
+
- [ ] Change doesn't violate any contracts or constraints
|
|
20
|
+
|
|
21
|
+
**If any "No"**: STOP propagation, review change with team before continuing.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Change Type Classification
|
|
26
|
+
|
|
27
|
+
Classify the change before propagation determines update strategy.
|
|
28
|
+
|
|
29
|
+
### BREAKING CHANGE
|
|
30
|
+
|
|
31
|
+
**Indicators**:
|
|
32
|
+
- ❌ Removed field from API response
|
|
33
|
+
- ❌ Changed field type (number → string, optional → required)
|
|
34
|
+
- ❌ Removed database column
|
|
35
|
+
- ❌ Changed endpoint URL or method
|
|
36
|
+
- ❌ Changed validation rule (stricter or behavioral change)
|
|
37
|
+
- ❌ Renamed field
|
|
38
|
+
|
|
39
|
+
**Examples**:
|
|
40
|
+
```diff
|
|
41
|
+
- { "userId": 123 } → { "id": 123 } // Renamed field
|
|
42
|
+
- { "status": "active" } → { "status": 1 } // Type changed
|
|
43
|
+
+ { "email": "required" } // Made required when optional
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Propagation Complexity**: HIGH (manual review recommended)
|
|
47
|
+
**Downstream Impact**: Major (all phases affected)
|
|
48
|
+
**Time to Update**: 2-4 hours (includes design decisions)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### FEATURE CHANGE
|
|
53
|
+
|
|
54
|
+
**Indicators**:
|
|
55
|
+
- ✅ Added new optional field to API response
|
|
56
|
+
- ✅ Added new optional parameter to function
|
|
57
|
+
- ✅ Added new endpoint or operation
|
|
58
|
+
- ✅ Added new validation (optional field)
|
|
59
|
+
- ✅ Extended enum with new value
|
|
60
|
+
- ✅ Made field optional (was required)
|
|
61
|
+
|
|
62
|
+
**Examples**:
|
|
63
|
+
```diff
|
|
64
|
+
+ { "avatarUrl": "https://..." } // New optional field
|
|
65
|
+
+ { "tags": [] } // New optional array
|
|
66
|
+
+ POST /api/users/export // New endpoint
|
|
67
|
+
+ "status" in ["active", "inactive", "archived"] // Extended enum
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Propagation Complexity**: MEDIUM (mostly automatic)
|
|
71
|
+
**Downstream Impact**: Moderate (Phase 2, 3, 5 affected)
|
|
72
|
+
**Time to Update**: 30-60 minutes
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### NON-IMPACT CHANGE
|
|
77
|
+
|
|
78
|
+
**Indicators**:
|
|
79
|
+
- 📝 Updated description/documentation
|
|
80
|
+
- 📝 Updated example values
|
|
81
|
+
- 📝 Formatting/styling change
|
|
82
|
+
- 📝 Reordered fields (same data)
|
|
83
|
+
- 📝 Updated comment (code, not logic)
|
|
84
|
+
|
|
85
|
+
**Examples**:
|
|
86
|
+
```diff
|
|
87
|
+
- "description": "User name" → "description": "Full name of user"
|
|
88
|
+
- { "id": 1, "name": "John" } → { "name": "John", "id": 1 } // Reordered
|
|
89
|
+
- 200 → 200 // Same HTTP status, just reformatted
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Propagation Complexity**: LOW (minimal updates)
|
|
93
|
+
**Downstream Impact**: Minimal (maybe Phase 2 only for docs)
|
|
94
|
+
**Time to Update**: 5-10 minutes
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Affected Phase Detection Checklist
|
|
99
|
+
|
|
100
|
+
Verify the right phases are identified as affected.
|
|
101
|
+
|
|
102
|
+
### Phase 2: Tests
|
|
103
|
+
- [ ] Test mocks need updating? (breaking/feature)
|
|
104
|
+
- [ ] Test data needs updating? (breaking/feature)
|
|
105
|
+
- [ ] Test assertions need updating? (breaking)
|
|
106
|
+
- [ ] Affected test file identified?
|
|
107
|
+
|
|
108
|
+
### Phase 3: Backend Implementation
|
|
109
|
+
- [ ] API contract changes? (all types)
|
|
110
|
+
- [ ] Response builder affected? (breaking/feature)
|
|
111
|
+
- [ ] Request validation affected? (breaking)
|
|
112
|
+
- [ ] Database schema affected? (breaking - migration needed)
|
|
113
|
+
- [ ] Handler docstring needs update? (breaking)
|
|
114
|
+
|
|
115
|
+
### Phase 4: Client SDK
|
|
116
|
+
- [ ] Client method signatures affected? (breaking)
|
|
117
|
+
- [ ] Type definitions need update? (breaking/feature)
|
|
118
|
+
- [ ] Serialization logic affected? (breaking)
|
|
119
|
+
- [ ] Deprecation warnings needed? (breaking)
|
|
120
|
+
|
|
121
|
+
### Phase 5: E2E Tests
|
|
122
|
+
- [ ] E2E scenarios need new test cases? (feature)
|
|
123
|
+
- [ ] E2E assertions need updating? (breaking)
|
|
124
|
+
- [ ] E2E data needs updating? (breaking/feature)
|
|
125
|
+
- [ ] New scenarios for new fields? (feature)
|
|
126
|
+
|
|
127
|
+
**Validation**: At least Phase 2 OR Phase 3 should be "Yes" for any change.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Dependency Path Verification
|
|
132
|
+
|
|
133
|
+
Confirm propagation order is correct (topological sort).
|
|
134
|
+
|
|
135
|
+
### Valid Propagation Order
|
|
136
|
+
|
|
137
|
+
1. **Phase 1**: Original spec change ✅
|
|
138
|
+
2. **Phase 2**: Tests updated (independent of implementation)
|
|
139
|
+
3. **Phase 3**: Backend implementation aligned with updated tests
|
|
140
|
+
4. **Phase 4**: Client SDK updated to match Phase 3 API
|
|
141
|
+
5. **Phase 5**: E2E tests updated to use Phase 4 SDK + Phase 3 API
|
|
142
|
+
|
|
143
|
+
### Order Validation Checklist
|
|
144
|
+
|
|
145
|
+
- [ ] Phase 2 updates don't depend on Phase 3 changes (true for mocks)
|
|
146
|
+
- [ ] Phase 3 updates use Phase 2 tests as reference
|
|
147
|
+
- [ ] Phase 4 updates don't precede Phase 3 (SDK depends on API)
|
|
148
|
+
- [ ] Phase 5 updates reference Phase 4 SDK + Phase 3 API
|
|
149
|
+
|
|
150
|
+
**If any violated**: Stop, reorder phases before propagation.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Manual Update Trigger
|
|
155
|
+
|
|
156
|
+
When should manual review override automatic updates?
|
|
157
|
+
|
|
158
|
+
### Require Manual Review If...
|
|
159
|
+
|
|
160
|
+
**CRITICAL TRIGGERS** (Stop propagation):
|
|
161
|
+
- [ ] Breaking change + no clear migration path
|
|
162
|
+
- [ ] Change affects 5+ files in Phase 3
|
|
163
|
+
- [ ] Database migration needed (breaking + data loss risk)
|
|
164
|
+
- [ ] API version bump needed (breaking)
|
|
165
|
+
- [ ] SDK deprecation policy violated
|
|
166
|
+
- [ ] Contract violates architectural constraint
|
|
167
|
+
|
|
168
|
+
**RECOMMENDED REVIEW** (Proceed with caution):
|
|
169
|
+
- [ ] Feature change affecting Phase 3 + Phase 4 together
|
|
170
|
+
- [ ] Type system needs re-design (e.g., union type)
|
|
171
|
+
- [ ] Performance implications (schema change, new indexes)
|
|
172
|
+
- [ ] Security implication (new validation, encryption)
|
|
173
|
+
|
|
174
|
+
**AUTOMATIC OK** (Can auto-propagate):
|
|
175
|
+
- [ ] Optional field addition (feature)
|
|
176
|
+
- [ ] Optional parameter addition (feature)
|
|
177
|
+
- [ ] New endpoint (feature)
|
|
178
|
+
- [ ] New enum value (feature)
|
|
179
|
+
- [ ] Documentation update (non-impact)
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Conflict Detection Checklist
|
|
184
|
+
|
|
185
|
+
Watch for conflicts during propagation.
|
|
186
|
+
|
|
187
|
+
### Potential Conflicts
|
|
188
|
+
|
|
189
|
+
**Phase 2 ↔ Phase 3**:
|
|
190
|
+
- [ ] Phase 2 mocks outdated when Phase 3 was implemented?
|
|
191
|
+
- [ ] Phase 3 handler not aligned with Phase 2 expectations?
|
|
192
|
+
|
|
193
|
+
**Phase 3 ↔ Phase 4**:
|
|
194
|
+
- [ ] Phase 4 SDK has workarounds for Phase 3 quirks?
|
|
195
|
+
- [ ] Backward compatibility code in Phase 4 would break?
|
|
196
|
+
|
|
197
|
+
**Phase 4 ↔ Phase 5**:
|
|
198
|
+
- [ ] Phase 5 tests rely on deprecated Phase 4 methods?
|
|
199
|
+
- [ ] Phase 5 hardcodes values from Phase 4 SDK?
|
|
200
|
+
|
|
201
|
+
**All Phases**:
|
|
202
|
+
- [ ] Any hardcoded values in tests/implementation?
|
|
203
|
+
- [ ] Any duplicate data definitions (brittleness)?
|
|
204
|
+
- [ ] Any circular dependencies?
|
|
205
|
+
|
|
206
|
+
**If conflicts found**: Document in CONFLICT_LOG.md, escalate for manual resolution.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Post-Propagation Validation
|
|
211
|
+
|
|
212
|
+
After automatic updates, verify everything still works.
|
|
213
|
+
|
|
214
|
+
### Syntax Validation
|
|
215
|
+
|
|
216
|
+
- [ ] Phase 2 test files are valid JavaScript
|
|
217
|
+
- [ ] Phase 3 contract files are valid JSON
|
|
218
|
+
- [ ] Phase 4 type files are valid TypeScript
|
|
219
|
+
- [ ] Phase 5 scenario files are valid Markdown
|
|
220
|
+
|
|
221
|
+
### Semantic Validation
|
|
222
|
+
|
|
223
|
+
- [ ] Phase 2 tests make logical sense (not just syntactically valid)
|
|
224
|
+
- [ ] Phase 3 contract accurately describes new API
|
|
225
|
+
- [ ] Phase 4 types match Phase 3 contract structure
|
|
226
|
+
- [ ] Phase 5 scenarios reference Phase 4 SDK correctly
|
|
227
|
+
|
|
228
|
+
### Integration Testing
|
|
229
|
+
|
|
230
|
+
- [ ] Run Phase 2 tests: `npm test -- tests/`
|
|
231
|
+
- [ ] Run Phase 3 validation: `npm run validate:contracts`
|
|
232
|
+
- [ ] Run Phase 4 type check: `npm run tsc --noEmit`
|
|
233
|
+
- [ ] Run Phase 5 E2E: `npm run test:e2e` (subset)
|
|
234
|
+
|
|
235
|
+
### All Tests Green?
|
|
236
|
+
|
|
237
|
+
- [ ] Yes → Propagation successful ✅
|
|
238
|
+
- [ ] No → Identify failing tests, manual review needed ⚠️
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Migration Guide Checklist (BREAKING CHANGES ONLY)
|
|
243
|
+
|
|
244
|
+
For breaking changes, verify migration guide is complete.
|
|
245
|
+
|
|
246
|
+
- [ ] Migration guide file exists (e.g., `docs/migration-v2-to-v3.md`)
|
|
247
|
+
- [ ] "What changed" section complete
|
|
248
|
+
- [ ] "Why changed" section explains rationale
|
|
249
|
+
- [ ] "Impact" section lists affected consumers
|
|
250
|
+
- [ ] "Migration steps" are clear and step-by-step
|
|
251
|
+
- [ ] "Timeline" specified (deprecation period, cutoff date)
|
|
252
|
+
- [ ] "Rollback procedure" documented
|
|
253
|
+
- [ ] "Backward compatibility period" specified (if any)
|
|
254
|
+
- [ ] Examples of old vs new code provided
|
|
255
|
+
|
|
256
|
+
**If migration guide incomplete**: Block commit until complete.
|
|
257
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Example: Propagating a Breaking API Change Across Phases
|
|
2
|
+
|
|
3
|
+
## Scenario
|
|
4
|
+
|
|
5
|
+
The Phase 1 API contract for `GET /api/users/:id` is updated to change the response:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Before: { name, email, role }
|
|
9
|
+
After: { id, name, email, roles[] }
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
This is a **BREAKING** change — `role` (string) is replaced by `roles[]` (array).
|
|
13
|
+
|
|
14
|
+
## Trigger
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/spec-change .planning/API_DOCS.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Auto-triggered after `/spec-change` completes.
|
|
21
|
+
|
|
22
|
+
## Phase 1: Change Detection (5 min)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Detected: BREAKING change in .planning/API_DOCS.md
|
|
26
|
+
- Removed field: role (string)
|
|
27
|
+
- Added field: roles (array)
|
|
28
|
+
- Affected section: GET /api/users/:id response
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Phase 2: Impact Analysis (10 min)
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Dependency graph traced:
|
|
35
|
+
Phase 2 (Tests): HIGH — 5 mock assertions use role field
|
|
36
|
+
Phase 3 (Backend): HIGH — response builder must return roles array
|
|
37
|
+
Phase 4 (SDK): MEDIUM — interface User needs roles: string[]
|
|
38
|
+
Phase 5 (E2E): LOW — update 2 role-checking scenarios
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Phase 3: Auto-Updates Applied (15 min)
|
|
42
|
+
|
|
43
|
+
- **Phase 2** `tests/api-mocks.test.ts` — Updated `expect(response.role)` → `expect(response.roles[0])`
|
|
44
|
+
- **Phase 3** `contracts/api/GetUser/response.json` — Schema updated to include `roles` array
|
|
45
|
+
- **Phase 4** `types/api.ts` — `interface User { roles: string[] }` replacing `role: string`
|
|
46
|
+
- **Phase 5** `playwright/e2e/user-profile.spec.ts` — Updated 2 role-check assertions
|
|
47
|
+
|
|
48
|
+
## Migration Guide Generated
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## BREAKING: role → roles[] in GET /api/users/:id
|
|
52
|
+
|
|
53
|
+
Migration: Replace `user.role` with `user.roles[0]` for primary role access.
|
|
54
|
+
Timeline: Migrate before v3.0.0 release.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Outcome
|
|
58
|
+
|
|
59
|
+
- ✅ All 4 phases updated automatically
|
|
60
|
+
- ✅ Tests re-run and passing
|
|
61
|
+
- ✅ Migration guide created
|
|
62
|
+
- ✅ SPEC_CHANGELOG.md entry added
|
|
63
|
+
- ✅ 45 min manual work → 30 min automated
|