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.
Files changed (242) hide show
  1. package/.claude/commands/subtask-planning/prp-base-create.md +120 -0
  2. package/.claude/commands/subtask-planning/prp-base-execute.md +65 -0
  3. package/.claude/commands/task-breakdown.md +94 -0
  4. package/.claude/system_prompts/task-breakdown.md +1 -0
  5. package/CHANGELOG.md +188 -0
  6. package/PRD.md +543 -0
  7. package/README.md +99 -5
  8. package/examples/README.md +15 -1
  9. package/examples/examples/11-reparenting-workflows.ts +269 -0
  10. package/examples/index.ts +4 -0
  11. package/package-lock.json +2398 -0
  12. package/package.json +3 -1
  13. package/plan/001_d3bb02af4886/TEST_RESULTS.md +259 -0
  14. package/plan/001_d3bb02af4886/bug_fix_tasks.json +484 -0
  15. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +488 -0
  16. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +581 -0
  17. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +687 -0
  18. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +492 -0
  19. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +932 -0
  20. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +1109 -0
  21. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +802 -0
  22. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +603 -0
  23. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +564 -0
  24. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +518 -0
  25. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +1252 -0
  26. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +364 -0
  27. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +114 -0
  28. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +205 -0
  29. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +199 -0
  30. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +134 -0
  31. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +495 -0
  32. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +435 -0
  33. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +506 -0
  34. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +612 -0
  35. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +558 -0
  36. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +788 -0
  37. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +460 -0
  38. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +454 -0
  39. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +520 -0
  40. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +417 -0
  41. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +760 -0
  42. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +245 -0
  43. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +792 -0
  44. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +535 -0
  45. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +190 -0
  46. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +654 -0
  47. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +227 -0
  48. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +345 -0
  49. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +193 -0
  50. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +1323 -0
  51. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +1011 -0
  52. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +927 -0
  53. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +505 -0
  54. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +401 -0
  55. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +142 -0
  56. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +112 -0
  57. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +159 -0
  58. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +549 -0
  59. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +368 -0
  60. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +172 -0
  61. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +175 -0
  62. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +696 -0
  63. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +860 -0
  64. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +1066 -0
  65. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +1103 -0
  66. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +789 -0
  67. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +1098 -0
  68. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +1037 -0
  69. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +916 -0
  70. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +1045 -0
  71. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +890 -0
  72. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +822 -0
  73. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +668 -0
  74. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +706 -0
  75. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +265 -0
  76. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +655 -0
  77. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +1103 -0
  78. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +426 -0
  79. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +506 -0
  80. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +114 -0
  81. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +316 -0
  82. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +754 -0
  83. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +612 -0
  84. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +719 -0
  85. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +215 -0
  86. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +765 -0
  87. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +718 -0
  88. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +149 -0
  89. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +470 -0
  90. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +332 -0
  91. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +167 -0
  92. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +265 -0
  93. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +273 -0
  94. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +760 -0
  95. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +434 -0
  96. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +717 -0
  97. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +472 -0
  98. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +125 -0
  99. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +301 -0
  100. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +1170 -0
  101. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +940 -0
  102. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +151 -0
  103. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +650 -0
  104. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +259 -0
  105. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +457 -0
  106. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +346 -0
  107. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +311 -0
  108. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +1565 -0
  109. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +288 -0
  110. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +741 -0
  111. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +652 -0
  112. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +527 -0
  113. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +415 -0
  114. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +378 -0
  115. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +713 -0
  116. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +370 -0
  117. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +499 -0
  118. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +230 -0
  119. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +1134 -0
  120. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +179 -0
  121. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +629 -0
  122. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +214 -0
  123. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +629 -0
  124. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +529 -0
  125. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +142 -0
  126. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +304 -0
  127. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +558 -0
  128. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +256 -0
  129. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +346 -0
  130. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +415 -0
  131. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +489 -0
  132. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +218 -0
  133. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +380 -0
  134. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +1923 -0
  135. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +319 -0
  136. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +115 -0
  137. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +134 -0
  138. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +153 -0
  139. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +132 -0
  140. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +716 -0
  141. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +186 -0
  142. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +604 -0
  143. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +213 -0
  144. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +30 -0
  145. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +56 -0
  146. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +53 -0
  147. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +49 -0
  148. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +958 -0
  149. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +339 -0
  150. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +305 -0
  151. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +433 -0
  152. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +1574 -0
  153. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +1014 -0
  154. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +376 -0
  155. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +1507 -0
  156. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +949 -0
  157. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +619 -0
  158. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +723 -0
  159. package/plan/{research → 001_d3bb02af4886/docs/research/general}/introspection-security-guide.md +56 -0
  160. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +460 -0
  161. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +324 -0
  162. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +175 -0
  163. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +499 -0
  164. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +163 -0
  165. package/plan/bugfix/BUG_FIX_SUMMARY.md +961 -0
  166. package/src/__tests__/adversarial/attachChild-performance.test.ts +216 -0
  167. package/src/__tests__/adversarial/circular-reference.test.ts +101 -0
  168. package/src/__tests__/adversarial/complex-circular-reference.test.ts +139 -0
  169. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +571 -0
  170. package/src/__tests__/adversarial/deep-analysis.test.ts +729 -0
  171. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +213 -0
  172. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +448 -0
  173. package/src/__tests__/adversarial/edge-case.test.ts +703 -0
  174. package/src/__tests__/adversarial/error-merge-strategy.test.ts +760 -0
  175. package/src/__tests__/adversarial/incremental-performance.test.ts +140 -0
  176. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +457 -0
  177. package/src/__tests__/adversarial/observer-propagation.test.ts +487 -0
  178. package/src/__tests__/adversarial/parent-validation.test.ts +143 -0
  179. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +611 -0
  180. package/src/__tests__/adversarial/prd-compliance.test.ts +731 -0
  181. package/src/__tests__/compatibility/backward-compatibility.test.ts +1572 -0
  182. package/src/__tests__/helpers/index.ts +18 -0
  183. package/src/__tests__/helpers/tree-verification.ts +257 -0
  184. package/src/__tests__/integration/bidirectional-consistency.test.ts +847 -0
  185. package/src/__tests__/integration/observer-logging.test.ts +643 -0
  186. package/src/__tests__/integration/tree-mirroring.test.ts +37 -0
  187. package/src/__tests__/integration/workflow-reparenting.test.ts +303 -0
  188. package/src/__tests__/unit/context.test.ts +79 -0
  189. package/src/__tests__/unit/logger.test.ts +293 -0
  190. package/src/__tests__/unit/observable.test.ts +321 -0
  191. package/src/__tests__/unit/tree-debugger-incremental.test.ts +170 -0
  192. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +209 -0
  193. package/src/__tests__/unit/workflow-detachChild.test.ts +100 -0
  194. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +153 -0
  195. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +180 -0
  196. package/src/__tests__/unit/workflow.test.ts +277 -1
  197. package/src/core/agent.ts +21 -1
  198. package/src/core/logger.ts +27 -2
  199. package/src/core/workflow-context.ts +6 -4
  200. package/src/core/workflow.ts +252 -14
  201. package/src/debugger/tree-debugger.ts +52 -7
  202. package/src/decorators/task.ts +65 -2
  203. package/src/index.ts +4 -2
  204. package/src/types/decorators.ts +8 -1
  205. package/src/types/events.ts +1 -0
  206. package/src/utils/index.ts +1 -0
  207. package/src/utils/observable.ts +32 -3
  208. package/src/utils/workflow-error-utils.ts +56 -0
  209. package/tsconfig.json +1 -1
  210. package/llms_full.txt +0 -5890
  211. package/tasks.json +0 -0
  212. /package/plan/{backlog.json → 001_d3bb02af4886/backlog.json} +0 -0
  213. /package/plan/{P1P2/PRP.md → 001_d3bb02af4886/docs/PRP/P1P2-PRP.md} +0 -0
  214. /package/plan/{P3P4/PRP.md → 001_d3bb02af4886/docs/PRP/P3P4-PRP.md} +0 -0
  215. /package/plan/{P4P5/PRP.md → 001_d3bb02af4886/docs/PRP/P4P5-PRP.md} +0 -0
  216. /package/plan/{architecture → 001_d3bb02af4886/docs/architecture}/external_deps.md +0 -0
  217. /package/plan/{architecture → 001_d3bb02af4886/docs/architecture}/system_context.md +0 -0
  218. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_BEST_PRACTICES.md +0 -0
  219. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_CODE_PATTERNS.md +0 -0
  220. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_INTEGRATION_GUIDE.md +0 -0
  221. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/LRU_CACHE_RESEARCH_INDEX.md +0 -0
  222. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/REFLECTION_INDEX.md +0 -0
  223. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/REFLECTION_RESEARCH_REPORT.md +0 -0
  224. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/RESEARCH_SUMMARY.md +0 -0
  225. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/anthropic-sdk.md +0 -0
  226. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/async-local-storage.md +0 -0
  227. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-code-patterns.md +0 -0
  228. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-decision-matrix.md +0 -0
  229. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-implementation-guide.md +0 -0
  230. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-integration-guide.md +0 -0
  231. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-patterns.md +0 -0
  232. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/reflection-quick-reference.md +0 -0
  233. /package/plan/{P1P2/research → 001_d3bb02af4886/docs/research/P1P2}/zod-schema.md +0 -0
  234. /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/caching-lru.md +0 -0
  235. /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/introspection-tools.md +0 -0
  236. /package/plan/{P3P4/research → 001_d3bb02af4886/docs/research/P3P4}/reflection-patterns.md +0 -0
  237. /package/plan/{P4P5/research → 001_d3bb02af4886/docs/research/P4P5}/RESEARCH_SUMMARY.md +0 -0
  238. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/INTROSPECTION_RESEARCH_SUMMARY.md +0 -0
  239. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/README-INTROSPECTION.md +0 -0
  240. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/agent-introspection-patterns.md +0 -0
  241. /package/plan/{research → 001_d3bb02af4886/docs/research/general}/introspection-tool-examples.md +0 -0
  242. /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**