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,227 @@
1
+ # Test Fix Report - P1.M4.T1.S2
2
+
3
+ **Report Generated**: 2025-01-12 21:52:11 UTC
4
+ **Task**: Fix Test Failures from Bug Fixes
5
+ **Status**: SUCCESS - No test failures detected
6
+
7
+ ---
8
+
9
+ ## Executive Summary
10
+
11
+ **Result**: All 479 active tests passed with zero failures. No test fixes required.
12
+
13
+ The test execution for P1.M4.T1.S2 confirms that all bug fixes from milestones P1.M1, P1.M2, and P1.M3 are working correctly with zero regressions. The test suite maintains 100% pass rate across all test categories.
14
+
15
+ ---
16
+
17
+ ## Execution Summary
18
+
19
+ | Attribute | Value |
20
+ |-----------|-------|
21
+ | **Command** | `npm test` |
22
+ | **Timestamp** | 2025-01-12 21:52:09 UTC |
23
+ | **Duration** | 2.84s |
24
+ | **Vitest Version** | 1.6.1 |
25
+ | **Platform** | linux-x64 |
26
+
27
+ ## Test Metrics
28
+
29
+ | Metric | Count | Notes |
30
+ |--------|-------|-------|
31
+ | **Total Tests** | 482 | Includes both active and skipped tests |
32
+ | **Passed** | 479 | All active tests passed |
33
+ | **Failed** | 0 | No test failures |
34
+ | **Skipped** | 3 | Intentionally skipped tests |
35
+ | **Pass Rate** | 100% | Of active (non-skipped) tests |
36
+ | **Test Files** | 37 | All test files passed |
37
+
38
+ ---
39
+
40
+ ## Comparison with S1 Baseline
41
+
42
+ | Metric | S1 Baseline | S2 Current | Delta |
43
+ |--------|-------------|------------|-------|
44
+ | **Total Tests** | 482 | 482 | No change |
45
+ | **Passed** | 479 | 479 | No change |
46
+ | **Failed** | 0 | 0 | No change |
47
+ | **Pass Rate** | 100% | 100% | Maintained |
48
+ | **Duration** | 2.87s | 2.84s | -0.03s (slightly faster) |
49
+
50
+ **Analysis**: Perfect test stability between S1 and S2 executions. No regressions introduced and no test failures detected.
51
+
52
+ ---
53
+
54
+ ## Test Failures Analysis
55
+
56
+ ### Result: No Failures Detected
57
+
58
+ **Status**: SUCCESS - All bug fixes validated, zero test failures.
59
+
60
+ This task (P1.M4.T1.S2) was designed to catch and fix any test failures that may have emerged from the bug fixes implemented in milestones P1.M1, P1.M2, and P1.M3. The execution confirms:
61
+
62
+ 1. **No Implementation Bugs**: All bug fixes were implemented correctly
63
+ 2. **No Test Updates Required**: No tests expected old behavior that changed
64
+ 3. **No Regressions**: All existing tests continue to pass
65
+ 4. **100% Pass Rate Maintained**: All 479 active tests passing
66
+
67
+ ### Expected stderr Messages (Informational)
68
+
69
+ The following stderr messages are expected and correct behavior for circular reference prevention:
70
+
71
+ ```
72
+ Cannot attach child 'Root' - it is an ancestor of 'Child'. This would create a circular reference.
73
+ Cannot attach child 'Root' - it is an ancestor of 'Child3'. This would create a circular reference.
74
+ ```
75
+
76
+ These messages appear in `bidirectional-consistency.test.ts` tests that verify the acyclicity invariant is working correctly.
77
+
78
+ ---
79
+
80
+ ## Validated Bug Fixes
81
+
82
+ | Bug Fix | Milestone | Source File | Validation Status |
83
+ |---------|-----------|-------------|-------------------|
84
+ | WorkflowLogger.child() signature | P1.M1.T1 | src/core/logger.ts | PASSED |
85
+ | Promise.allSettled implementation | P1.M2.T1 | src/decorators/task.ts | PASSED |
86
+ | ErrorMergeStrategy support | P1.M2.T2 | src/types/decorators.ts | PASSED |
87
+ | Observer error logging | P1.M3.T1 | src/core/logger.ts | PASSED |
88
+ | Tree debugger optimization | P1.M3.T2 | src/debugger/tree-debugger.ts | PASSED |
89
+ | Workflow name validation | P1.M3.T3 | src/core/workflow.ts | PASSED |
90
+ | isDescendantOf public API | P1.M3.T4 | src/core/workflow.ts | PASSED |
91
+
92
+ ---
93
+
94
+ ## Test File Breakdown
95
+
96
+ ### Unit Tests (17 files)
97
+ | File | Tests | Status |
98
+ |------|-------|--------|
99
+ | `observable.test.ts` | 15 | PASSED |
100
+ | `utils/workflow-error-utils.test.ts` | 13 | PASSED |
101
+ | `reflection.test.ts` | 19 | PASSED |
102
+ | `introspection-tools.test.ts` | 20 | PASSED |
103
+ | `logger.test.ts` | 17 | PASSED |
104
+ | `tree-debugger-incremental.test.ts` | 6 | PASSED |
105
+ | `context.test.ts` | 11 | PASSED |
106
+ | `workflow.test.ts` | 28 | PASSED |
107
+ | `workflow-isDescendantOf.test.ts` | 13 | PASSED |
108
+ | `cache-key.test.ts` | 17 | PASSED |
109
+ | `cache.test.ts` | 16 | PASSED |
110
+ | `workflow-emitEvent-childDetached.test.ts` | 5 | PASSED |
111
+ | `prompt.test.ts` | 10 | PASSED |
112
+ | `agent.test.ts` | 11 | PASSED |
113
+ | `tree-debugger.test.ts` | 5 | PASSED |
114
+ | `workflow-detachChild.test.ts` | 5 | PASSED |
115
+ | `decorators.test.ts` | 6 | PASSED |
116
+
117
+ ### Integration Tests (5 files)
118
+ | File | Tests | Status |
119
+ |------|-------|--------|
120
+ | `observer-logging.test.ts` | 20 | PASSED |
121
+ | `workflow-reparenting.test.ts` | 3 | PASSED |
122
+ | `agent-workflow.test.ts` | 9 | PASSED |
123
+ | `tree-mirroring.test.ts` | 4 | PASSED |
124
+ | `bidirectional-consistency.test.ts` | 34 | PASSED |
125
+
126
+ ### Adversarial Tests (15 files)
127
+ | File | Tests | Status |
128
+ |------|-------|--------|
129
+ | `observer-propagation.test.ts` | 12 | PASSED |
130
+ | `e2e-prd-validation.test.ts` | 9 | PASSED |
131
+ | `concurrent-task-failures.test.ts` | 10 | PASSED |
132
+ | `edge-case.test.ts` | 27 | PASSED |
133
+ | `prd-12-2-compliance.test.ts` | 27 | PASSED |
134
+ | `error-merge-strategy.test.ts` | 17 (3 skipped) | PASSED |
135
+ | `deep-analysis.test.ts` | 34 | PASSED |
136
+ | `prd-compliance.test.ts` | 29 | PASSED |
137
+ | `attachChild-performance.test.ts` | 5 | PASSED |
138
+ | `complex-circular-reference.test.ts` | 3 | PASSED |
139
+ | `parent-validation.test.ts` | 3 | PASSED |
140
+ | `node-map-update-benchmarks.test.ts` | 8 | PASSED |
141
+ | `incremental-performance.test.ts` | 4 | PASSED |
142
+ | `circular-reference.test.ts` | 2 | PASSED |
143
+ | `deep-hierarchy-stress.test.ts` | 5 | PASSED |
144
+
145
+ ---
146
+
147
+ ## Skipped Tests
148
+
149
+ | Test File | Test Name | Reason |
150
+ |-----------|-----------|--------|
151
+ | `error-merge-strategy.test.ts` | 3 tests | Intentionally skipped as part of test configuration |
152
+
153
+ **Note**: The 3 skipped tests are intentional and documented in the test suite. They do not indicate failures or incomplete implementation.
154
+
155
+ ---
156
+
157
+ ## Performance Notes
158
+
159
+ Performance benchmarks indicate the optimizations are working as expected:
160
+
161
+ - **Incremental Node Map Updates**: Detach operations complete in <1ms (target met)
162
+ - **Attach Operations**: 10-node subtree attaches in 0.033ms
163
+ - **Large Subtree Detach**: 101-node subtree detaches in 0.037ms
164
+ - **Cumulative Operations**: 10 branch detaches average 0.004ms each
165
+
166
+ ---
167
+
168
+ ## Actions Taken
169
+
170
+ ### Analysis Phase
171
+ 1. Reviewed S1 Test Execution Report showing 100% pass rate (479/479 tests)
172
+ 2. Read research documentation on test maintenance best practices
173
+ 3. Executed full test suite using `npm test`
174
+
175
+ ### Results Analysis
176
+ 1. Confirmed all 479 active tests passed (100% pass rate)
177
+ 2. Verified 3 intentionally skipped tests in error-merge-strategy.test.ts
178
+ 3. Validated zero test failures across all 37 test files
179
+ 4. Confirmed no regressions from bug fixes
180
+
181
+ ### Fixes Required
182
+ **None** - All tests passed successfully.
183
+
184
+ ---
185
+
186
+ ## Backward Compatibility Validation
187
+
188
+ | Feature | Status | Notes |
189
+ |---------|--------|-------|
190
+ | Existing API contracts | Maintained | No breaking changes |
191
+ | Test expectations | Validated | All tests pass |
192
+ | Performance targets | Met | Optimizations working |
193
+ | Error handling | Correct | Proper error propagation |
194
+
195
+ ---
196
+
197
+ ## Success Criteria Validation
198
+
199
+ - [x] All 479 active tests pass (zero failures)
200
+ - [x] Test execution report generated documenting results
201
+ - [x] Any test changes documented with rationale (N/A - no changes needed)
202
+ - [x] No regressions in existing test behavior
203
+ - [x] Backward compatibility validated
204
+
205
+ ---
206
+
207
+ ## Recommendations
208
+
209
+ ### Immediate Actions
210
+ **None required.** All tests passing with 100% success rate.
211
+
212
+ ### Next Steps
213
+ 1. **Proceed to P1.M4.T2**: Documentation updates for completed bug fixes
214
+ 2. **Proceed to P1.M4.T3**: Release preparation and validation
215
+ 3. **Consider cleanup**: The 3 skipped tests in `error-merge-strategy.test.ts` should be reviewed to determine if they should be enabled, updated, or removed
216
+
217
+ ---
218
+
219
+ ## Conclusion
220
+
221
+ The test execution for P1.M4.T1.S2 is **SUCCESSFUL**. The complete test suite of 482 tests (479 active, 3 skipped) passed with 100% success rate. All bug fixes from milestones P1.M1, P1.M2, and P1.M3 have been validated with zero test failures and no regressions.
222
+
223
+ **Result**: The codebase is ready for the next phase of documentation and release preparation.
224
+
225
+ ---
226
+
227
+ **Report Location**: `/home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md`
@@ -0,0 +1,345 @@
1
+ # Test Maintenance Research - Key Findings Summary
2
+
3
+ **Date:** 2026-01-12
4
+ **Task:** P1M4T1S2 - Research test maintenance best practices after bug fixes
5
+
6
+ ## Executive Summary
7
+
8
+ Comprehensive research has been conducted on test maintenance best practices, with a focus on Vitest, TypeScript, and post-bug-fix testing strategies. The research document covers:
9
+
10
+ 1. **Vitest debugging techniques** and best practices
11
+ 2. **Test maintenance workflows** after bug fixes
12
+ 3. **Common failure patterns** and their solutions
13
+ 4. **Decision frameworks** for determining whether to update tests or fix implementation
14
+ 5. **Official documentation** and community resources
15
+
16
+ ## Key Findings
17
+
18
+ ### 1. Vitest Debugging Best Practices
19
+
20
+ #### Essential Commands
21
+ ```bash
22
+ # Debug failing test with inspector
23
+ vitest --inspect-brk --no-coverage path/to/test.ts
24
+
25
+ # Run specific test only
26
+ vitest run -t "test name pattern"
27
+
28
+ # Interactive UI for debugging
29
+ vitest --ui
30
+
31
+ # Watch mode for iterative fixes
32
+ vitest --watch path/to/test.ts
33
+ ```
34
+
35
+ #### Common Pitfalls Identified
36
+
37
+ 1. **Testing Implementation Details**
38
+ - Problem: Tests break when implementation changes
39
+ - Solution: Test behavior, not implementation
40
+ - Example: Use `expect(result).toEqual(expected)` instead of spying on internal methods
41
+
42
+ 2. **Mock Cleanup Issues**
43
+ - Problem: Mocks leak between tests
44
+ - Solution: Always use `beforeEach` and `afterEach` hooks
45
+ ```typescript
46
+ beforeEach(() => vi.clearAllMocks())
47
+ afterEach(() => vi.restoreAllMocks())
48
+ ```
49
+
50
+ 3. **Async Test Failures**
51
+ - Problem: Missing `await` or not returning promises
52
+ - Solution: Always use `async/await` or return promises
53
+ ```typescript
54
+ test('async test', async () => {
55
+ const result = await fetchData()
56
+ expect(result).toBe('data')
57
+ })
58
+ ```
59
+
60
+ ### 2. Test Maintenance After Bug Fixes
61
+
62
+ #### Decision Framework
63
+
64
+ **Step 1: Review Requirements**
65
+ - Check if requirements have changed
66
+ - Verify product specifications
67
+ - Consult design documents
68
+
69
+ **Step 2: Analyze Test Intent**
70
+
71
+ | Scenario | Action |
72
+ |----------|--------|
73
+ | Test verifies business logic correctly | Fix implementation |
74
+ | Test checks implementation details | Refactor test |
75
+ | Requirements changed | Update test |
76
+ | Test is too brittle | Refactor test to focus on behavior |
77
+
78
+ **Step 3: Apply Fix**
79
+
80
+ When fixing bugs:
81
+ 1. Add regression test for the bug
82
+ 2. Update affected tests
83
+ 3. Document the change
84
+ 4. Run full test suite
85
+
86
+ When updating tests:
87
+ 1. Document why test was wrong
88
+ 2. Verify new test matches requirements
89
+ 3. Add comment explaining change
90
+ 4. Update related tests
91
+
92
+ #### Documentation Best Practices
93
+
94
+ ```typescript
95
+ /**
96
+ * Updated: 2026-01-12
97
+ * Bug Fix: #123 - Email validation added
98
+ * Previous: Accepted any string
99
+ * Now: Requires valid email format
100
+ *
101
+ * Regression tests added for:
102
+ * - Empty email
103
+ * - Invalid format
104
+ * - Special characters
105
+ */
106
+ test('should validate email format', () => {
107
+ expect(validateEmail('invalid')).toBe(false)
108
+ expect(validateEmail('test@example.com')).toBe(true)
109
+ })
110
+ ```
111
+
112
+ ### 3. Common Failure Patterns
113
+
114
+ #### 1. Assertion Failures
115
+ **Meaning:** Expected vs Actual mismatch
116
+ **Common Causes:**
117
+ - Implementation logic error
118
+ - Wrong test expectations
119
+ - Data type mismatches
120
+
121
+ **Debug Strategy:**
122
+ ```typescript
123
+ test('debug assertion', () => {
124
+ const result = calculate(5, 5)
125
+ console.log('Result:', result)
126
+ console.log('Type:', typeof result)
127
+ expect(result).toBe(10)
128
+ })
129
+ ```
130
+
131
+ #### 2. Timeout Errors
132
+ **Meaning:** Test exceeded time limit (default 5000ms)
133
+ **Common Causes:**
134
+ - Missing `await` keyword
135
+ - Unresolved promises
136
+ - Infinite loops
137
+ - Slow operations
138
+
139
+ **Solutions:**
140
+ ```typescript
141
+ // Add timeout if needed
142
+ test('slow operation', async () => {
143
+ const result = await slowOperation()
144
+ expect(result).toBe('done')
145
+ }, { timeout: 10000 })
146
+ ```
147
+
148
+ #### 3. Mock Failures
149
+ **Meaning:** Mock not called or wrong arguments
150
+ **Common Issues:**
151
+ - Mock not set up correctly
152
+ - Wrong arguments expected
153
+ - Mock not restored between tests
154
+
155
+ **Best Practice:**
156
+ ```typescript
157
+ beforeEach(() => {
158
+ vi.clearAllMocks()
159
+ })
160
+
161
+ afterEach(() => {
162
+ vi.restoreAllMocks()
163
+ })
164
+ ```
165
+
166
+ #### 4. TypeScript Type Errors
167
+ **Meaning:** Type mismatches in tests
168
+ **Common Issues:**
169
+ - Property access on untyped mocks
170
+ - Module mocking type errors
171
+ - Async function return types
172
+
173
+ **Solution:**
174
+ ```typescript
175
+ import { vi, expect } from 'vitest'
176
+
177
+ const mockFn = vi.fn()
178
+ expect(mockFn).toHaveBeenCalledTimes(1) // Use built-in matchers
179
+
180
+ // Use vi.mocked for type safety
181
+ const mockFetchUsers = vi.mocked(fetchUsers)
182
+ mockFetchUsers.mockResolvedValue([])
183
+ ```
184
+
185
+ ### 4. Debugging Strategies
186
+
187
+ #### Isolating Failing Tests
188
+
189
+ 1. **Run single file:**
190
+ ```bash
191
+ vitest run path/to/failing.test.ts
192
+ ```
193
+
194
+ 2. **Run specific test:**
195
+ ```typescript
196
+ test.only('failing test', () => {
197
+ // Only this runs
198
+ })
199
+ ```
200
+
201
+ 3. **Use bail to stop on first failure:**
202
+ ```bash
203
+ vitest run --bail 1
204
+ ```
205
+
206
+ #### Understanding Stack Traces
207
+
208
+ **Key Parts of Error Output:**
209
+ 1. Test path: `src/utils/math.test.ts > MathUtils > divide`
210
+ 2. Error message: Human-readable description
211
+ 3. File location: Line and column number with code context
212
+ 4. Diff: Expected vs Actual for assertion failures
213
+
214
+ **Common Stack Trace Patterns:**
215
+
216
+ | Pattern | Meaning | Fix |
217
+ |---------|---------|-----|
218
+ | `Cannot read property 'X' of undefined` | Object is undefined | Add null check |
219
+ | `X is not a function` | Wrong type or not imported | Check import |
220
+ | `Timeout exceeded` | Test too long | Fix async or increase timeout |
221
+
222
+ ### 5. Official Documentation Resources
223
+
224
+ #### Primary Vitest Resources
225
+
226
+ 1. **Getting Started:** https://vitest.dev/guide/
227
+ 2. **API Reference:** https://vitest.dev/api/
228
+ 3. **Debugging Guide:** https://vitest.dev/guide/debugging.html
229
+ 4. **Mock Functions:** https://vitest.dev/api/mock.html
230
+ 5. **Configuration:** https://vitest.dev/config/
231
+ 6. **CLI Reference:** https://vitest.dev/cli/
232
+ 7. **UI Interface:** https://vitest.dev/guide/ui.html
233
+ 8. **Coverage:** https://vitest.dev/guide/coverage.html
234
+ 9. **Common Errors:** https://vitest.dev/guide/common-errors.html
235
+ 10. **GitHub:** https://github.com/vitest-dev/vitest
236
+
237
+ #### Community Resources
238
+
239
+ 1. **Kent C. Dodds Testing Blog:** https://kentcdodds.com/blog/tags/testing
240
+ 2. **Martin Fowler Testing Articles:** https://martinfowler.com/tags/testing.html
241
+ 3. **Google Testing Blog:** https://testing.googleblog.com/
242
+ 4. **JavaScript Testing Best Practices:** https://github.com/goldbergyoni/javascript-testing-best-practices
243
+ 5. **Stack Overflow - Vitest:** https://stackoverflow.com/questions/tagged/vitest
244
+ 6. **Vitest Discussions:** https://github.com/vitest-dev/vitest/discussions
245
+
246
+ ### 6. CI/CD Integration
247
+
248
+ #### Recommended Test Scripts
249
+
250
+ ```json
251
+ {
252
+ "scripts": {
253
+ "test": "vitest",
254
+ "test:ci": "vitest run --coverage",
255
+ "test:ui": "vitest --ui",
256
+ "test:debug": "vitest --inspect-brk --no-coverage",
257
+ "test:watch": "vitest --watch"
258
+ }
259
+ }
260
+ ```
261
+
262
+ #### Pre-commit Hooks
263
+
264
+ ```bash
265
+ # Install Husky for git hooks
266
+ npm install -D husky
267
+ npx husky install
268
+ npx husky add .husky/pre-commit "npm run test"
269
+ ```
270
+
271
+ ## Actionable Recommendations
272
+
273
+ ### For Groundswell Project
274
+
275
+ 1. **Implement Test Documentation Standard**
276
+ - Add change log comments to modified tests
277
+ - Document bug fixes with issue numbers
278
+ - Include rationale for test changes
279
+
280
+ 2. **Set Up Debugging Workflow**
281
+ - Create VS Code launch configuration for Vitest debugging
282
+ - Add test scripts to package.json
283
+ - Configure pre-commit hooks
284
+
285
+ 3. **Establish Test Maintenance Checklist**
286
+ - Use provided checklist template
287
+ - Review test intent before modifying
288
+ - Always add regression tests for bug fixes
289
+
290
+ 4. **Improve Test Quality**
291
+ - Refactor tests that check implementation details
292
+ - Focus on behavior testing
293
+ - Use custom matchers for domain-specific assertions
294
+
295
+ 5. **Monitor Test Health**
296
+ - Track flaky tests
297
+ - Measure test execution time
298
+ - Maintain code coverage thresholds
299
+
300
+ ## Quick Reference
301
+
302
+ ### Debug Commands
303
+ ```bash
304
+ # Debug specific test
305
+ vitest --inspect-brk path/to/test.ts
306
+
307
+ # Run only failed tests
308
+ vitest run --reporter=verbose --bail 1
309
+
310
+ # Interactive UI
311
+ vitest --ui
312
+ ```
313
+
314
+ ### Test Update Decision Tree
315
+ ```
316
+ Test Failing
317
+
318
+ Requirements Current? → No → Update Test
319
+ ↓ Yes
320
+ Implementation Correct? → No → Fix Implementation
321
+ ↓ Yes
322
+ Test Implementation Detail? → Yes → Refactor Test
323
+ ↓ No
324
+ Add Regression Test
325
+ ```
326
+
327
+ ## Conclusion
328
+
329
+ This research provides a comprehensive foundation for maintaining tests after bug fixes in the Groundswell project. The key principles are:
330
+
331
+ 1. **Understand before modifying** - Always identify root cause
332
+ 2. **Test behavior, not implementation** - Make tests resilient to refactoring
333
+ 3. **Document changes** - Keep clear records of why tests were modified
334
+ 4. **Add regression tests** - Prevent bugs from returning
335
+ 5. **Use official tools** - Leverage Vitest's debugging features
336
+ 6. **Follow best practices** - Learn from community experts
337
+
338
+ The full research document with detailed examples and explanations is available at:
339
+ `/home/dustin/projects/groundswell/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md`
340
+
341
+ ---
342
+
343
+ **Document Version:** 1.0
344
+ **Last Updated:** 2026-01-12
345
+ **Maintained By:** Groundswell Development Team