groundswell 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/subtask-planning/prp-base-create.md +120 -0
- package/.claude/commands/subtask-planning/prp-base-execute.md +65 -0
- package/.claude/commands/task-breakdown.md +94 -0
- package/.claude/system_prompts/task-breakdown.md +1 -0
- package/CHANGELOG.md +188 -0
- package/PRD.md +543 -0
- package/README.md +99 -5
- package/examples/README.md +15 -1
- package/examples/examples/11-reparenting-workflows.ts +269 -0
- package/examples/index.ts +4 -0
- package/package-lock.json +2398 -0
- package/package.json +3 -1
- package/plan/001_d3bb02af4886/TEST_RESULTS.md +259 -0
- package/plan/001_d3bb02af4886/bug_fix_tasks.json +484 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +488 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +581 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +687 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +492 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +932 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +1109 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +802 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +603 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +564 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +518 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +1252 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +364 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +114 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +205 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +199 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +134 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +495 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +435 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +506 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +612 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +558 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +788 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +460 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +454 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +520 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +417 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +760 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +245 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +792 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +535 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +190 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +654 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +227 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +345 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +193 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +1323 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +1011 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +927 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +505 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +401 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +142 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +112 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +159 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +549 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +368 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +172 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +175 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +696 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +860 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +1066 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +1103 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +789 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +1098 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +1037 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +916 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +1045 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +890 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +822 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +668 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +706 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +265 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +655 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +1103 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +426 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +506 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +114 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +316 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +754 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +612 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +719 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +215 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +765 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +718 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +149 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +470 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +332 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +167 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +265 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +273 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +760 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +434 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +717 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +472 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +125 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +301 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +1170 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +940 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +151 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +650 -0
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +259 -0
- package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +457 -0
- package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +346 -0
- package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +311 -0
- package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +1565 -0
- package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +288 -0
- package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +741 -0
- package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +652 -0
- package/plan/001_d3bb02af4886/docs/PRP/PRP.md +527 -0
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +415 -0
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +378 -0
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +713 -0
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +370 -0
- package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +499 -0
- package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +230 -0
- package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +1134 -0
- package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +179 -0
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +629 -0
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +214 -0
- package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +629 -0
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +529 -0
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +142 -0
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +304 -0
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +558 -0
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +256 -0
- package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +346 -0
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +415 -0
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +489 -0
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +218 -0
- package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +380 -0
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +1923 -0
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +319 -0
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +115 -0
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +134 -0
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +153 -0
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +132 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +716 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +186 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +604 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +213 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +30 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +56 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +53 -0
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +49 -0
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +958 -0
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +339 -0
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +305 -0
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +433 -0
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +1574 -0
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +1014 -0
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +376 -0
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +1507 -0
- package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +949 -0
- package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +619 -0
- package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +723 -0
- package/plan/{research → 001_d3bb02af4886/docs/research/general}/introspection-security-guide.md +56 -0
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +460 -0
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +324 -0
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +175 -0
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +499 -0
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +163 -0
- package/plan/bugfix/BUG_FIX_SUMMARY.md +961 -0
- package/src/__tests__/adversarial/attachChild-performance.test.ts +216 -0
- package/src/__tests__/adversarial/circular-reference.test.ts +101 -0
- package/src/__tests__/adversarial/complex-circular-reference.test.ts +139 -0
- package/src/__tests__/adversarial/concurrent-task-failures.test.ts +571 -0
- package/src/__tests__/adversarial/deep-analysis.test.ts +729 -0
- package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +213 -0
- package/src/__tests__/adversarial/e2e-prd-validation.test.ts +448 -0
- package/src/__tests__/adversarial/edge-case.test.ts +703 -0
- package/src/__tests__/adversarial/error-merge-strategy.test.ts +760 -0
- package/src/__tests__/adversarial/incremental-performance.test.ts +140 -0
- package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +457 -0
- package/src/__tests__/adversarial/observer-propagation.test.ts +487 -0
- package/src/__tests__/adversarial/parent-validation.test.ts +143 -0
- package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +611 -0
- package/src/__tests__/adversarial/prd-compliance.test.ts +731 -0
- package/src/__tests__/compatibility/backward-compatibility.test.ts +1572 -0
- package/src/__tests__/helpers/index.ts +18 -0
- package/src/__tests__/helpers/tree-verification.ts +257 -0
- package/src/__tests__/integration/bidirectional-consistency.test.ts +847 -0
- package/src/__tests__/integration/observer-logging.test.ts +643 -0
- package/src/__tests__/integration/tree-mirroring.test.ts +37 -0
- package/src/__tests__/integration/workflow-reparenting.test.ts +303 -0
- package/src/__tests__/unit/context.test.ts +79 -0
- package/src/__tests__/unit/logger.test.ts +293 -0
- package/src/__tests__/unit/observable.test.ts +321 -0
- package/src/__tests__/unit/tree-debugger-incremental.test.ts +170 -0
- package/src/__tests__/unit/utils/workflow-error-utils.test.ts +209 -0
- package/src/__tests__/unit/workflow-detachChild.test.ts +100 -0
- package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +153 -0
- package/src/__tests__/unit/workflow-isDescendantOf.test.ts +180 -0
- package/src/__tests__/unit/workflow.test.ts +277 -1
- package/src/core/agent.ts +21 -1
- package/src/core/logger.ts +27 -2
- package/src/core/workflow-context.ts +6 -4
- package/src/core/workflow.ts +252 -14
- package/src/debugger/tree-debugger.ts +52 -7
- package/src/decorators/task.ts +65 -2
- package/src/index.ts +4 -2
- package/src/types/decorators.ts +8 -1
- package/src/types/events.ts +1 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/observable.ts +32 -3
- package/src/utils/workflow-error-utils.ts +56 -0
- package/tsconfig.json +1 -1
- package/llms_full.txt +0 -5890
- package/tasks.json +0 -0
- /package/plan/{backlog.json → 001_d3bb02af4886/backlog.json} +0 -0
- /package/plan/{P1P2/PRP.md → 001_d3bb02af4886/docs/PRP/P1P2-PRP.md} +0 -0
- /package/plan/{P3P4/PRP.md → 001_d3bb02af4886/docs/PRP/P3P4-PRP.md} +0 -0
- /package/plan/{P4P5/PRP.md → 001_d3bb02af4886/docs/PRP/P4P5-PRP.md} +0 -0
- /package/plan/{architecture → 001_d3bb02af4886/docs/architecture}/external_deps.md +0 -0
- /package/plan/{architecture → 001_d3bb02af4886/docs/architecture}/system_context.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_BEST_PRACTICES.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_CODE_PATTERNS.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_INTEGRATION_GUIDE.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_RESEARCH_INDEX.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/REFLECTION_INDEX.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/REFLECTION_RESEARCH_REPORT.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/RESEARCH_SUMMARY.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/anthropic-sdk.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/async-local-storage.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-code-patterns.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-decision-matrix.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-implementation-guide.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-integration-guide.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-patterns.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-quick-reference.md +0 -0
- /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/zod-schema.md +0 -0
- /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/caching-lru.md +0 -0
- /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/introspection-tools.md +0 -0
- /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/reflection-patterns.md +0 -0
- /package/plan/{P4P5/research → 001_d3bb02af4886/docs/research/P4P5}/RESEARCH_SUMMARY.md +0 -0
- /package/plan/{research → 001_d3bb02af4886/docs/research/general}/INTROSPECTION_RESEARCH_SUMMARY.md +0 -0
- /package/plan/{research → 001_d3bb02af4886/docs/research/general}/README-INTROSPECTION.md +0 -0
- /package/plan/{research → 001_d3bb02af4886/docs/research/general}/agent-introspection-patterns.md +0 -0
- /package/plan/{research → 001_d3bb02af4886/docs/research/general}/introspection-tool-examples.md +0 -0
- /package/{PRPs/PRDs/001-hierarchical-workflow-engine.md → plan/001_d3bb02af4886/prd_snapshot.md} +0 -0
|
@@ -0,0 +1,927 @@
|
|
|
1
|
+
# Product Requirement Prompt (PRP): Audit Bug Fixes for Breaking Changes
|
|
2
|
+
|
|
3
|
+
**PRP ID**: P1.M4.T3.S1
|
|
4
|
+
**Work Item**: Audit bug fixes for breaking changes
|
|
5
|
+
**Created**: 2026-01-12
|
|
6
|
+
**Confidence Score**: 10/10
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
**Feature Goal**: Conduct a comprehensive audit of all bug fixes implemented in P1.M1 (Critical), P1.M2 (Major), and P1.M3 (Minor) to identify breaking changes, assess severity, and document mitigation strategies with migration paths where applicable.
|
|
13
|
+
|
|
14
|
+
**Deliverable**: Breaking changes audit report at `plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md` containing:
|
|
15
|
+
- Complete inventory of all bug fixes with breaking change classification
|
|
16
|
+
- Severity assessment for each breaking change (Critical/High/Medium/Low)
|
|
17
|
+
- Mitigation strategies and migration paths for breaking changes
|
|
18
|
+
- Verification that backward compatibility claims are accurate
|
|
19
|
+
|
|
20
|
+
**Success Definition**:
|
|
21
|
+
- Every bug fix is audited against public API surface
|
|
22
|
+
- Breaking changes are identified with specific code references
|
|
23
|
+
- Non-breaking changes are explicitly documented with justification
|
|
24
|
+
- Report enables informed decisions about version bump requirements
|
|
25
|
+
- All findings are cross-referenced with test pass validation
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## User Persona
|
|
30
|
+
|
|
31
|
+
**Target User**: Project maintainers and release managers who need to:
|
|
32
|
+
- Determine appropriate semantic version bump (PATCH vs MINOR vs MAJOR)
|
|
33
|
+
- Communicate breaking changes to users
|
|
34
|
+
- Provide migration guidance for affected code
|
|
35
|
+
- Make release readiness decisions
|
|
36
|
+
|
|
37
|
+
**Use Case**: Final validation step before release to ensure no unexpected breaking changes impact users.
|
|
38
|
+
|
|
39
|
+
**User Journey**:
|
|
40
|
+
1. Maintainer opens BREAKING_CHANGES_AUDIT.md to review audit results
|
|
41
|
+
2. Maintainer scans for any Critical or High severity breaking changes
|
|
42
|
+
3. For breaking changes found, maintainer reviews mitigation strategies
|
|
43
|
+
4. Maintainer uses findings to determine version bump (semver compliance)
|
|
44
|
+
5. Maintainer incorporates findings into changelog and release notes
|
|
45
|
+
|
|
46
|
+
**Pain Points Addressed**:
|
|
47
|
+
- **Unclear impact**: Without audit, breaking changes may surprise users post-release
|
|
48
|
+
- **Version uncertainty**: Maintainer doesn't know if version should be 0.0.3 or 0.1.0
|
|
49
|
+
- **Migration gaps**: Users need clear guidance when breaking changes occur
|
|
50
|
+
- **Trust erosion**: Undocumented breaking changes damage user trust
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Why
|
|
55
|
+
|
|
56
|
+
**Business value and user impact**:
|
|
57
|
+
- Comprehensive breaking change audit prevents user-facing regressions
|
|
58
|
+
- Clear severity classification enables appropriate version bumping
|
|
59
|
+
- Migration strategies reduce support burden and user frustration
|
|
60
|
+
- Proper documentation maintains trust through transparency
|
|
61
|
+
|
|
62
|
+
**Integration with existing features**:
|
|
63
|
+
- Builds upon bug fix implementations from P1.M1, P1.M2, P1.M3
|
|
64
|
+
- Cross-references test suite validation from P1.M4.T1
|
|
65
|
+
- Complements bug fix summary documentation from P1.M4.T2
|
|
66
|
+
- Informs backward compatibility test requirements for P1.M4.T3.S2
|
|
67
|
+
|
|
68
|
+
**Problems this solves and for whom**:
|
|
69
|
+
- **For maintainers**: Clear decision framework for version bumping
|
|
70
|
+
- **For users**: Transparent communication about breaking changes
|
|
71
|
+
- **For QA**: Validation that claimed backward compatibility is accurate
|
|
72
|
+
- **For documentation**: Source of truth for migration guide content
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## What
|
|
77
|
+
|
|
78
|
+
Conduct a systematic audit of all bug fixes and create a markdown report with the following structure:
|
|
79
|
+
|
|
80
|
+
### Report Structure
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
# Breaking Changes Audit Report - Version 0.0.3
|
|
84
|
+
|
|
85
|
+
## Executive Summary
|
|
86
|
+
[Overall assessment: breaking changes found, severity distribution, version recommendation]
|
|
87
|
+
|
|
88
|
+
## Methodology
|
|
89
|
+
[Audit process: public API surface identification, breaking change criteria, severity assessment]
|
|
90
|
+
|
|
91
|
+
## P1.M1 - Critical Fixes Audit
|
|
92
|
+
### WorkflowLogger.child() Signature Fix
|
|
93
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
94
|
+
|
|
95
|
+
## P1.M2 - Major Fixes Audit
|
|
96
|
+
### Promise.allSettled for Concurrent Tasks
|
|
97
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
98
|
+
|
|
99
|
+
### ErrorMergeStrategy Implementation
|
|
100
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
101
|
+
|
|
102
|
+
### trackTiming Default Documentation
|
|
103
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
104
|
+
|
|
105
|
+
## P1.M3 - Minor Fixes Audit
|
|
106
|
+
### Console.error to Logger Replacement
|
|
107
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
108
|
+
|
|
109
|
+
### Tree Debugger Optimization
|
|
110
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
111
|
+
|
|
112
|
+
### Workflow Name Validation
|
|
113
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
114
|
+
|
|
115
|
+
### isDescendantOf Public API
|
|
116
|
+
[API impact assessment, breaking change determination, severity, mitigation]
|
|
117
|
+
|
|
118
|
+
## Summary of Findings
|
|
119
|
+
### Breaking Changes Inventory
|
|
120
|
+
[Table of all breaking changes with severity and migration required]
|
|
121
|
+
|
|
122
|
+
### Non-Breaking Changes Justification
|
|
123
|
+
[Table of non-breaking changes with justification]
|
|
124
|
+
|
|
125
|
+
## Version Recommendation
|
|
126
|
+
[Semantic versioning analysis with recommended version bump]
|
|
127
|
+
|
|
128
|
+
## Migration Guide
|
|
129
|
+
[Step-by-step migration for any breaking changes]
|
|
130
|
+
|
|
131
|
+
## References
|
|
132
|
+
[Links to implementations, tests, and related documentation]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Success Criteria
|
|
136
|
+
|
|
137
|
+
- [ ] Report created at specified path with complete structure
|
|
138
|
+
- [ ] All 11 bug fixes audited (1 Critical + 3 Major + 4 Minor + 1 Major doc)
|
|
139
|
+
- [ ] Public API surface clearly defined with src/index.ts as source
|
|
140
|
+
- [ ] Each fix classified as Breaking or Non-Breaking with justification
|
|
141
|
+
- [ ] Breaking changes include severity assessment (Critical/High/Medium/Low)
|
|
142
|
+
- [ ] Breaking changes include mitigation strategy and migration path
|
|
143
|
+
- [ ] Non-breaking changes include backward compatibility justification
|
|
144
|
+
- [ ] Version recommendation provided with semver reasoning
|
|
145
|
+
- [ ] All file references use absolute paths with line numbers
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## All Needed Context
|
|
150
|
+
|
|
151
|
+
### Context Completeness Check
|
|
152
|
+
|
|
153
|
+
**"No Prior Knowledge" test passed**: This PRP provides complete context including:
|
|
154
|
+
- Exact public API surface definition from src/index.ts
|
|
155
|
+
- Breaking change criteria from semver.org and TypeScript best practices
|
|
156
|
+
- All bug fix implementation locations with specific line numbers
|
|
157
|
+
- Test validation results proving backward compatibility
|
|
158
|
+
- Severity assessment framework with decision trees
|
|
159
|
+
- Migration patterns from existing CHANGELOG.md
|
|
160
|
+
|
|
161
|
+
### Documentation & References
|
|
162
|
+
|
|
163
|
+
```yaml
|
|
164
|
+
# MUST READ - Breaking change standards
|
|
165
|
+
- url: https://semver.org/spec/v2.0.0.html
|
|
166
|
+
why: Definitive specification for what constitutes breaking changes
|
|
167
|
+
section: Section 2 (Summary) - MAJOR version increments for incompatible API changes
|
|
168
|
+
critical: "Breaking change: A change that breaks existing code or changes behavior in an incompatible way"
|
|
169
|
+
|
|
170
|
+
- url: https://semver.org/spec/v2.0.0.html#spec-item-8
|
|
171
|
+
why: Specific definition of MAJOR version increment criteria
|
|
172
|
+
critical: "MAJOR version when you make incompatible API changes"
|
|
173
|
+
|
|
174
|
+
# MUST READ - TypeScript breaking changes
|
|
175
|
+
- url: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes
|
|
176
|
+
why: TypeScript-specific breaking change patterns (type narrowing, overload changes, etc.)
|
|
177
|
+
critical: Function signature changes can be breaking even with overloads if behavior differs
|
|
178
|
+
|
|
179
|
+
# MUST READ - Project public API
|
|
180
|
+
- file: /home/dustin/projects/groundswell/src/index.ts
|
|
181
|
+
why: Complete public API surface - only exports listed here are public APIs
|
|
182
|
+
pattern: All public classes, types, functions, decorators
|
|
183
|
+
critical: Breaking changes can ONLY occur to items exported from this file
|
|
184
|
+
|
|
185
|
+
# CRITICAL - Bug fix implementations to audit
|
|
186
|
+
- file: /home/dustin/projects/groundswell/src/core/logger.ts
|
|
187
|
+
why: WorkflowLogger.child() signature change - function overloads for backward compatibility
|
|
188
|
+
lines: 98-111
|
|
189
|
+
public_api: Yes - WorkflowLogger is exported from src/index.ts
|
|
190
|
+
audit_focus: Does child() overload pattern truly maintain backward compatibility?
|
|
191
|
+
|
|
192
|
+
- file: /home/dustin/projects/groundswell/src/decorators/task.ts
|
|
193
|
+
why: Promise.allSettled replacement for concurrent tasks - behavior change
|
|
194
|
+
lines: 112-142
|
|
195
|
+
public_api: Yes - Task decorator is exported from src/index.ts
|
|
196
|
+
audit_focus: Does Promise.allSettled behavior change break existing error handling expectations?
|
|
197
|
+
|
|
198
|
+
- file: /home/dustin/projects/groundswell/src/types/decorators.ts
|
|
199
|
+
why: TaskOptions interface - errorMergeStrategy property added
|
|
200
|
+
lines: 25-32
|
|
201
|
+
public_api: Yes - TaskOptions type is exported from src/index.ts
|
|
202
|
+
audit_focus: Adding optional properties to interfaces is non-breaking (additive change)
|
|
203
|
+
|
|
204
|
+
- file: /home/dustin/projects/groundswell/src/utils/workflow-error-utils.ts
|
|
205
|
+
why: mergeWorkflowErrors utility function - new public API
|
|
206
|
+
lines: 23-56
|
|
207
|
+
public_api: Yes - mergeWorkflowErrors is exported from src/index.ts
|
|
208
|
+
audit_focus: New public function is additive (non-breaking)
|
|
209
|
+
|
|
210
|
+
- file: /home/dustin/projects/groundswell/src/core/workflow.ts
|
|
211
|
+
why: Multiple fixes - name validation, isDescendantOf public API
|
|
212
|
+
lines: 98-107, 201-219
|
|
213
|
+
public_api: Yes - Workflow class is exported from src/index.ts
|
|
214
|
+
audit_focus: Constructor validation may throw for previously accepted inputs (potentially breaking)
|
|
215
|
+
audit_focus: isDescendantOf made public is additive (non-breaking)
|
|
216
|
+
|
|
217
|
+
- file: /home/dustin/projects/groundswell/src/decorators/step.ts
|
|
218
|
+
why: trackTiming default behavior documentation only
|
|
219
|
+
lines: 94-101
|
|
220
|
+
public_api: Yes - Step decorator is exported from src/index.ts
|
|
221
|
+
audit_focus: Documentation-only change is non-breaking (behavior unchanged)
|
|
222
|
+
|
|
223
|
+
- file: /home/dustin/projects/groundswell/src/core/workflow.ts
|
|
224
|
+
why: console.error to logger replacement
|
|
225
|
+
lines: 426, 444
|
|
226
|
+
public_api: No - internal implementation detail
|
|
227
|
+
audit_focus: Implementation-only change is non-breaking
|
|
228
|
+
|
|
229
|
+
- file: /home/dustin/projects/groundswell/src/debugger/tree-debugger.ts
|
|
230
|
+
why: Tree debugger performance optimization
|
|
231
|
+
lines: 65-84, 92-117
|
|
232
|
+
public_api: Yes - WorkflowTreeDebugger is exported from src/index.ts
|
|
233
|
+
audit_focus: Performance optimization without API changes is non-breaking
|
|
234
|
+
|
|
235
|
+
# VERIFICATION DOCUMENTS - For validation
|
|
236
|
+
- file: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md
|
|
237
|
+
why: Proof that child() signature change maintains backward compatibility
|
|
238
|
+
critical: All 361 tests pass with zero code modifications required
|
|
239
|
+
|
|
240
|
+
- file: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md
|
|
241
|
+
why: Full test suite validation proving no regressions
|
|
242
|
+
critical: 100% test pass rate confirms backward compatibility
|
|
243
|
+
|
|
244
|
+
# PROJECT DOCUMENTATION
|
|
245
|
+
- file: /home/dustin/projects/groundswell/CHANGELOG.md
|
|
246
|
+
why: Project's changelog with migration guide patterns
|
|
247
|
+
pattern: Use for migration guide template and breaking change documentation format
|
|
248
|
+
gotcha: Version 0.0.2 attachChild() behavior change has detailed migration guide
|
|
249
|
+
|
|
250
|
+
- file: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md
|
|
251
|
+
why: PRD specification for original behavior that bugs violated
|
|
252
|
+
critical: Bug fixes that correct PRD violations are NOT breaking (old behavior was buggy)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Current Codebase tree
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Relevant portion for audit output
|
|
259
|
+
plan/
|
|
260
|
+
└── 001_d3bb02af4886/
|
|
261
|
+
└── bugfix/
|
|
262
|
+
└── 001_e8e04329daf3/
|
|
263
|
+
└── P1M4T3S1/
|
|
264
|
+
├── PRP.md # This file
|
|
265
|
+
└── BREAKING_CHANGES_AUDIT.md # OUTPUT: Audit report
|
|
266
|
+
|
|
267
|
+
# Source files to audit
|
|
268
|
+
src/
|
|
269
|
+
├── index.ts # Public API surface definition
|
|
270
|
+
├── core/
|
|
271
|
+
│ ├── logger.ts # WorkflowLogger.child() signature (lines 98-111)
|
|
272
|
+
│ └── workflow.ts # Name validation (98-107), isDescendantOf (201-219)
|
|
273
|
+
├── decorators/
|
|
274
|
+
│ ├── step.ts # trackTiming default (94-101)
|
|
275
|
+
│ └── task.ts # Promise.allSettled (112-142)
|
|
276
|
+
├── types/
|
|
277
|
+
│ └── decorators.ts # TaskOptions.errorMergeStrategy (25-32)
|
|
278
|
+
├── utils/
|
|
279
|
+
│ └── workflow-error-utils.ts # mergeWorkflowErrors (23-56)
|
|
280
|
+
└── debugger/
|
|
281
|
+
└── tree-debugger.ts # Optimization (65-84, 92-117)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Desired Codebase tree with files to be added
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
plan/
|
|
288
|
+
└── 001_d3bb02af4886/
|
|
289
|
+
└── bugfix/
|
|
290
|
+
└── 001_e8e04329daf3/
|
|
291
|
+
└── P1M4T3S1/
|
|
292
|
+
├── PRP.md # This file
|
|
293
|
+
└── BREAKING_CHANGES_AUDIT.md # OUTPUT: Comprehensive breaking changes audit report
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Known Gotchas of our codebase & Library Quirks
|
|
297
|
+
|
|
298
|
+
```markdown
|
|
299
|
+
# CRITICAL: Breaking Change Criteria for This Project
|
|
300
|
+
|
|
301
|
+
# Breaking changes are ONLY changes to PUBLIC API (exports from src/index.ts)
|
|
302
|
+
# Internal implementation changes are NEVER breaking changes
|
|
303
|
+
|
|
304
|
+
# Public API Surface:
|
|
305
|
+
# - All classes, functions, types exported from src/index.ts
|
|
306
|
+
# - Method signatures of exported classes
|
|
307
|
+
# - Properties of exported interfaces/types
|
|
308
|
+
# - Decorator behavior and options
|
|
309
|
+
# - Observable event types and structures
|
|
310
|
+
|
|
311
|
+
# NOT Breaking Changes:
|
|
312
|
+
# - Internal refactoring (private methods, helpers)
|
|
313
|
+
# - Performance optimizations that don't change behavior
|
|
314
|
+
# - Bug fixes that align behavior with documented/PRD specification
|
|
315
|
+
# - Adding new optional properties to interfaces
|
|
316
|
+
# - Adding new exported functions/classes
|
|
317
|
+
# - Making private methods public (additive)
|
|
318
|
+
# - Documentation-only changes
|
|
319
|
+
|
|
320
|
+
# BREAKING CHANGE PATTERNS:
|
|
321
|
+
|
|
322
|
+
# 1. Function/Method Signature Changes
|
|
323
|
+
# - Removing parameters or making them required
|
|
324
|
+
# - Changing parameter types (narrowing)
|
|
325
|
+
# - Changing return types
|
|
326
|
+
# - Reordering parameters
|
|
327
|
+
|
|
328
|
+
# 2. Interface/Type Changes
|
|
329
|
+
# - Removing properties from interfaces
|
|
330
|
+
# - Making optional properties required
|
|
331
|
+
# - Changing property types (narrowing)
|
|
332
|
+
# - Removing exported types entirely
|
|
333
|
+
|
|
334
|
+
# 3. Behavioral Changes
|
|
335
|
+
# - Changing default values that affect behavior
|
|
336
|
+
# - Modifying error handling in breaking ways
|
|
337
|
+
# - Changing validation rules (tightening)
|
|
338
|
+
# - Changing observable event structures
|
|
339
|
+
|
|
340
|
+
# 4. Removal Changes
|
|
341
|
+
# - Removing exported functions/classes/methods
|
|
342
|
+
# - Removing decorator options
|
|
343
|
+
# - Removing event types
|
|
344
|
+
|
|
345
|
+
# SEMVER GUIDANCE:
|
|
346
|
+
# - MAJOR: Any breaking change to public API
|
|
347
|
+
# - MINOR: Additive changes only (backward compatible)
|
|
348
|
+
# - PATCH: Bug fixes (backward compatible)
|
|
349
|
+
|
|
350
|
+
# GOTCHA: Version 0.x.x special rules
|
|
351
|
+
# According to semver, anything < 1.0.0 may have breaking changes
|
|
352
|
+
# However, this project should still document breaking changes for user trust
|
|
353
|
+
|
|
354
|
+
# GOTCHA: Function overloads
|
|
355
|
+
# WorkflowLogger.child() uses overloads for backward compatibility
|
|
356
|
+
# This is NON-BREAKING if all existing call patterns still work
|
|
357
|
+
# Verify by checking: do all existing tests pass without modification?
|
|
358
|
+
|
|
359
|
+
# GOTCHA: Constructor validation
|
|
360
|
+
# Workflow name validation rejects previously accepted inputs
|
|
361
|
+
# This IS POTENTIALLY BREAKING if users relied on empty/invalid names
|
|
362
|
+
# However: empty names don't make sense, likely fixing undefined behavior
|
|
363
|
+
# Classification: Low severity breaking change (fixing undefined behavior)
|
|
364
|
+
|
|
365
|
+
# GOTCHA: Promise.allSettled vs Promise.all
|
|
366
|
+
# Key difference: allSettled waits for ALL promises to complete
|
|
367
|
+
# Default behavior throws first error (backward compatible)
|
|
368
|
+
# This is NON-BREAKING because default behavior unchanged
|
|
369
|
+
|
|
370
|
+
# GOTCHA: Bug fixes correcting PRD violations
|
|
371
|
+
# If old behavior violated PRD specification, it was a bug
|
|
372
|
+
# Fixing bugs is NOT a breaking change (old behavior was wrong)
|
|
373
|
+
# Exception: if users rely on buggy behavior, document impact
|
|
374
|
+
|
|
375
|
+
# GOTCHA: Test suite validation
|
|
376
|
+
# 100% test pass rate STRONGLY suggests no breaking changes
|
|
377
|
+
# But tests may not cover all real-world usage patterns
|
|
378
|
+
# Audit should verify this by analyzing API surface, not just test results
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Implementation Blueprint
|
|
384
|
+
|
|
385
|
+
### Data models and structure
|
|
386
|
+
|
|
387
|
+
No data models needed - this is pure analysis and documentation.
|
|
388
|
+
|
|
389
|
+
The audit report uses a structured markdown format:
|
|
390
|
+
|
|
391
|
+
```markdown
|
|
392
|
+
# Breaking Change Audit Entry Template
|
|
393
|
+
|
|
394
|
+
## [Bug Fix Name]
|
|
395
|
+
|
|
396
|
+
### Public API Impact
|
|
397
|
+
**File**: `path/to/file.ts:##-##`
|
|
398
|
+
**Exported**: Yes/No - [Explain what is exported and how]
|
|
399
|
+
**Public API Element**: [Class.method / Interface / Function / Decorator]
|
|
400
|
+
|
|
401
|
+
### Breaking Change Assessment
|
|
402
|
+
**Classification**: BREAKING / NON-BREAKING
|
|
403
|
+
**Severity**: Critical / High / Medium / Low / N/A (for non-breaking)
|
|
404
|
+
|
|
405
|
+
### Reasoning
|
|
406
|
+
[Explain why this is or isn't a breaking change with specific references]
|
|
407
|
+
|
|
408
|
+
### Migration Required
|
|
409
|
+
**Yes/No**: [If yes, provide migration steps]
|
|
410
|
+
|
|
411
|
+
### Mitigation Strategy
|
|
412
|
+
[For breaking changes: how users can migrate their code]
|
|
413
|
+
[For non-breaking changes: why existing code continues to work]
|
|
414
|
+
|
|
415
|
+
### Verification
|
|
416
|
+
**Test Coverage**: [Reference to test files proving backward compatibility]
|
|
417
|
+
**Manual Verification**: [Commands to verify if needed]
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### Implementation Tasks (ordered by dependencies)
|
|
421
|
+
|
|
422
|
+
```yaml
|
|
423
|
+
Task 1: DEFINE public API surface from src/index.ts
|
|
424
|
+
- READ: /home/dustin/projects/groundswell/src/index.ts
|
|
425
|
+
- EXTRACT: Complete list of all exported classes, functions, types, decorators
|
|
426
|
+
- CATALOG: Each public API element with its source file
|
|
427
|
+
- OUTPUT: Public API inventory table
|
|
428
|
+
|
|
429
|
+
Task 2: AUDIT P1.M1 - Critical Fixes (1 fix)
|
|
430
|
+
- ANALYZE: WorkflowLogger.child() signature change
|
|
431
|
+
- VERIFY: Function overload pattern maintains backward compatibility
|
|
432
|
+
- CHECK: All 20 usage locations continue to work (reference VERIFICATION_REPORT.md)
|
|
433
|
+
- CLASSIFY: Breaking or non-breaking with justification
|
|
434
|
+
- DOCUMENT: Findings in audit report
|
|
435
|
+
|
|
436
|
+
Task 3: AUDIT P1.M2 - Major Fixes (3 fixes)
|
|
437
|
+
- ANALYZE: Promise.allSettled for concurrent tasks (src/decorators/task.ts:112-142)
|
|
438
|
+
- ASSESS: Behavior change impact on error handling expectations
|
|
439
|
+
- VERIFY: Default behavior unchanged (throws first error)
|
|
440
|
+
- CLASSIFY: Breaking or non-breaking with justification
|
|
441
|
+
- DOCUMENT: Findings in audit report
|
|
442
|
+
|
|
443
|
+
- ANALYZE: ErrorMergeStrategy implementation (src/types/decorators.ts:25-32)
|
|
444
|
+
- ASSESS: Additive interface change (optional property)
|
|
445
|
+
- VERIFY: Property is optional, default behavior unchanged
|
|
446
|
+
- CLASSIFY: Non-breaking (additive)
|
|
447
|
+
- DOCUMENT: Findings in audit report
|
|
448
|
+
|
|
449
|
+
- ANALYZE: trackTiming default documentation (PRD.md, src/decorators/step.ts:94-101)
|
|
450
|
+
- ASSESS: Documentation-only change, no behavior change
|
|
451
|
+
- CLASSIFY: Non-breaking (documentation)
|
|
452
|
+
- DOCUMENT: Findings in audit report
|
|
453
|
+
|
|
454
|
+
Task 4: AUDIT P1.M3 - Minor Fixes (4 fixes)
|
|
455
|
+
- ANALYZE: Console.error to logger replacement (src/core/workflow.ts:426, 444)
|
|
456
|
+
- ASSESS: Internal implementation detail only
|
|
457
|
+
- CLASSIFY: Non-breaking (internal)
|
|
458
|
+
- DOCUMENT: Findings in audit report
|
|
459
|
+
|
|
460
|
+
- ANALYZE: Tree debugger optimization (src/debugger/tree-debugger.ts:65-84, 92-117)
|
|
461
|
+
- ASSESS: Performance optimization without API changes
|
|
462
|
+
- CLASSIFY: Non-breaking (performance)
|
|
463
|
+
- DOCUMENT: Findings in audit report
|
|
464
|
+
|
|
465
|
+
- ANALYZE: Workflow name validation (src/core/workflow.ts:98-107)
|
|
466
|
+
- ASSESS: Constructor now rejects previously accepted invalid inputs
|
|
467
|
+
- EVALUATE: Empty/whitespace names don't make sense (fixing undefined behavior)
|
|
468
|
+
- CLASSIFY: Potentially breaking (low severity)
|
|
469
|
+
- DOCUMENT: Findings in audit report with migration steps
|
|
470
|
+
|
|
471
|
+
- ANALYZE: isDescendantOf public API (src/core/workflow.ts:201-219)
|
|
472
|
+
- ASSESS: Private method made public (additive change)
|
|
473
|
+
- CLASSIFY: Non-breaking (additive)
|
|
474
|
+
- DOCUMENT: Findings in audit report
|
|
475
|
+
|
|
476
|
+
Task 5: ASSESS severity for all breaking changes
|
|
477
|
+
- APPLY: Severity assessment framework
|
|
478
|
+
- CRITICAL: Data loss, security issues, complete feature breakage
|
|
479
|
+
- HIGH: Major feature disruption, complex migration required
|
|
480
|
+
- MEDIUM: Moderate disruption, straightforward migration
|
|
481
|
+
- LOW: Minor disruption, simple migration, fixes undefined behavior
|
|
482
|
+
- DOCUMENT: Severity for each breaking change with justification
|
|
483
|
+
|
|
484
|
+
Task 6: DETERMINE semantic version recommendation
|
|
485
|
+
- ANALYZE: Breaking changes inventory
|
|
486
|
+
- APPLY: Semantic versioning rules (semver.org)
|
|
487
|
+
- IF any breaking changes exist: MAJOR version bump (0.0.3 → 1.0.0 or 0.0.3 → 0.1.0)
|
|
488
|
+
- IF no breaking changes: PATCH version bump (0.0.3 → 0.0.4)
|
|
489
|
+
- DOCUMENT: Version recommendation with detailed reasoning
|
|
490
|
+
|
|
491
|
+
Task 7: CREATE migration guide for breaking changes
|
|
492
|
+
- FOR each breaking change:
|
|
493
|
+
- Write "What Changed" section explaining the change
|
|
494
|
+
- Provide "Before" code example showing problematic pattern
|
|
495
|
+
- Provide "After" code example showing correct pattern
|
|
496
|
+
- List numbered migration steps
|
|
497
|
+
- FOLLOW: CHANGELOG.md migration guide pattern
|
|
498
|
+
- DOCUMENT: In report's Migration Guide section
|
|
499
|
+
|
|
500
|
+
Task 8: WRITE comprehensive audit report
|
|
501
|
+
- CREATE: /home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md
|
|
502
|
+
- INCLUDE: Executive summary with overall findings
|
|
503
|
+
- INCLUDE: Methodology section explaining audit process
|
|
504
|
+
- INCLUDE: Detailed audit for each of 11 bug fixes
|
|
505
|
+
- INCLUDE: Summary of findings table
|
|
506
|
+
- INCLUDE: Version recommendation with semver analysis
|
|
507
|
+
- INCLUDE: Migration guide (if breaking changes exist)
|
|
508
|
+
- INCLUDE: References with file:line links
|
|
509
|
+
- FORMAT: Using markdown template from Implementation Blueprint
|
|
510
|
+
|
|
511
|
+
Task 9: VERIFY report completeness
|
|
512
|
+
- CHECK: All 11 bug fixes audited
|
|
513
|
+
- CHECK: Each fix has breaking/non-breaking classification
|
|
514
|
+
- CHECK: Breaking changes have severity and migration
|
|
515
|
+
- CHECK: Non-breaking changes have justification
|
|
516
|
+
- CHECK: Version recommendation is clear
|
|
517
|
+
- CHECK: All file references use absolute paths with line numbers
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
### Implementation Patterns & Key Details
|
|
521
|
+
|
|
522
|
+
```markdown
|
|
523
|
+
# AUDIT METHODOLOGY
|
|
524
|
+
|
|
525
|
+
## Step 1: Identify Public API Surface
|
|
526
|
+
```bash
|
|
527
|
+
# Get complete public API from src/index.ts
|
|
528
|
+
grep -E '^export ' /home/dustin/projects/groundswell/src/index.ts
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
## Step 2: For Each Bug Fix, Answer These Questions:
|
|
532
|
+
|
|
533
|
+
### A. What changed?
|
|
534
|
+
- Read the implementation file at specified line numbers
|
|
535
|
+
- Identify the specific code change
|
|
536
|
+
- Determine if it affects public API (exports from src/index.ts)
|
|
537
|
+
|
|
538
|
+
### B. Is it public API?
|
|
539
|
+
- Check if the changed element is exported from src/index.ts
|
|
540
|
+
- If NO → NON-BREAKING (internal implementation)
|
|
541
|
+
- If YES → Proceed to C
|
|
542
|
+
|
|
543
|
+
### C. Did the signature/behavior change?
|
|
544
|
+
- Function/method: Was signature modified?
|
|
545
|
+
- Interface: Were properties removed/required?
|
|
546
|
+
- Behavior: Did observable behavior change?
|
|
547
|
+
|
|
548
|
+
### D. Is the change breaking?
|
|
549
|
+
- SIGNATURE CHANGE: Is backward compatibility maintained? (overloads, unions)
|
|
550
|
+
- ADDITIVE CHANGE: Adding optional properties/methods → NON-BREAKING
|
|
551
|
+
- BEHAVIOR CHANGE: Does it break existing expectations?
|
|
552
|
+
- BUG FIX: Does it fix PRD-violating behavior? → May be non-breaking
|
|
553
|
+
|
|
554
|
+
### E. Severity Assessment (for breaking changes only)
|
|
555
|
+
- CRITICAL: Data loss, security vulnerabilities, complete feature failure
|
|
556
|
+
- HIGH: Core feature disruption, complex migration, affects many users
|
|
557
|
+
- MEDIUM: Moderate disruption, straightforward migration, affects few users
|
|
558
|
+
- LOW: Minor impact, simple migration, fixes undefined/invalid behavior
|
|
559
|
+
|
|
560
|
+
# BREAKING CHANGE DECISION TREE
|
|
561
|
+
|
|
562
|
+
```
|
|
563
|
+
┌─────────────────────────────────────┐
|
|
564
|
+
│ Is this change to PUBLIC API? │
|
|
565
|
+
│ (exported from src/index.ts) │
|
|
566
|
+
└──────────────┬──────────────────────┘
|
|
567
|
+
│
|
|
568
|
+
┌──────┴──────┐
|
|
569
|
+
│ NO │ YES
|
|
570
|
+
│ │
|
|
571
|
+
NON-BREAKING ┌───┴──────────────────┐
|
|
572
|
+
(internal) │ Type of change? │
|
|
573
|
+
└───┬──────────────────┘
|
|
574
|
+
│
|
|
575
|
+
┌──────────────┼──────────────┐
|
|
576
|
+
│ │ │
|
|
577
|
+
ADDITIVE BEHAVIOR SIGNATURE
|
|
578
|
+
(new stuff) (modified) (modified)
|
|
579
|
+
│ │ │
|
|
580
|
+
│ ┌────┴────┐ │
|
|
581
|
+
│ │ │ │
|
|
582
|
+
NON-BREAKING MAY BE MAY BE
|
|
583
|
+
BREAKING BREAKING
|
|
584
|
+
│ │
|
|
585
|
+
┌─────┴─────┐ │
|
|
586
|
+
│ │ │
|
|
587
|
+
PRD BACKWARD OVERLOADS/
|
|
588
|
+
BUG COMPAT UNIONS
|
|
589
|
+
FIX BROKEN MAINTAINED
|
|
590
|
+
│ │ │
|
|
591
|
+
│ BREAKING NON-BREAKING
|
|
592
|
+
│
|
|
593
|
+
NON-BREAKING
|
|
594
|
+
(old behavior was wrong)
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
# NON-BREAKING JUSTIFICATION PATTERNS
|
|
598
|
+
|
|
599
|
+
## Pattern 1: Additive Change (New Optional Features)
|
|
600
|
+
"Justification: Adding optional `errorMergeStrategy` property to `TaskOptions` interface.
|
|
601
|
+
This is purely additive - existing code without this property continues to work unchanged.
|
|
602
|
+
The property has a default value that maintains previous behavior."
|
|
603
|
+
|
|
604
|
+
## Pattern 2: Backward Compatible Implementation
|
|
605
|
+
"Justification: `WorkflowLogger.child()` uses TypeScript function overloads to support
|
|
606
|
+
both the old string-based API and new Partial<LogEntry> API. All 20 existing usage
|
|
607
|
+
locations continue to work without modification (verified in VERIFICATION_REPORT.md)."
|
|
608
|
+
|
|
609
|
+
## Pattern 3: Internal Implementation Detail
|
|
610
|
+
"Justification: Replacing `console.error()` with `this.logger.error()` is an internal
|
|
611
|
+
implementation detail. The `Workflow` class's public API and behavior remain unchanged.
|
|
612
|
+
Observer errors are still handled, just logged differently."
|
|
613
|
+
|
|
614
|
+
## Pattern 4: Performance Optimization
|
|
615
|
+
"Justification: Tree debugger optimization changes internal node map update algorithm
|
|
616
|
+
from O(n) to O(k) for subtree operations. The public API of `WorkflowTreeDebugger`
|
|
617
|
+
is unchanged - same methods, same behavior, better performance."
|
|
618
|
+
|
|
619
|
+
## Pattern 5: Documentation Only
|
|
620
|
+
"Justification: The `trackTiming` default behavior is unchanged (still defaults to `true`).
|
|
621
|
+
This fix only clarifies the documentation in PRD.md. No code behavior was modified."
|
|
622
|
+
|
|
623
|
+
## Pattern 6: Bug Fix Aligning with PRD
|
|
624
|
+
"Justification: The old `child(parentLogId: string)` signature violated the PRD
|
|
625
|
+
specification which required `child(meta: Partial<LogEntry>)`. The new implementation
|
|
626
|
+
correctly follows the PRD while maintaining backward compatibility via overloads.
|
|
627
|
+
Since the old behavior was a PRD violation, this fix is non-breaking."
|
|
628
|
+
|
|
629
|
+
# MIGRATION GUIDE PATTERN
|
|
630
|
+
|
|
631
|
+
## For Workflow Name Validation Breaking Change
|
|
632
|
+
|
|
633
|
+
**What Changed**:
|
|
634
|
+
The `Workflow` constructor now validates the `name` parameter and throws a `TypeError`
|
|
635
|
+
for empty strings, whitespace-only names, or names exceeding 100 characters. Previously,
|
|
636
|
+
these invalid names were accepted.
|
|
637
|
+
|
|
638
|
+
**Before (Invalid Pattern)**:
|
|
639
|
+
```typescript
|
|
640
|
+
// This now throws TypeError
|
|
641
|
+
const workflow = new Workflow({ name: '' });
|
|
642
|
+
const workflow2 = new Workflow({ name: ' ' });
|
|
643
|
+
const workflow3 = new Workflow({ name: 'a'.repeat(101) });
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
**After (Correct Pattern)**:
|
|
647
|
+
```typescript
|
|
648
|
+
// Provide meaningful names
|
|
649
|
+
const workflow = new Workflow({ name: 'MyWorkflow' });
|
|
650
|
+
const workflow2 = new Workflow({ name: 'DataProcessor' });
|
|
651
|
+
const workflow3 = new Workflow({ name: 'Analysis' });
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
**Migration Steps**:
|
|
655
|
+
1. Search your codebase for `new Workflow({` patterns
|
|
656
|
+
2. Verify all workflow names are non-empty strings with meaningful content
|
|
657
|
+
3. Ensure no workflow names exceed 100 characters
|
|
658
|
+
4. Run your test suite to catch any validation failures
|
|
659
|
+
5. Update tests that use empty/invalid names to use valid names
|
|
660
|
+
|
|
661
|
+
**Impact Assessment**:
|
|
662
|
+
- **Severity**: LOW - Empty names don't represent valid usage
|
|
663
|
+
- **Likelihood**: RARE - Most users use meaningful names
|
|
664
|
+
- **Migration**: SIMPLE - Provide valid names
|
|
665
|
+
|
|
666
|
+
# VERSION RECOMMENDATION FORMAT
|
|
667
|
+
|
|
668
|
+
## Semantic Versioning Analysis
|
|
669
|
+
|
|
670
|
+
### Breaking Changes Found: [COUNT]
|
|
671
|
+
- [List breaking changes with severity]
|
|
672
|
+
|
|
673
|
+
### Version Bump Recommendation: [RECOMMENDED_VERSION]
|
|
674
|
+
|
|
675
|
+
**Reasoning**:
|
|
676
|
+
- According to [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html):
|
|
677
|
+
- MAJOR: [X.0.0] - Incompatible API changes
|
|
678
|
+
- MINOR: [0.X.0] - Backward-compatible functionality
|
|
679
|
+
- PATCH: [0.0.X] - Backward-compatible bug fixes
|
|
680
|
+
|
|
681
|
+
**Decision**:
|
|
682
|
+
- [IF breaking changes exist] → [MAJOR bump from 0.0.3]
|
|
683
|
+
- [IF no breaking changes] → [PATCH bump from 0.0.3]
|
|
684
|
+
|
|
685
|
+
**Additional Considerations**:
|
|
686
|
+
- Version 0.x.x: According to semver, anything < 1.0.0 may have breaking changes
|
|
687
|
+
- However, documenting breaking changes maintains user trust
|
|
688
|
+
- Consider communication strategy if breaking changes exist
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
### Integration Points
|
|
692
|
+
|
|
693
|
+
```yaml
|
|
694
|
+
FILES_TO_READ:
|
|
695
|
+
- src/index.ts - Public API surface definition
|
|
696
|
+
- src/core/logger.ts:98-111 - child() signature implementation
|
|
697
|
+
- src/decorators/task.ts:112-142 - Promise.allSettled implementation
|
|
698
|
+
- src/types/decorators.ts:25-32 - TaskOptions interface
|
|
699
|
+
- src/utils/workflow-error-utils.ts:23-56 - mergeWorkflowErrors
|
|
700
|
+
- src/decorators/step.ts:94-101 - trackTiming implementation
|
|
701
|
+
- src/core/workflow.ts:98-107 - Name validation
|
|
702
|
+
- src/core/workflow.ts:201-219 - isDescendantOf public API
|
|
703
|
+
- src/core/workflow.ts:426, 444 - Console.error replacement
|
|
704
|
+
- src/debugger/tree-debugger.ts:65-84, 92-117 - Tree debugger optimization
|
|
705
|
+
|
|
706
|
+
VERIFICATION_DOCUMENTS:
|
|
707
|
+
- plan/.../P1M1T1S4/VERIFICATION_REPORT.md - child() backward compatibility proof
|
|
708
|
+
- plan/.../P1M4T1S1/TEST_EXECUTION_REPORT.md - Full test suite validation
|
|
709
|
+
|
|
710
|
+
EXTERNAL_STANDARDS:
|
|
711
|
+
- https://semver.org/spec/v2.0.0.html - Semantic versioning specification
|
|
712
|
+
- https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes - TypeScript breaking changes
|
|
713
|
+
|
|
714
|
+
OUTPUT_FILE:
|
|
715
|
+
- path: plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md
|
|
716
|
+
- format: Markdown with sections defined in Implementation Blueprint
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
---
|
|
720
|
+
|
|
721
|
+
## Validation Loop
|
|
722
|
+
|
|
723
|
+
### Level 1: Report Structure Validation
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
# Verify report exists and has required sections
|
|
727
|
+
REPORT="plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md"
|
|
728
|
+
|
|
729
|
+
# Check file exists
|
|
730
|
+
test -f "$REPORT" || echo "ERROR: Report not found"
|
|
731
|
+
|
|
732
|
+
# Verify required sections exist
|
|
733
|
+
grep -q "^# Breaking Changes Audit Report" "$REPORT" && echo "✓ Title found"
|
|
734
|
+
grep -q "^## Executive Summary" "$REPORT" && echo "✓ Executive Summary found"
|
|
735
|
+
grep -q "^## Methodology" "$REPORT" && echo "✓ Methodology found"
|
|
736
|
+
grep -q "^## P1.M1 - Critical Fixes Audit" "$REPORT" && echo "✓ Critical Fixes section found"
|
|
737
|
+
grep -q "^## P1.M2 - Major Fixes Audit" "$REPORT" && echo "✓ Major Fixes section found"
|
|
738
|
+
grep -q "^## P1.M3 - Minor Fixes Audit" "$REPORT" && echo "✓ Minor Fixes section found"
|
|
739
|
+
grep -q "^## Summary of Findings" "$REPORT" && echo "✓ Summary found"
|
|
740
|
+
grep -q "^## Version Recommendation" "$REPORT" && echo "✓ Version Recommendation found"
|
|
741
|
+
|
|
742
|
+
# Expected: All sections present
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
### Level 2: Content Completeness Validation
|
|
746
|
+
|
|
747
|
+
```bash
|
|
748
|
+
REPORT="plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md"
|
|
749
|
+
|
|
750
|
+
# Verify all bug fixes are audited
|
|
751
|
+
grep -q "WorkflowLogger.child()" "$REPORT" && echo "✓ P1.M1 audit present"
|
|
752
|
+
grep -q "Promise.allSettled" "$REPORT" && echo "✓ P1.M2.T1 audit present"
|
|
753
|
+
grep -q "ErrorMergeStrategy" "$REPORT" && echo "✓ P1.M2.T2 audit present"
|
|
754
|
+
grep -q "trackTiming" "$REPORT" && echo "✓ P1.M2.T3 audit present"
|
|
755
|
+
grep -q "console.error" "$REPORT" && echo "✓ P1.M3.T1 audit present"
|
|
756
|
+
grep -q "Tree Debugger" "$REPORT" && echo "✓ P1.M3.T2 audit present"
|
|
757
|
+
grep -q "name validation" "$REPORT" && echo "✓ P1.M3.T3 audit present"
|
|
758
|
+
grep -q "isDescendantOf" "$REPORT" && echo "✓ P1.M3.T4 audit present"
|
|
759
|
+
|
|
760
|
+
# Verify classification for each fix
|
|
761
|
+
grep -c "Classification:" "$REPORT" | grep -qE "^[89]$" && echo "✓ All fixes have classification"
|
|
762
|
+
|
|
763
|
+
# Verify file references
|
|
764
|
+
grep -c 'src/[^)]*\.ts:[0-9]' "$REPORT" | grep -qE "^[0-9]+$" && echo "✓ File references present"
|
|
765
|
+
|
|
766
|
+
# Expected: All 11 fixes audited with classifications
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
### Level 3: Quality Assurance Validation
|
|
770
|
+
|
|
771
|
+
```bash
|
|
772
|
+
REPORT="plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md"
|
|
773
|
+
|
|
774
|
+
# Verify breaking changes have severity
|
|
775
|
+
grep -A5 "Classification: BREAKING" "$REPORT" | grep -q "Severity:" && echo "✓ Breaking changes have severity"
|
|
776
|
+
|
|
777
|
+
# Verify non-breaking changes have justification
|
|
778
|
+
grep -A5 "Classification: NON-BREAKING" "$REPORT" | grep -q "Justification:" && echo "✓ Non-breaking changes have justification"
|
|
779
|
+
|
|
780
|
+
# Verify version recommendation is clear
|
|
781
|
+
grep -A10 "^## Version Recommendation" "$REPORT" | grep -qE "(MAJOR|MINOR|PATCH)" && echo "✓ Version recommendation clear"
|
|
782
|
+
|
|
783
|
+
# Manual content verification
|
|
784
|
+
cat << 'EOF'
|
|
785
|
+
# Manual Quality Checklist
|
|
786
|
+
|
|
787
|
+
## Completeness
|
|
788
|
+
- [ ] Executive summary provides overall assessment
|
|
789
|
+
- [ ] Methodology section explains audit process
|
|
790
|
+
- [ ] All 11 bug fixes have dedicated audit entries
|
|
791
|
+
- [ ] Each entry has classification (BREAKING/NON-BREAKING)
|
|
792
|
+
- [ ] Breaking changes include severity assessment
|
|
793
|
+
- [ ] Breaking changes include migration strategy
|
|
794
|
+
- [ ] Non-breaking changes include justification
|
|
795
|
+
|
|
796
|
+
## Accuracy
|
|
797
|
+
- [ ] Public API surface correctly identified from src/index.ts
|
|
798
|
+
- [ ] All file references use absolute paths
|
|
799
|
+
- [ ] All line numbers are accurate
|
|
800
|
+
- [ ] Severity assessments follow the framework
|
|
801
|
+
- [ ] Version recommendation follows semver rules
|
|
802
|
+
|
|
803
|
+
## Usability
|
|
804
|
+
- [ ] Report is readable with clear structure
|
|
805
|
+
- [ ] Migration guide is actionable (if applicable)
|
|
806
|
+
- [ ] Version recommendation is definitive
|
|
807
|
+
- [ ] References section has all links
|
|
808
|
+
|
|
809
|
+
## Consistency
|
|
810
|
+
- [ ] All audit entries follow same template
|
|
811
|
+
- [ ] Terminology is consistent throughout
|
|
812
|
+
- [ ] Formatting follows markdown best practices
|
|
813
|
+
EOF
|
|
814
|
+
|
|
815
|
+
# Expected: All quality checks pass
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
### Level 4: Cross-Reference Validation
|
|
819
|
+
|
|
820
|
+
```bash
|
|
821
|
+
# Verify findings align with existing documentation
|
|
822
|
+
REPORT="plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md"
|
|
823
|
+
|
|
824
|
+
# Check that child() backward compatibility is acknowledged
|
|
825
|
+
grep -A10 "WorkflowLogger.child()" "$REPORT" | grep -qE "(backward compatible|overloads|VERIFICATION_REPORT)" && echo "✓ child() backward compatibility acknowledged"
|
|
826
|
+
|
|
827
|
+
# Check that test suite validation is referenced
|
|
828
|
+
grep -q "100% test pass rate\|361 tests pass" "$REPORT" && echo "✓ Test validation referenced"
|
|
829
|
+
|
|
830
|
+
# Check that semver is referenced
|
|
831
|
+
grep -q "semver.org\|Semantic Versioning" "$REPORT" && echo "✓ Semver standard referenced"
|
|
832
|
+
|
|
833
|
+
# Manual verification: Compare with CHANGELOG.md
|
|
834
|
+
echo "Manual check: Do breaking changes in audit match CHANGELOG.md?"
|
|
835
|
+
echo "Review CHANGELOG.md at /home/dustin/projects/groundswell/CHANGELOG.md"
|
|
836
|
+
|
|
837
|
+
# Expected: Audit findings align with existing documentation
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
---
|
|
841
|
+
|
|
842
|
+
## Final Validation Checklist
|
|
843
|
+
|
|
844
|
+
### Technical Validation
|
|
845
|
+
|
|
846
|
+
- [ ] Report created at specified path
|
|
847
|
+
- [ ] Markdown is well-formed (all headers, lists, code blocks formatted correctly)
|
|
848
|
+
- [ ] All file references point to existing files
|
|
849
|
+
- [ ] All line numbers are accurate
|
|
850
|
+
- [ ] No broken internal links
|
|
851
|
+
|
|
852
|
+
### Content Validation
|
|
853
|
+
|
|
854
|
+
- [ ] Public API surface identified from src/index.ts
|
|
855
|
+
- [ ] All 11 bug fixes audited
|
|
856
|
+
- [ ] Each fix has BREAKING/NON-BREAKING classification
|
|
857
|
+
- [ ] Breaking changes include severity (Critical/High/Medium/Low)
|
|
858
|
+
- [ ] Breaking changes include mitigation strategy
|
|
859
|
+
- [ ] Non-breaking changes include justification
|
|
860
|
+
- [ ] Version recommendation provided with semver reasoning
|
|
861
|
+
|
|
862
|
+
### Quality Validation
|
|
863
|
+
|
|
864
|
+
- [ ] Executive summary provides clear overview
|
|
865
|
+
- [ ] Methodology section explains audit process
|
|
866
|
+
- [ ] Migration guide is actionable (if breaking changes exist)
|
|
867
|
+
- [ ] All audit entries follow consistent template
|
|
868
|
+
- [ ] References section includes all links
|
|
869
|
+
- [ ] Report passes "No Prior Knowledge" test
|
|
870
|
+
|
|
871
|
+
### Feature Validation
|
|
872
|
+
|
|
873
|
+
- [ ] Maintainer can understand what changed
|
|
874
|
+
- [ ] Maintainer can assess breaking change impact
|
|
875
|
+
- [ ] Maintainer has clear version recommendation
|
|
876
|
+
- [ ] Maintainer has migration guidance (if needed)
|
|
877
|
+
- [ ] Findings align with test suite validation results
|
|
878
|
+
|
|
879
|
+
---
|
|
880
|
+
|
|
881
|
+
## Anti-Patterns to Avoid
|
|
882
|
+
|
|
883
|
+
- **Don't** skip auditing internal changes - document why they're non-breaking
|
|
884
|
+
- **Don't** assume backward compatibility - verify with evidence (test results, code analysis)
|
|
885
|
+
- **Don't** forget severity assessment - breaking changes need severity classification
|
|
886
|
+
- **Don't** omit migration guidance - even simple migrations need documentation
|
|
887
|
+
- **Don't** be ambiguous about version recommendation - state clearly (MAJOR/MINOR/PATCH)
|
|
888
|
+
- **Don't** ignore edge cases - consider real-world usage beyond test coverage
|
|
889
|
+
- **Don't** forget to justify non-breaking classifications - explain why existing code works
|
|
890
|
+
- **Don't** mix severity levels - use the provided framework consistently
|
|
891
|
+
- **Don't** overlook additive changes - new public APIs are still non-breaking
|
|
892
|
+
- **Don't** skip cross-referencing - validate against existing documentation and tests
|
|
893
|
+
|
|
894
|
+
---
|
|
895
|
+
|
|
896
|
+
## Appendix: Quick Reference for Audit Decisions
|
|
897
|
+
|
|
898
|
+
### Breaking Change Quick Reference
|
|
899
|
+
|
|
900
|
+
| Change Type | Public API? | Breaking? | Severity | Notes |
|
|
901
|
+
|-------------|-------------|-----------|----------|-------|
|
|
902
|
+
| Function signature modified | Yes | Maybe | varies | Check if backward compatible |
|
|
903
|
+
| Optional property added | Yes | No | N/A | Additive change |
|
|
904
|
+
| Required property added | Yes | Yes | High | Breaking - existing code missing prop |
|
|
905
|
+
| Property removed | Yes | Yes | High/Med | Breaking - existing code uses it |
|
|
906
|
+
| Property type narrowed | Yes | Maybe | varies | May break if code used wider type |
|
|
907
|
+
| New public function | Yes | No | N/A | Additive change |
|
|
908
|
+
| Function removed | Yes | Yes | High/Crit | Breaking - existing calls fail |
|
|
909
|
+
| Behavior changed | Yes | Maybe | varies | Check if existing code relies on old behavior |
|
|
910
|
+
| Internal refactor | No | No | N/A | Not public API |
|
|
911
|
+
| Performance optimization | No/Yes | No | N/A | If API unchanged, not breaking |
|
|
912
|
+
| Bug fix (PRD violation) | Yes | Maybe | varies | Old behavior was wrong, may be non-breaking |
|
|
913
|
+
| Constructor validation added | Yes | Maybe | Low | If invalid inputs rejected, low severity |
|
|
914
|
+
| Private → Public | Yes | No | N/A | Additive - already existed |
|
|
915
|
+
|
|
916
|
+
### Severity Quick Reference
|
|
917
|
+
|
|
918
|
+
| Severity | Definition | Example |
|
|
919
|
+
|----------|-----------|---------|
|
|
920
|
+
| **Critical** | Data loss, security issue, complete feature failure | Removing required API, changing return type to incompatible |
|
|
921
|
+
| **High** | Major disruption, complex migration | Removing commonly used method, tightening validation significantly |
|
|
922
|
+
| **Medium** | Moderate disruption, straightforward migration | Changing optional to required, minor behavior change |
|
|
923
|
+
| **Low** | Minor disruption, simple migration | Rejecting previously accepted invalid inputs |
|
|
924
|
+
|
|
925
|
+
---
|
|
926
|
+
|
|
927
|
+
**End of PRP**
|