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,495 @@
1
+ # Product Requirement Prompt (PRP): Find All Console.error Calls for Observer Errors
2
+
3
+ **Work Item**: P1.M3.T1.S1 - Find all console.error calls for observer errors
4
+ **PRD Reference**: Task P1.M3.T1 from plan/001_d3bb02af4886/bug_fix_tasks.json
5
+ **Implementation Target**: src/ directory (research task - no code changes)
6
+
7
+ ---
8
+
9
+ ## Goal
10
+
11
+ **Feature Goal**: Create a comprehensive inventory of all `console.error` calls in the codebase with precise categorization into observer-related vs other purposes, enabling the subsequent replacement task (P1.M3.T1.S2) to proceed with complete information.
12
+
13
+ **Deliverable**: A categorized list document (`console_error_inventory.md`) containing:
14
+ 1. All console.error call locations with exact file paths and line numbers
15
+ 2. Categorization: observer-related vs other purpose
16
+ 3. Context for each call (method/function, what error is being logged)
17
+ 4. Code snippets showing the surrounding context
18
+
19
+ **Success Definition**: The inventory enables the next subtask (P1.M3.T1.S2) to replace observer error console.error calls with logger.error() by:
20
+ - Providing exact locations of all observer-related console.error calls
21
+ - Distinguishing observer errors from validation/structural errors that should remain as console.error
22
+ - Including sufficient context to understand proper replacement patterns
23
+
24
+ ## User Persona
25
+
26
+ **Target User**: Developer implementing the console.error replacement (P1.M3.T1.S2) and QA validating the fix (P1.M3.T1.S3)
27
+
28
+ **Use Case**: Understanding the complete landscape of console.error usage before implementing systematic replacement
29
+
30
+ **User Journey**:
31
+ 1. Read this PRP to understand the research scope
32
+ 2. Examine the generated console_error_inventory.md
33
+ 3. Use findings to implement targeted replacement of only observer-related console.error calls
34
+ 4. Validate that non-observer console.error calls remain unchanged
35
+
36
+ **Pain Points Addressed**:
37
+ - Uncertainty about which console.error calls should be replaced vs preserved
38
+ - Risk of accidentally removing console.error for structural validation errors
39
+ - Missing observer error locations that would cause inconsistent logging
40
+
41
+ ## Why
42
+
43
+ - **Issue 5 Resolution**: Bug report Issue 5 identifies that observer errors use console.error instead of the structured WorkflowLogger
44
+ - **Logging Consistency**: Observer errors should go through the same logging infrastructure as other workflow events
45
+ - **Testability**: Replacing console.error with logger.error enables proper testing and mocking of observer error behavior
46
+ - **Production Readiness**: Structured logging with WorkflowLogger provides timestamps, workflow context, and observer metadata
47
+
48
+ ## What
49
+
50
+ ### Success Criteria
51
+
52
+ - [ ] Inventory document created at `plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md`
53
+ - [ ] All console.error calls in src/ directory documented with file path and line number
54
+ - [ ] Each call categorized as observer-related or other purpose
55
+ - [ ] Observer-related calls identified for replacement in P1.M3.T1.S2
56
+ - [ ] Non-observer calls documented with rationale for preservation
57
+
58
+ ---
59
+
60
+ ## All Needed Context
61
+
62
+ ### Context Completeness Check
63
+
64
+ _This PRP passes the "No Prior Knowledge" test - someone unfamiliar with the codebase would have everything needed to complete this research task successfully._
65
+
66
+ ### Documentation & References
67
+
68
+ ```yaml
69
+ # MUST READ - Bug Fix Tasks
70
+ - file: plan/001_d3bb02af4886/bug_fix_tasks.json
71
+ why: Contains P1.M3.T1 task definition and contract for console.error research
72
+ critical: Defines the research scope (observer errors) and expected output format
73
+ section: Lines 221-256 define Task P1.M3.T1 and its subtasks
74
+
75
+ # CRITICAL - Known Locations (from Issue 5 and codebase_structure.md)
76
+ - file: src/core/workflow.ts
77
+ why: Contains console.error calls at lines 277, 286, 376, 394
78
+ gotcha: Mix of observer-related (376, 394) and validation errors (277, 286) - must categorize correctly
79
+
80
+ - file: src/core/logger.ts
81
+ why: Contains console.error call at line 27 for observer onLog errors
82
+ pattern: Error isolation pattern for observer callbacks
83
+
84
+ - file: src/utils/observable.ts
85
+ why: Contains console.error calls at lines 39, 52, 65 for subscriber error handling
86
+ pattern: Observable pattern with error isolation for subscriber callbacks
87
+
88
+ # CRITICAL - Architecture Documentation
89
+ - docfile: plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md
90
+ why: Validated locations of console.error and observer pattern implementation details
91
+ section: "Bug Report Claims" section validates Issue 5 claims about observer errors
92
+
93
+ - docfile: plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md
94
+ why: Error handling patterns explaining why observer errors need special handling
95
+ section: Observer error isolation and logging requirements
96
+
97
+ # CRITICAL - Observer Interface Definition
98
+ - file: src/types/observer.ts
99
+ why: Defines WorkflowObserver interface with onLog, onEvent, onStateUpdated, onTreeChanged callbacks
100
+ pattern: All four observer callbacks can throw errors that need to be caught and logged
101
+
102
+ # REFERENCE - Logger Implementation
103
+ - file: src/core/logger.ts
104
+ why: WorkflowLogger class with error() method for structured logging
105
+ pattern: this.logger.error(message, data) provides context-aware error logging
106
+
107
+ # REFERENCE - Test Patterns
108
+ - file: src/__tests__/adversarial/edge-case.test.ts
109
+ why: Contains existing test patterns for error handling validation
110
+ pattern: Uses vi.spyOn(console, 'error') for mocking console output
111
+
112
+ # REFERENCE - External Research
113
+ - url: https://blog.logrocket.com/async-await-typescript/
114
+ why: Error handling patterns in TypeScript async contexts
115
+ critical: Observer callbacks may be async, requiring proper error handling
116
+
117
+ - url: https://hupp.tech/blog/typescript/typescript-error-handling-tips-and-best-practices/
118
+ why: TypeScript error handling best practices for observer patterns
119
+ critical: Why console.error is problematic vs structured logging
120
+ ```
121
+
122
+ ### Current Codebase Tree
123
+
124
+ ```bash
125
+ src/
126
+ ├── core/
127
+ │ ├── workflow.ts # TARGET FILE - console.error at 277, 286, 376, 394
128
+ │ ├── logger.ts # TARGET FILE - console.error at 27
129
+ │ ├── agent.ts
130
+ │ ├── prompt.ts
131
+ │ └── index.ts
132
+ ├── types/
133
+ │ ├── observer.ts # WorkflowObserver interface definition
134
+ │ ├── logging.ts # LogEntry, LogLevel definitions
135
+ │ └── workflow.ts # WorkflowNode interface
136
+ ├── utils/
137
+ │ ├── observable.ts # TARGET FILE - console.error at 39, 52, 65
138
+ │ └── id.ts
139
+ ├── decorators/
140
+ │ ├── task.ts
141
+ │ └── step.ts
142
+ ├── debugger/
143
+ │ └── tree-debugger.ts
144
+ └── __tests__/
145
+ ├── unit/
146
+ ├── integration/
147
+ └── adversarial/
148
+ └── edge-case.test.ts # Test patterns for validation
149
+ ```
150
+
151
+ ### Known Gotchas & Library Quirks
152
+
153
+ ```typescript
154
+ // CRITICAL: Not all console.error calls are observer-related
155
+ // Lines 277, 286 in workflow.ts are VALIDATION errors before throwing
156
+ // These should NOT be replaced with logger.error
157
+
158
+ // CRITICAL: Observable class errors (observable.ts) may not have access to WorkflowLogger
159
+ // Lines 39, 52, 65 in observable.ts are in a standalone Observable utility class
160
+ // May need logger injection pattern for P1.M3.T1.S2
161
+
162
+ // CRITICAL: Observer error isolation is intentional
163
+ // All observer callbacks are wrapped in try-catch to prevent workflow crashes
164
+ // The console.error is for logging ONLY - workflow continues after error
165
+
166
+ // GOTCHA: Workflow class has this.logger property but Observable class does not
167
+ // src/core/workflow.ts calls can use this.logger.error()
168
+ // src/utils/observable.ts will need different approach (injection or fallback)
169
+
170
+ // PATTERN: Observer callbacks that can throw errors:
171
+ // - obs.onLog(entry) - In WorkflowLogger.emit() at line 27
172
+ // - obs.onEvent(event) - In Workflow.emitEvent() at line 376
173
+ // - obs.onStateUpdated(node) - In Workflow.snapshotState() at line 394
174
+ // - subscriber.next(value) - In Observable.next() at line 39
175
+ // - subscriber.error(err) - In Observable.error() at line 52
176
+ // - subscriber.complete() - In Observable.complete() at line 65
177
+
178
+ // GOTCHA: Validation errors (workflow.ts:277, 286) log before throwing
179
+ // These are structural errors that halt execution
180
+ // They use console.error for immediate visibility before exception propagation
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Implementation Blueprint
186
+
187
+ ### Research Task Breakdown
188
+
189
+ This is a **research-only task**. No code changes should be made.
190
+
191
+ The inventory document should follow this structure:
192
+
193
+ ```markdown
194
+ # Console.error Call Inventory
195
+
196
+ ## Executive Summary
197
+ - Total console.error calls found: X
198
+ - Observer-related: Y
199
+ - Other purpose: Z
200
+
201
+ ## Observer-Related Console.error Calls
202
+
203
+ ### 1. src/core/logger.ts:27
204
+ **Method**: WorkflowLogger.emit()
205
+ **Error Type**: Observer onLog callback error
206
+ **Context**: Emitting log entries to observers
207
+ ```typescript
208
+ try {
209
+ obs.onLog(entry);
210
+ } catch (err) {
211
+ console.error('Observer onLog error:', err);
212
+ }
213
+ ```
214
+ **Categorization**: Observer-related - REPLACE in P1.M3.T1.S2
215
+ **Replacement Pattern**: `this.logger.error('Observer onLog error', { error: err })`
216
+
217
+ ### 2. src/core/workflow.ts:376
218
+ [... same pattern for each observer-related call ...]
219
+
220
+ ## Other Purpose Console.error Calls
221
+
222
+ ### 1. src/core/workflow.ts:277
223
+ **Method**: Workflow.attachChild()
224
+ **Error Type**: Validation error - child already has parent
225
+ **Context**: Structural validation before throwing exception
226
+ ```typescript
227
+ const errorMessage = `Child '${childName}' already has a parent '${existingParentName}'. ...`;
228
+ console.error(errorMessage);
229
+ throw new Error(errorMessage);
230
+ ```
231
+ **Categorization**: Other purpose - DO NOT REPLACE
232
+ **Rationale**: Validation error that immediately throws; console.error provides visibility before stack trace
233
+
234
+ ### 2. src/core/workflow.ts:286
235
+ [... same pattern for validation error ...]
236
+
237
+ ## Replacement Recommendations
238
+
239
+ ### Observer-Related Calls (Replace with logger.error)
240
+ - src/core/logger.ts:27
241
+ - src/core/workflow.ts:376
242
+ - src/core/workflow.ts:394
243
+ - src/utils/observable.ts:39
244
+ - src/utils/observable.ts:52
245
+ - src/utils/observable.ts:65
246
+
247
+ ### Validation Errors (Preserve as console.error)
248
+ - src/core/workflow.ts:277 - Structural validation
249
+ - src/core/workflow.ts:286 - Circular reference detection
250
+
251
+ ## Implementation Notes for P1.M3.T1.S2
252
+
253
+ 1. Workflow class calls can use `this.logger.error()`
254
+ 2. Observable class may need logger injection pattern
255
+ 3. Preserve error isolation - observer errors should not crash workflows
256
+ 4. Add error context: observer type, event type, error details
257
+ ```
258
+
259
+ ### Implementation Patterns & Key Details
260
+
261
+ ```typescript
262
+ // PATTERN: Observer error handling (current - to be replaced)
263
+ try {
264
+ obs.onEvent(event);
265
+ } catch (err) {
266
+ console.error('Observer onEvent error:', err);
267
+ }
268
+
269
+ // PATTERN: Observer error handling (target for P1.M3.T1.S2)
270
+ try {
271
+ obs.onEvent(event);
272
+ } catch (err) {
273
+ this.logger.error('Observer onEvent error', {
274
+ error: err,
275
+ observerType: obs.constructor.name,
276
+ eventType: event.type,
277
+ workflowId: this.node.id
278
+ });
279
+ }
280
+
281
+ // PATTERN: Validation error handling (preserve - do NOT replace)
282
+ const errorMessage = `Child '${childName}' already has a parent '${existingParentName}'. ...`;
283
+ console.error(errorMessage);
284
+ throw new Error(errorMessage);
285
+ // Rationale: Console output provides immediate visibility before exception
286
+
287
+ // GOTCHA: Observable class logger injection (for P1.M3.T1.S2)
288
+ export class Observable<T> {
289
+ private logger?: { error: (msg: string, data?: unknown) => void };
290
+
291
+ constructor(logger?: { error: (msg: string, data?: unknown) => void }) {
292
+ this.logger = logger;
293
+ }
294
+
295
+ next(value: T): void {
296
+ for (const subscriber of this.subscribers) {
297
+ try {
298
+ subscriber.next?.(value);
299
+ } catch (err) {
300
+ this.logger?.error('Observable subscriber error', { error: err });
301
+ if (!this.logger) console.error('Observable subscriber error:', err);
302
+ }
303
+ }
304
+ }
305
+ }
306
+ ```
307
+
308
+ ### Integration Points
309
+
310
+ ```yaml
311
+ NO CODE CHANGES - This is a research task only.
312
+
313
+ OUTPUT:
314
+ - create: plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md
315
+ - content: Inventory document following the structure above
316
+
317
+ SEARCH TOOLS:
318
+ - use: Grep tool with pattern 'console.error' in src/ directory
319
+ - filter: Exclude test files (src/__tests__/) - only production code
320
+ - context: Extract 5 lines before and after each match for context
321
+
322
+ CATEGORIZATION CRITERIA:
323
+ - observer_related: Call is in try-catch around observer/subscriber callback
324
+ - other_purpose: Call is for validation, structural errors, or before throwing exception
325
+
326
+ FOLLOW-UP:
327
+ - next_task: P1.M3.T1.S2 (Replace observer error console.error with logger.error)
328
+ - next_task: P1.M3.T1.S3 (Add tests for observer error logging)
329
+ ```
330
+
331
+ ---
332
+
333
+ ## Validation Loop
334
+
335
+ ### Level 1: Search Completeness (Immediate Validation)
336
+
337
+ ```bash
338
+ # After completing search, verify no console.error calls were missed
339
+ grep -rn "console\.error" src/ --exclude-dir=__tests__ | wc -l
340
+
341
+ # Expected: At least 8 calls found in production code
342
+ # Compare with inventory document count
343
+ ```
344
+
345
+ ### Level 2: Categorization Accuracy (Verification)
346
+
347
+ ```bash
348
+ # Verify observer-related calls are correctly categorized
349
+ # Observer calls will be in try-catch blocks around observer/subscriber methods
350
+ grep -A 3 "console\.error.*observer" src/
351
+
352
+ # Verify validation errors are correctly categorized
353
+ # Validation calls will be followed by "throw new Error()"
354
+ grep -B 1 -A 1 "console\.error.*errorMessage" src/
355
+
356
+ # Expected: All categorizations match code context
357
+ ```
358
+
359
+ ### Level 3: Document Quality (Review)
360
+
361
+ ```markdown
362
+ Review checklist:
363
+ - [ ] All console.error calls are documented with file path and line number
364
+ - [ ] Each call includes the containing method/function name
365
+ - [ ] Categorization (observer-related vs other) is clearly stated
366
+ - [ ] Code snippets show the surrounding context (try-catch, throw, etc.)
367
+ - [ ] Replacement recommendations section provides clear guidance for P1.M3.T1.S2
368
+ - [ ] Document follows the specified structure
369
+ - [ ] Non-observer calls include rationale for preservation
370
+ ```
371
+
372
+ ### Level 4: Handoff Readiness
373
+
374
+ ```bash
375
+ # Verify the document enables the next task
376
+ grep -i "observer-related" plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md | wc -l
377
+
378
+ # Expected: At least 6 observer-related calls identified
379
+ # Next task should be able to proceed without additional research
380
+ ```
381
+
382
+ ---
383
+
384
+ ## Final Validation Checklist
385
+
386
+ ### Research Validation
387
+
388
+ - [ ] Grep search for 'console.error' executed in src/ directory
389
+ - [ ] Test files (src/__tests__//) excluded from search results
390
+ - [ ] Each matching file read to understand context
391
+ - [ ] All console.error calls categorized as observer-related or other purpose
392
+ - [ ] Code snippets extracted showing surrounding context
393
+ - [ ] File paths and line numbers verified for accuracy
394
+
395
+ ### Document Quality Validation
396
+
397
+ - [ ] Inventory document created at correct path
398
+ - [ ] Executive summary provides total counts
399
+ - [ ] Observer-related calls section includes all 6 expected calls
400
+ - [ ] Other purpose calls section includes validation errors
401
+ - [ ] Each call has: file path, line number, method, error type, context, categorization
402
+ - [ ] Replacement recommendations section clearly identifies which calls to replace
403
+ - [ ] Implementation notes provide guidance for P1.M3.T1.S2
404
+
405
+ ### Handoff Validation
406
+
407
+ - [ ] Document location is correct and accessible
408
+ - [ ] All file references include exact paths and line numbers
409
+ - [ ] Next task (P1.M3.T1.S2) can proceed with only this document + codebase access
410
+ - [ ] No additional research should be required for implementation
411
+ - [ ] Categorization logic is clear and reproducible
412
+
413
+ ---
414
+
415
+ ## Anti-Patterns to Avoid
416
+
417
+ - [ ] Don't make any code changes - this is a research-only task
418
+ - [ ] Don't include test file console.error calls (those are mock assertions, not actual code)
419
+ - [ ] Don't categorize based solely on message text - examine code context
420
+ - [ ] Don't skip validation errors - document why they shouldn't be replaced
421
+ - [ ] Don't forget the Observable class - it has 3 console.error calls that are observer-related
422
+ - [ ] Don't assume all console.error in workflow.ts are observer-related - lines 277, 286 are validation
423
+ - [ ] Don't omit line numbers - exact locations are critical for the replacement task
424
+ - [ ] Don't forget to provide replacement pattern recommendations for P1.M3.T1.S2
425
+
426
+ ---
427
+
428
+ ## Appendix: Quick Reference
429
+
430
+ ### Key File Locations
431
+
432
+ | File | Lines | Call Type | Categorization |
433
+ |------|-------|-----------|----------------|
434
+ | src/core/logger.ts | 27 | Observer onLog error | Observer-related |
435
+ | src/core/workflow.ts | 277 | Validation error | Other purpose |
436
+ | src/core/workflow.ts | 286 | Validation error | Other purpose |
437
+ | src/core/workflow.ts | 376 | Observer onEvent error | Observer-related |
438
+ | src/core/workflow.ts | 394 | Observer onStateUpdated error | Observer-related |
439
+ | src/utils/observable.ts | 39 | Subscriber next error | Observer-related |
440
+ | src/utils/observable.ts | 52 | Subscriber error handler failure | Observer-related |
441
+ | src/utils/observable.ts | 65 | Subscriber complete failure | Observer-related |
442
+
443
+ ### Observer Interface
444
+
445
+ ```typescript
446
+ export interface WorkflowObserver {
447
+ onLog(entry: LogEntry): void; // Can throw - src/core/logger.ts:27
448
+ onEvent(event: WorkflowEvent): void; // Can throw - src/core/workflow.ts:376
449
+ onStateUpdated(node: WorkflowNode): void; // Can throw - src/core/workflow.ts:394
450
+ onTreeChanged(root: WorkflowNode): void; // No console.error (safe implementation)
451
+ }
452
+
453
+ export interface Observer<T> {
454
+ next?(value: T): void | Promise<void>; // Can throw - src/utils/observable.ts:39
455
+ error?(err: unknown): void | Promise<void>; // Can throw - src/utils/observable.ts:52
456
+ complete?(): void | Promise<void>; // Can throw - src/utils/observable.ts:65
457
+ }
458
+ ```
459
+
460
+ ### Expected Inventory Totals
461
+
462
+ Based on codebase analysis:
463
+
464
+ - **Total console.error calls**: 8
465
+ - **Observer-related**: 6 (to be replaced in P1.M3.T1.S2)
466
+ - **Other purpose**: 2 (validation errors to preserve)
467
+
468
+ ### Observer Error Categories
469
+
470
+ 1. **WorkflowObserver callbacks** (3 calls):
471
+ - onLog errors in WorkflowLogger.emit()
472
+ - onEvent errors in Workflow.emitEvent()
473
+ - onStateUpdated errors in Workflow.snapshotState()
474
+
475
+ 2. **Observable subscriber callbacks** (3 calls):
476
+ - next() errors in Observable.next()
477
+ - error() handler failures in Observable.error()
478
+ - complete() failures in Observable.complete()
479
+
480
+ 3. **Validation errors** (2 calls - preserve as console.error):
481
+ - Child already has parent validation
482
+ - Circular reference detection
483
+
484
+ ---
485
+
486
+ ## Confidence Score
487
+
488
+ **8/10** - High confidence for one-pass research success
489
+
490
+ **Rationale**:
491
+ - All necessary context has been gathered and documented
492
+ - Research boundaries are clear (observer-related vs other purpose)
493
+ - Expected totals are known (8 total, 6 observer-related)
494
+ - Output format is well-specified
495
+ - Only potential gap: New console.error calls added after research documentation