groundswell 0.0.2 → 1.0.0

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 (554) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -9
  3. package/dist/cache/cache-key.d.ts +86 -0
  4. package/dist/cache/cache-key.d.ts.map +1 -0
  5. package/dist/cache/cache-key.js +204 -0
  6. package/dist/cache/cache-key.js.map +1 -0
  7. package/dist/cache/cache.d.ts +104 -0
  8. package/dist/cache/cache.d.ts.map +1 -0
  9. package/dist/cache/cache.js +179 -0
  10. package/dist/cache/cache.js.map +1 -0
  11. package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
  12. package/dist/cache/index.d.ts.map +1 -0
  13. package/dist/cache/index.js +6 -0
  14. package/dist/cache/index.js.map +1 -0
  15. package/dist/core/agent.d.ts +203 -0
  16. package/dist/core/agent.d.ts.map +1 -0
  17. package/dist/core/agent.js +833 -0
  18. package/dist/core/agent.js.map +1 -0
  19. package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
  20. package/dist/core/context.d.ts.map +1 -0
  21. package/dist/core/context.js +80 -0
  22. package/dist/core/context.js.map +1 -0
  23. package/dist/core/event-tree.d.ts +72 -0
  24. package/dist/core/event-tree.d.ts.map +1 -0
  25. package/dist/core/event-tree.js +211 -0
  26. package/dist/core/event-tree.js.map +1 -0
  27. package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
  28. package/dist/core/factory.d.ts.map +1 -0
  29. package/dist/core/factory.js +110 -0
  30. package/dist/core/factory.js.map +1 -0
  31. package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/index.js +9 -0
  34. package/dist/core/index.js.map +1 -0
  35. package/dist/core/logger.d.ts +50 -0
  36. package/dist/core/logger.d.ts.map +1 -0
  37. package/dist/core/logger.js +91 -0
  38. package/dist/core/logger.js.map +1 -0
  39. package/dist/core/mcp-handler.d.ts +127 -0
  40. package/dist/core/mcp-handler.d.ts.map +1 -0
  41. package/dist/core/mcp-handler.js +323 -0
  42. package/dist/core/mcp-handler.js.map +1 -0
  43. package/dist/core/prompt.d.ts +80 -0
  44. package/dist/core/prompt.d.ts.map +1 -0
  45. package/dist/core/prompt.js +120 -0
  46. package/dist/core/prompt.js.map +1 -0
  47. package/dist/core/workflow-context.d.ts +61 -0
  48. package/dist/core/workflow-context.d.ts.map +1 -0
  49. package/dist/core/workflow-context.js +358 -0
  50. package/dist/core/workflow-context.js.map +1 -0
  51. package/dist/core/workflow.d.ts +543 -0
  52. package/dist/core/workflow.d.ts.map +1 -0
  53. package/dist/core/workflow.js +986 -0
  54. package/dist/core/workflow.js.map +1 -0
  55. package/dist/debugger/event-replayer.d.ts +422 -0
  56. package/dist/debugger/event-replayer.d.ts.map +1 -0
  57. package/dist/debugger/event-replayer.js +639 -0
  58. package/dist/debugger/event-replayer.js.map +1 -0
  59. package/dist/debugger/index.d.ts +2 -0
  60. package/dist/debugger/index.d.ts.map +1 -0
  61. package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
  62. package/dist/debugger/index.js.map +1 -0
  63. package/dist/debugger/tree-debugger.d.ts +240 -0
  64. package/dist/debugger/tree-debugger.d.ts.map +1 -0
  65. package/dist/debugger/tree-debugger.js +620 -0
  66. package/dist/debugger/tree-debugger.js.map +1 -0
  67. package/dist/decorators/index.d.ts +4 -0
  68. package/dist/decorators/index.d.ts.map +1 -0
  69. package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
  70. package/dist/decorators/index.js.map +1 -0
  71. package/dist/decorators/observed-state.d.ts +32 -0
  72. package/dist/decorators/observed-state.d.ts.map +1 -0
  73. package/dist/decorators/observed-state.js +79 -0
  74. package/dist/decorators/observed-state.js.map +1 -0
  75. package/dist/decorators/step.d.ts +15 -0
  76. package/dist/decorators/step.d.ts.map +1 -0
  77. package/dist/decorators/step.js +192 -0
  78. package/dist/decorators/step.js.map +1 -0
  79. package/dist/decorators/task.d.ts +50 -0
  80. package/dist/decorators/task.d.ts.map +1 -0
  81. package/dist/decorators/task.js +118 -0
  82. package/dist/decorators/task.js.map +1 -0
  83. package/dist/examples/index.d.ts +3 -0
  84. package/dist/examples/index.d.ts.map +1 -0
  85. package/{src/examples/index.ts → dist/examples/index.js} +1 -0
  86. package/dist/examples/index.js.map +1 -0
  87. package/dist/examples/tdd-orchestrator.d.ts +15 -0
  88. package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
  89. package/dist/examples/tdd-orchestrator.js +121 -0
  90. package/dist/examples/tdd-orchestrator.js.map +1 -0
  91. package/dist/examples/test-cycle-workflow.d.ts +14 -0
  92. package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
  93. package/dist/examples/test-cycle-workflow.js +116 -0
  94. package/dist/examples/test-cycle-workflow.js.map +1 -0
  95. package/dist/harnesses/claude-code-harness.d.ts +391 -0
  96. package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
  97. package/dist/harnesses/claude-code-harness.js +1076 -0
  98. package/dist/harnesses/claude-code-harness.js.map +1 -0
  99. package/dist/harnesses/harness-registry.d.ts +440 -0
  100. package/dist/harnesses/harness-registry.d.ts.map +1 -0
  101. package/dist/harnesses/harness-registry.js +543 -0
  102. package/dist/harnesses/harness-registry.js.map +1 -0
  103. package/dist/harnesses/index.d.ts +12 -0
  104. package/dist/harnesses/index.d.ts.map +1 -0
  105. package/dist/harnesses/index.js +11 -0
  106. package/dist/harnesses/index.js.map +1 -0
  107. package/dist/harnesses/pi-harness.d.ts +219 -0
  108. package/dist/harnesses/pi-harness.d.ts.map +1 -0
  109. package/dist/harnesses/pi-harness.js +676 -0
  110. package/dist/harnesses/pi-harness.js.map +1 -0
  111. package/dist/harnesses/pi-schema-converter.d.ts +24 -0
  112. package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
  113. package/dist/harnesses/pi-schema-converter.js +81 -0
  114. package/dist/harnesses/pi-schema-converter.js.map +1 -0
  115. package/dist/harnesses/register-defaults.d.ts +24 -0
  116. package/dist/harnesses/register-defaults.d.ts.map +1 -0
  117. package/dist/harnesses/register-defaults.js +40 -0
  118. package/dist/harnesses/register-defaults.js.map +1 -0
  119. package/dist/harnesses/session-store.d.ts +201 -0
  120. package/dist/harnesses/session-store.d.ts.map +1 -0
  121. package/dist/harnesses/session-store.js +254 -0
  122. package/dist/harnesses/session-store.js.map +1 -0
  123. package/dist/index.d.ts +37 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +57 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/reflection/index.d.ts +5 -0
  128. package/dist/reflection/index.d.ts.map +1 -0
  129. package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
  130. package/dist/reflection/index.js.map +1 -0
  131. package/dist/reflection/reflection.d.ts +84 -0
  132. package/dist/reflection/reflection.d.ts.map +1 -0
  133. package/dist/reflection/reflection.js +344 -0
  134. package/dist/reflection/reflection.js.map +1 -0
  135. package/dist/tools/index.d.ts +6 -0
  136. package/dist/tools/index.d.ts.map +1 -0
  137. package/dist/tools/index.js +11 -0
  138. package/dist/tools/index.js.map +1 -0
  139. package/dist/tools/introspection.d.ts +165 -0
  140. package/dist/tools/introspection.d.ts.map +1 -0
  141. package/dist/tools/introspection.js +324 -0
  142. package/dist/tools/introspection.js.map +1 -0
  143. package/dist/types/agent.d.ts +1317 -0
  144. package/dist/types/agent.d.ts.map +1 -0
  145. package/dist/types/agent.js +423 -0
  146. package/dist/types/agent.js.map +1 -0
  147. package/dist/types/decorators.d.ts +40 -0
  148. package/dist/types/decorators.d.ts.map +1 -0
  149. package/dist/types/decorators.js +2 -0
  150. package/dist/types/decorators.js.map +1 -0
  151. package/dist/types/error-strategy.d.ts +13 -0
  152. package/dist/types/error-strategy.d.ts.map +1 -0
  153. package/dist/types/error-strategy.js +2 -0
  154. package/dist/types/error-strategy.js.map +1 -0
  155. package/dist/types/error.d.ts +20 -0
  156. package/dist/types/error.d.ts.map +1 -0
  157. package/dist/types/error.js +2 -0
  158. package/dist/types/error.js.map +1 -0
  159. package/dist/types/events.d.ts +113 -0
  160. package/dist/types/events.d.ts.map +1 -0
  161. package/dist/types/events.js +2 -0
  162. package/dist/types/events.js.map +1 -0
  163. package/dist/types/harnesses.d.ts +474 -0
  164. package/dist/types/harnesses.d.ts.map +1 -0
  165. package/dist/types/harnesses.js +2 -0
  166. package/dist/types/harnesses.js.map +1 -0
  167. package/dist/types/index.d.ts +23 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +8 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/types/logging.d.ts +24 -0
  172. package/dist/types/logging.d.ts.map +1 -0
  173. package/dist/types/logging.js +2 -0
  174. package/dist/types/logging.js.map +1 -0
  175. package/dist/types/observer.d.ts +18 -0
  176. package/dist/types/observer.d.ts.map +1 -0
  177. package/dist/types/observer.js +2 -0
  178. package/dist/types/observer.js.map +1 -0
  179. package/dist/types/prompt.d.ts +31 -0
  180. package/dist/types/prompt.d.ts.map +1 -0
  181. package/dist/types/prompt.js +6 -0
  182. package/dist/types/prompt.js.map +1 -0
  183. package/dist/types/providers.d.ts +691 -0
  184. package/dist/types/providers.d.ts.map +1 -0
  185. package/dist/types/providers.js +14 -0
  186. package/dist/types/providers.js.map +1 -0
  187. package/dist/types/reflection.d.ts +96 -0
  188. package/dist/types/reflection.d.ts.map +1 -0
  189. package/dist/types/reflection.js +24 -0
  190. package/dist/types/reflection.js.map +1 -0
  191. package/dist/types/restart.d.ts +132 -0
  192. package/dist/types/restart.d.ts.map +1 -0
  193. package/dist/types/restart.js +2 -0
  194. package/dist/types/restart.js.map +1 -0
  195. package/dist/types/sdk-primitives.d.ts +118 -0
  196. package/dist/types/sdk-primitives.d.ts.map +1 -0
  197. package/dist/types/sdk-primitives.js +6 -0
  198. package/dist/types/sdk-primitives.js.map +1 -0
  199. package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
  200. package/dist/types/snapshot.d.ts.map +1 -0
  201. package/dist/types/snapshot.js +2 -0
  202. package/dist/types/snapshot.js.map +1 -0
  203. package/dist/types/streaming.d.ts +194 -0
  204. package/dist/types/streaming.d.ts.map +1 -0
  205. package/dist/types/streaming.js +67 -0
  206. package/dist/types/streaming.js.map +1 -0
  207. package/dist/types/workflow-context.d.ts +275 -0
  208. package/dist/types/workflow-context.d.ts.map +1 -0
  209. package/dist/types/workflow-context.js +8 -0
  210. package/dist/types/workflow-context.js.map +1 -0
  211. package/dist/types/workflow.d.ts +30 -0
  212. package/dist/types/workflow.d.ts.map +1 -0
  213. package/dist/types/workflow.js +2 -0
  214. package/dist/types/workflow.js.map +1 -0
  215. package/dist/utils/agent-validation.d.ts +88 -0
  216. package/dist/utils/agent-validation.d.ts.map +1 -0
  217. package/dist/utils/agent-validation.js +87 -0
  218. package/dist/utils/agent-validation.js.map +1 -0
  219. package/dist/utils/delay.d.ts +7 -0
  220. package/dist/utils/delay.d.ts.map +1 -0
  221. package/dist/utils/delay.js +9 -0
  222. package/dist/utils/delay.js.map +1 -0
  223. package/dist/utils/harness-config.d.ts +180 -0
  224. package/dist/utils/harness-config.d.ts.map +1 -0
  225. package/dist/utils/harness-config.js +311 -0
  226. package/dist/utils/harness-config.js.map +1 -0
  227. package/dist/utils/id.d.ts +6 -0
  228. package/dist/utils/id.d.ts.map +1 -0
  229. package/dist/utils/id.js +12 -0
  230. package/dist/utils/id.js.map +1 -0
  231. package/dist/utils/index.d.ts +13 -0
  232. package/dist/utils/index.d.ts.map +1 -0
  233. package/dist/utils/index.js +11 -0
  234. package/dist/utils/index.js.map +1 -0
  235. package/dist/utils/model-spec.d.ts +110 -0
  236. package/dist/utils/model-spec.d.ts.map +1 -0
  237. package/dist/utils/model-spec.js +149 -0
  238. package/dist/utils/model-spec.js.map +1 -0
  239. package/dist/utils/observable.d.ts +54 -0
  240. package/dist/utils/observable.d.ts.map +1 -0
  241. package/dist/utils/observable.js +82 -0
  242. package/dist/utils/observable.js.map +1 -0
  243. package/dist/utils/provider-config.d.ts +10 -0
  244. package/dist/utils/provider-config.d.ts.map +1 -0
  245. package/dist/utils/provider-config.js +10 -0
  246. package/dist/utils/provider-config.js.map +1 -0
  247. package/dist/utils/restart-analysis.d.ts +202 -0
  248. package/dist/utils/restart-analysis.d.ts.map +1 -0
  249. package/dist/utils/restart-analysis.js +426 -0
  250. package/dist/utils/restart-analysis.js.map +1 -0
  251. package/dist/utils/session-serialization.d.ts +118 -0
  252. package/dist/utils/session-serialization.d.ts.map +1 -0
  253. package/dist/utils/session-serialization.js +217 -0
  254. package/dist/utils/session-serialization.js.map +1 -0
  255. package/dist/utils/workflow-error-utils.d.ts +22 -0
  256. package/dist/utils/workflow-error-utils.d.ts.map +1 -0
  257. package/dist/utils/workflow-error-utils.js +45 -0
  258. package/dist/utils/workflow-error-utils.js.map +1 -0
  259. package/package.json +34 -5
  260. package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
  261. package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
  262. package/.claude/commands/task-breakdown.md +0 -94
  263. package/.claude/settings.local.json +0 -9
  264. package/.claude/system_prompts/task-breakdown.md +0 -101
  265. package/CHANGELOG.md +0 -188
  266. package/PRD.md +0 -543
  267. package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
  268. package/PRPs/PRDs/002-agent-prompt.md +0 -390
  269. package/PRPs/PRDs/003-agent-prompt.md +0 -943
  270. package/PRPs/PRDs/004-agent-prompt.md +0 -1136
  271. package/PRPs/PRDs/tasks-001.json +0 -492
  272. package/PRPs/README.md +0 -83
  273. package/PRPs/templates/prp_base.md +0 -222
  274. package/docs/agent.md +0 -422
  275. package/docs/prompt.md +0 -419
  276. package/docs/workflow.md +0 -600
  277. package/examples/README.md +0 -258
  278. package/examples/examples/01-basic-workflow.ts +0 -100
  279. package/examples/examples/02-decorator-options.ts +0 -217
  280. package/examples/examples/03-parent-child.ts +0 -241
  281. package/examples/examples/04-observers-debugger.ts +0 -340
  282. package/examples/examples/05-error-handling.ts +0 -387
  283. package/examples/examples/06-concurrent-tasks.ts +0 -352
  284. package/examples/examples/07-agent-loops.ts +0 -432
  285. package/examples/examples/08-sdk-features.ts +0 -667
  286. package/examples/examples/09-reflection.ts +0 -573
  287. package/examples/examples/10-introspection.ts +0 -550
  288. package/examples/examples/11-reparenting-workflows.ts +0 -269
  289. package/examples/index.ts +0 -147
  290. package/examples/utils/helpers.ts +0 -57
  291. package/package-lock.json +0 -2398
  292. package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
  293. package/plan/001_d3bb02af4886/backlog.json +0 -867
  294. package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
  295. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
  296. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
  297. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
  298. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
  299. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
  300. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
  301. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
  302. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
  303. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
  304. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
  305. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
  306. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
  307. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
  308. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
  309. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
  310. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
  311. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
  312. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
  313. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
  314. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
  315. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
  316. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
  317. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
  318. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
  319. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
  320. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
  321. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
  322. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
  323. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
  324. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
  325. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
  326. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
  327. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
  328. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
  329. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
  330. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
  331. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
  332. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
  333. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
  334. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
  335. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
  336. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
  337. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
  338. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
  339. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
  340. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
  341. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
  342. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
  343. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
  344. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
  345. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
  346. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
  347. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
  348. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
  349. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
  350. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
  351. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
  352. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
  353. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
  354. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
  355. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
  356. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
  357. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
  358. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
  359. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
  360. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
  361. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
  362. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
  363. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
  364. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
  365. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
  366. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
  367. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
  368. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
  369. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
  370. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
  371. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
  372. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
  373. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
  374. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
  375. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
  376. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
  377. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
  378. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
  379. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
  380. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
  381. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
  382. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
  383. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
  384. package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
  385. package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
  386. package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
  387. package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
  388. package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
  389. package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
  390. package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
  391. package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
  392. package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
  393. package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
  394. package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
  395. package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
  396. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
  397. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
  398. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
  399. package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
  400. package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
  401. package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
  402. package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
  403. package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
  404. package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
  405. package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
  406. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
  407. package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
  408. package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
  409. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
  410. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
  411. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
  412. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
  413. package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
  414. package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
  415. package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
  416. package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
  417. package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
  418. package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
  419. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
  420. package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
  421. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
  422. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
  423. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
  424. package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
  425. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
  426. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
  427. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
  428. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
  429. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
  430. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
  431. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
  432. package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
  433. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
  434. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
  435. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
  436. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
  437. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
  438. package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
  439. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
  440. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
  441. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
  442. package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
  443. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
  444. package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
  445. package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
  446. package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
  447. package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
  448. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
  449. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
  450. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
  451. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
  452. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
  453. package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
  454. package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
  455. package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
  456. package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
  457. package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
  458. package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
  459. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
  460. package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
  461. package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
  462. package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
  463. package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
  464. package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
  465. package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
  466. package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
  467. package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
  468. package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
  469. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
  470. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
  471. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
  472. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
  473. package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
  474. package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
  475. package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
  476. package/scripts/generate-llms-full.ts +0 -206
  477. package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
  478. package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
  479. package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
  480. package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
  481. package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
  482. package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
  483. package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
  484. package/src/__tests__/adversarial/edge-case.test.ts +0 -703
  485. package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
  486. package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
  487. package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
  488. package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
  489. package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
  490. package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
  491. package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
  492. package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
  493. package/src/__tests__/helpers/index.ts +0 -18
  494. package/src/__tests__/helpers/tree-verification.ts +0 -257
  495. package/src/__tests__/integration/agent-workflow.test.ts +0 -256
  496. package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
  497. package/src/__tests__/integration/observer-logging.test.ts +0 -643
  498. package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
  499. package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
  500. package/src/__tests__/unit/agent.test.ts +0 -169
  501. package/src/__tests__/unit/cache-key.test.ts +0 -182
  502. package/src/__tests__/unit/cache.test.ts +0 -172
  503. package/src/__tests__/unit/context.test.ts +0 -217
  504. package/src/__tests__/unit/decorators.test.ts +0 -100
  505. package/src/__tests__/unit/introspection-tools.test.ts +0 -277
  506. package/src/__tests__/unit/logger.test.ts +0 -293
  507. package/src/__tests__/unit/observable.test.ts +0 -321
  508. package/src/__tests__/unit/prompt.test.ts +0 -135
  509. package/src/__tests__/unit/reflection.test.ts +0 -210
  510. package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
  511. package/src/__tests__/unit/tree-debugger.test.ts +0 -85
  512. package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
  513. package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
  514. package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
  515. package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
  516. package/src/__tests__/unit/workflow.test.ts +0 -357
  517. package/src/cache/cache-key.ts +0 -244
  518. package/src/cache/cache.ts +0 -236
  519. package/src/core/agent.ts +0 -593
  520. package/src/core/event-tree.ts +0 -260
  521. package/src/core/logger.ts +0 -112
  522. package/src/core/mcp-handler.ts +0 -184
  523. package/src/core/prompt.ts +0 -150
  524. package/src/core/workflow-context.ts +0 -351
  525. package/src/core/workflow.ts +0 -540
  526. package/src/debugger/tree-debugger.ts +0 -255
  527. package/src/decorators/observed-state.ts +0 -95
  528. package/src/decorators/step.ts +0 -139
  529. package/src/decorators/task.ts +0 -159
  530. package/src/examples/tdd-orchestrator.ts +0 -65
  531. package/src/examples/test-cycle-workflow.ts +0 -64
  532. package/src/index.ts +0 -142
  533. package/src/reflection/reflection.ts +0 -407
  534. package/src/tools/index.ts +0 -36
  535. package/src/tools/introspection.ts +0 -464
  536. package/src/types/agent.ts +0 -90
  537. package/src/types/decorators.ts +0 -32
  538. package/src/types/error-strategy.ts +0 -13
  539. package/src/types/error.ts +0 -20
  540. package/src/types/events.ts +0 -75
  541. package/src/types/index.ts +0 -55
  542. package/src/types/logging.ts +0 -24
  543. package/src/types/observer.ts +0 -18
  544. package/src/types/prompt.ts +0 -40
  545. package/src/types/reflection.ts +0 -117
  546. package/src/types/sdk-primitives.ts +0 -128
  547. package/src/types/workflow-context.ts +0 -163
  548. package/src/types/workflow.ts +0 -37
  549. package/src/utils/id.ts +0 -11
  550. package/src/utils/index.ts +0 -4
  551. package/src/utils/observable.ts +0 -106
  552. package/src/utils/workflow-error-utils.ts +0 -56
  553. package/tsconfig.json +0 -22
  554. package/vitest.config.ts +0 -16
@@ -1,339 +0,0 @@
1
- # Quick Reference: Bidirectional Tree Consistency Testing
2
-
3
- **For immediate use in writing tests**
4
-
5
- ---
6
-
7
- ## The Golden Rule
8
-
9
- > **Every tree operation MUST update BOTH trees (Workflow + WorkflowNode) atomically**
10
-
11
- If you attach a child to a parent, you must update:
12
- 1. `child.parent` (workflow tree)
13
- 2. `parent.children` (workflow tree)
14
- 3. `child.node.parent` (node tree)
15
- 4. `parent.node.children` (node tree)
16
-
17
- All four must happen, or trees become inconsistent.
18
-
19
- ---
20
-
21
- ## Essential Helper Functions
22
-
23
- ### verifyBidirectionalLink(parent, child)
24
- Use after every `attachChild()` and after reparenting
25
-
26
- ```typescript
27
- import { verifyBidirectionalLink } from '../helpers/tree-verification';
28
-
29
- // After attaching
30
- parent.attachChild(child);
31
- verifyBidirectionalLink(parent, child); // ✅ Checks both trees
32
- ```
33
-
34
- ### verifyTreeMirror(root)
35
- Use to ensure 1:1 correspondence between trees
36
-
37
- ```typescript
38
- import { verifyTreeMirror } from '../helpers/tree-verification';
39
-
40
- // After tree mutations
41
- parent.detachChild(child);
42
- newParent.attachChild(child);
43
- verifyTreeMirror(newParent); // ✅ Validates entire tree
44
- ```
45
-
46
- ### validateTreeConsistency(root)
47
- Returns array of inconsistency descriptions
48
-
49
- ```typescript
50
- import { validateTreeConsistency } from '../helpers/tree-verification';
51
-
52
- const errors = validateTreeConsistency(root);
53
- expect(errors).toEqual([]); // ✅ Empty = valid tree
54
- ```
55
-
56
- ---
57
-
58
- ## Test Template (Copy-Paste)
59
-
60
- ```typescript
61
- import { describe, it, expect } from 'vitest';
62
- import { Workflow } from '../../index.js';
63
- import { verifyBidirectionalLink, verifyTreeMirror, validateTreeConsistency } from '../helpers/tree-verification';
64
-
65
- class TestWorkflow extends Workflow {
66
- async run(): Promise<string> {
67
- return 'done';
68
- }
69
- }
70
-
71
- describe('Tree Consistency', () => {
72
- it('should maintain consistency after [OPERATION]', () => {
73
- // ARRANGE
74
- const parent = new TestWorkflow('Parent');
75
- const child = new TestWorkflow('Child');
76
-
77
- // ACT
78
- parent.attachChild(child);
79
-
80
- // ASSERT - Always check both trees!
81
- verifyBidirectionalLink(parent, child);
82
- verifyTreeMirror(parent);
83
- expect(validateTreeConsistency(parent)).toEqual([]);
84
- });
85
- });
86
- ```
87
-
88
- ---
89
-
90
- ## Critical Invariants
91
-
92
- ### 1. Tree Mirror Invariant
93
- **If A is B's parent in workflow tree, A must be B's parent in node tree**
94
-
95
- ```typescript
96
- // ✅ CORRECT
97
- expect(child.parent).toBe(parent); // Workflow tree
98
- expect(child.node.parent).toBe(parent.node); // Node tree (MUST match)
99
-
100
- // ❌ WRONG - Only checks one tree
101
- expect(child.parent).toBe(parent);
102
- ```
103
-
104
- ### 2. Bidirectional Link Invariant
105
- **If A is B's parent, B must be in A's children array (in BOTH trees)**
106
-
107
- ```typescript
108
- // ✅ CORRECT - Checks both directions
109
- expect(child.parent).toBe(parent);
110
- expect(parent.children).toContain(child);
111
- expect(child.node.parent).toBe(parent.node);
112
- expect(parent.node.children).toContain(child.node);
113
-
114
- // ❌ WRONG - Only checks forward direction
115
- expect(parent.children).toContain(child);
116
- ```
117
-
118
- ### 3. No Orphaned Nodes Invariant
119
- **Every non-root node must have exactly one parent who claims it**
120
-
121
- ```typescript
122
- // ✅ CORRECT
123
- // child has parent
124
- expect(child.parent).toBe(parent);
125
- // parent knows about child
126
- expect(parent.children).toContain(child);
127
- // No other parent claims this child
128
- const otherClaimants = allNodes.filter(n => n !== parent && n.children.includes(child));
129
- expect(otherClaimants).toEqual([]);
130
- ```
131
-
132
- ---
133
-
134
- ## Common Test Scenarios
135
-
136
- ### Scenario 1: Test attachChild()
137
- ```typescript
138
- it('should maintain consistency after attach', () => {
139
- const parent = new TestWorkflow('Parent');
140
- const child = new TestWorkflow('Child');
141
-
142
- parent.attachChild(child);
143
-
144
- // Verify bidirectional links
145
- verifyBidirectionalLink(parent, child);
146
-
147
- // Verify tree mirror
148
- verifyTreeMirror(parent);
149
-
150
- // Verify no inconsistencies
151
- expect(validateTreeConsistency(parent)).toEqual([]);
152
- });
153
- ```
154
-
155
- ### Scenario 2: Test detachChild()
156
- ```typescript
157
- it('should maintain consistency after detach', () => {
158
- const parent = new TestWorkflow('Parent');
159
- const child = new TestWorkflow('Child', parent);
160
-
161
- parent.detachChild(child);
162
-
163
- // Verify complete detachment
164
- expect(child.parent).toBeNull();
165
- expect(parent.children).not.toContain(child);
166
- expect(child.node.parent).toBeNull();
167
- expect(parent.node.children).not.toContain(child.node);
168
-
169
- verifyTreeMirror(parent);
170
- });
171
- ```
172
-
173
- ### Scenario 3: Test Reparenting
174
- ```typescript
175
- it('should maintain consistency during reparenting', () => {
176
- const parent1 = new TestWorkflow('Parent1');
177
- const parent2 = new TestWorkflow('Parent2');
178
- const child = new TestWorkflow('Child', parent1);
179
-
180
- // Verify initial state
181
- verifyBidirectionalLink(parent1, child);
182
-
183
- // Reparent
184
- parent1.detachChild(child);
185
- parent2.attachChild(child);
186
-
187
- // Verify new state
188
- verifyBidirectionalLink(parent2, child);
189
-
190
- // Verify old parent no longer has child
191
- expect(parent1.children).not.toContain(child);
192
- expect(parent1.node.children).not.toContain(child.node);
193
-
194
- // Verify both trees are valid
195
- verifyTreeMirror(parent1);
196
- verifyTreeMirror(parent2);
197
- });
198
- ```
199
-
200
- ### Scenario 4: Test Error Handling
201
- ```typescript
202
- it('should not corrupt state on duplicate attach', () => {
203
- const parent = new TestWorkflow('Parent');
204
- const child = new TestWorkflow('Child', parent);
205
-
206
- // Should throw
207
- expect(() => parent.attachChild(child)).toThrow();
208
-
209
- // Verify state unchanged
210
- verifyBidirectionalLink(parent, child);
211
- verifyTreeMirror(parent);
212
- });
213
- ```
214
-
215
- ---
216
-
217
- ## Anti-Patterns to Avoid
218
-
219
- ### ❌ Don't check only workflow tree
220
- ```typescript
221
- // BAD: Only checks workflow tree
222
- expect(child.parent).toBe(parent);
223
- expect(parent.children).toContain(child);
224
- // ❌ Missing node tree checks!
225
- ```
226
-
227
- ### ❌ Don't check only one direction
228
- ```typescript
229
- // BAD: Only checks parent→child
230
- expect(parent.children).toContain(child);
231
- // ❌ Missing child→parent check!
232
- ```
233
-
234
- ### ❌ Don't forget to verify both trees after errors
235
- ```typescript
236
- // BAD: Error case not validated
237
- expect(() => parent2.attachChild(child)).toThrow();
238
- // ❌ Should verify no corruption occurred!
239
- ```
240
-
241
- ### ❌ Don't manually mutate tree properties
242
- ```typescript
243
- // BAD: Bypasses attachChild validation
244
- (child as any).parent = newParent;
245
- // ❌ Creates inconsistency!
246
- ```
247
-
248
- ---
249
-
250
- ## Quick Checklist
251
-
252
- When writing tree operation tests, ensure you:
253
-
254
- - [ ] Test both workflow tree AND node tree
255
- - [ ] Test parent→child AND child→parent directions
256
- - [ ] Use helper functions (verifyBidirectionalLink, verifyTreeMirror)
257
- - [ ] Run validateTreeConsistency to check for hidden issues
258
- - [ ] Test error cases don't corrupt state
259
- - [ ] Verify state after attach, detach, and reparenting
260
- - [ ] Test with multiple children
261
- - [ ] Test with deep hierarchies
262
- - [ ] Test edge cases (null parent, duplicate attach, circular refs)
263
-
264
- ---
265
-
266
- ## Common Patterns
267
-
268
- ### Pattern: Verify After Every Operation
269
- ```typescript
270
- operation();
271
- verifyTreeMirror(root);
272
- expect(validateTreeConsistency(root)).toEqual([]);
273
- ```
274
-
275
- ### Pattern: Test Error Cases Don't Corrupt
276
- ```typescript
277
- expect(() => invalidOperation()).toThrow();
278
- verifyTreeMirror(root); // State still valid
279
- ```
280
-
281
- ### Pattern: Test Both Trees Explicitly
282
- ```typescript
283
- // Workflow tree
284
- expect(child.parent).toBe(parent);
285
- expect(parent.children).toContain(child);
286
-
287
- // Node tree (must match!)
288
- expect(child.node.parent).toBe(parent.node);
289
- expect(parent.node.children).toContain(child.node);
290
- ```
291
-
292
- ---
293
-
294
- ## External References
295
-
296
- For deeper understanding, see:
297
-
298
- 1. **Full Research Document**
299
- - `/home/dustin/projects/groundswell/plan/bugfix/P1M3T1S4/research/bidirectional-tree-consistency-testing.md`
300
-
301
- 2. **Test Pattern Examples**
302
- - `/home/dustin/projects/groundswell/plan/bugfix/P1M3T1S4/research/test-pattern-examples.md`
303
-
304
- 3. **Research Summary**
305
- - `/home/dustin/projects/groundswell/plan/bugfix/P1M3T1S4/research/SUMMARY.md`
306
-
307
- 4. **Existing Test Examples**
308
- - `/home/dustin/projects/groundswell/src/__tests__/integration/workflow-reparenting.test.ts`
309
- - `/home/dustin/projects/groundswell/src/__tests__/adversarial/prd-compliance.test.ts`
310
-
311
- ---
312
-
313
- ## Need Help?
314
-
315
- ### For quick questions:
316
- - Check the "Test Pattern Examples" document for copy-paste templates
317
- - Look at existing tests in the codebase
318
- - Use the helper functions - they handle the complexity
319
-
320
- ### For deep understanding:
321
- - Read the full research document
322
- - Study the existing test patterns
323
- - Review DOM and React Fiber patterns
324
-
325
- ### For implementation:
326
- 1. Create helper functions first
327
- 2. Write tests using helpers
328
- 3. Run tests, fix issues
329
- 4. Iterate and refine
330
-
331
- ---
332
-
333
- **Remember**: The 1:1 tree mirror invariant is CRITICAL. If workflow tree and node tree don't match perfectly, bugs will occur. Always test both trees!
334
-
335
- ---
336
-
337
- **Quick Reference Version:** 1.0
338
- **Last Updated:** 2026-01-12
339
- **Maintainer:** P1M3T1S4 Research Team
@@ -1,305 +0,0 @@
1
- # Research: Testing Bidirectional Consistency Between Dual Tree Structures
2
-
3
- **Task:** P1M3T1S4
4
- **Research Date:** 2026-01-12
5
- **Status:** ✅ COMPLETE
6
-
7
- ---
8
-
9
- ## Document Index
10
-
11
- This research package contains comprehensive documentation on testing patterns for bidirectional consistency between Workflow instance tree and WorkflowNode tree.
12
-
13
- ### 📚 Documentation Files
14
-
15
- #### 1. QUICK_REFERENCE.md ⭐ **START HERE**
16
- **Best for:** Immediate use in writing tests
17
- **Contents:**
18
- - The golden rule of bidirectional consistency
19
- - Essential helper functions
20
- - Copy-paste test template
21
- - Critical invariants
22
- - Common test scenarios
23
- - Anti-patterns to avoid
24
- - Quick checklist
25
-
26
- **Read time:** 5 minutes
27
- **Use when:** Writing tests right now
28
-
29
- ---
30
-
31
- #### 2. test-pattern-examples.md
32
- **Best for:** Implementation with ready-to-use code
33
- **Contents:**
34
- - Complete helper functions implementation (600+ lines)
35
- - 6 complete test patterns with full code:
36
- - Basic bidirectional consistency tests
37
- - Reparenting consistency tests
38
- - Invariant testing patterns
39
- - Adversarial testing patterns
40
- - Property-based testing patterns
41
- - WorkflowTreeDebugger integration patterns
42
- - Test file template
43
- - Usage guidelines
44
-
45
- **Read time:** 15 minutes
46
- **Use when:** Implementing test suite
47
-
48
- ---
49
-
50
- #### 3. bidirectional-tree-consistency-testing.md
51
- **Best for:** Comprehensive understanding of patterns
52
- **Contents:**
53
- - Core testing patterns (AAA, naming conventions)
54
- - Bidirectional consistency validation methods
55
- - Tree operation testing (attach, detach, reparenting)
56
- - Invariant testing patterns (structural, counting, depth)
57
- - Adversarial testing approaches
58
- - External best practices (DOM, React Fiber, academic research)
59
- - Test pattern catalog
60
- - Implementation checklist
61
-
62
- **Read time:** 30 minutes
63
- **Use when:** Learning patterns deeply
64
-
65
- ---
66
-
67
- #### 4. SUMMARY.md
68
- **Best for:** Executive overview and roadmap
69
- **Contents:**
70
- - Executive summary
71
- - Key findings from codebase analysis
72
- - Actionable recommendations (prioritized)
73
- - URLs to all resources (internal and external)
74
- - Implementation roadmap (4-week plan)
75
- - Success metrics
76
- - Risk assessment
77
-
78
- **Read time:** 10 minutes
79
- **Use when:** Planning implementation strategy
80
-
81
- ---
82
-
83
- ## Quick Start Guide
84
-
85
- ### I Need to Write Tests Right Now 🚀
86
- 1. Open **QUICK_REFERENCE.md**
87
- 2. Copy the test template
88
- 3. Use helper functions (verifyBidirectionalLink, verifyTreeMirror)
89
- 4. Run tests
90
-
91
- ### I Need to Implement Test Suite 🛠️
92
- 1. Open **test-pattern-examples.md**
93
- 2. Copy helper functions to `src/__tests__/helpers/tree-verification.ts`
94
- 3. Copy test patterns to new test file
95
- 4. Run and iterate
96
-
97
- ### I Need to Understand the Patterns 📖
98
- 1. Open **bidirectional-tree-consistency-testing.md**
99
- 2. Read relevant sections
100
- 3. Study code examples
101
- 4. Apply to your tests
102
-
103
- ### I Need to Plan Implementation 📋
104
- 1. Open **SUMMARY.md**
105
- 2. Review key findings
106
- 3. Follow implementation roadmap
107
- 4. Track progress with checklist
108
-
109
- ---
110
-
111
- ## Key Takeaways
112
-
113
- ### The Core Problem
114
- The codebase maintains TWO tree representations:
115
- 1. **Workflow instance tree**: `workflow.parent`, `workflow.children`
116
- 2. **WorkflowNode tree**: `node.parent`, `node.children`
117
-
118
- Both trees MUST stay perfectly synchronized (1:1 mirror invariant).
119
-
120
- ### The Solution
121
- Test that every tree operation updates BOTH trees correctly:
122
- - Test parent→child AND child→parent directions
123
- - Test workflow tree AND node tree
124
- - Verify consistency after every operation
125
-
126
- ### The Tools
127
- Helper functions make it easy:
128
- - `verifyBidirectionalLink(parent, child)` - Verify one link
129
- - `verifyTreeMirror(root)` - Verify entire tree
130
- - `validateTreeConsistency(root)` - Find all inconsistencies
131
-
132
- ---
133
-
134
- ## Research Findings
135
-
136
- ### ✅ What We Found
137
-
138
- 1. **Strong Existing Patterns**
139
- - Codebase already has excellent testing patterns
140
- - Extracted and documented for reuse
141
- - Example: `workflow-reparenting.test.ts:280-302`
142
-
143
- 2. **Critical Invariant Identified**
144
- - 1:1 tree mirror invariant is key to system correctness
145
- - Must be verified after every tree mutation
146
- - Both trees must perfectly correspond
147
-
148
- 3. **External Validation**
149
- - DOM API patterns align with our approach
150
- - React Fiber dual tree pattern validates our design
151
- - Academic research supports invariant testing methods
152
-
153
- 4. **Actionable Patterns**
154
- - 6+ test patterns documented with full code
155
- - Helper functions ready to use
156
- - Templates for quick implementation
157
-
158
- ### 📊 Statistics
159
-
160
- - **Files Analyzed:** 7 test files + documentation
161
- - **Patterns Extracted:** 15+ distinct testing patterns
162
- - **Helper Functions:** 7 reusable utilities
163
- - **Code Examples:** 600+ lines of ready-to-use code
164
- - **Documentation:** 2,000+ lines of comprehensive guides
165
-
166
- ---
167
-
168
- ## Implementation Roadmap
169
-
170
- ### Phase 1: Foundation (Week 1) ⭐
171
- - [ ] Create helper functions library
172
- - [ ] Add helpers to existing tests
173
- - [ ] Verify no regressions
174
-
175
- **File to create:** `src/__tests__/helpers/tree-verification.ts`
176
-
177
- ### Phase 2: Coverage (Week 2)
178
- - [ ] Create bidirectional consistency test suite
179
- - [ ] Add invariant tests
180
- - [ ] Achieve 95%+ coverage
181
-
182
- **File to create:** `src/__tests__/integration/bidirectional-consistency.test.ts`
183
-
184
- ### Phase 3: Robustness (Week 3)
185
- - [ ] Create adversarial test suite
186
- - [ ] Add stress tests
187
- - [ ] Add property-based tests
188
-
189
- **File to create:** `src/__tests__/adversarial/tree-invariants.test.ts`
190
-
191
- ### Phase 4: Integration (Week 4)
192
- - [ ] Add consistency checks to teardown
193
- - [ ] Integrate with CI/CD
194
- - [ ] Document patterns
195
- - [ ] Train team
196
-
197
- ---
198
-
199
- ## URLs and References
200
-
201
- ### Internal Resources
202
- - **Reparenting Tests:** `/home/dustin/projects/groundswell/src/__tests__/integration/workflow-reparenting.test.ts`
203
- - **Tree Mirroring Tests:** `/home/dustin/projects/groundswell/src/__tests__/integration/tree-mirroring.test.ts`
204
- - **PRD Compliance Tests:** `/home/dustin/projects/groundswell/src/__tests__/adversarial/prd-compliance.test.ts`
205
- - **Edge Case Tests:** `/home/dustin/projects/groundswell/src/__tests__/adversarial/edge-case.test.ts`
206
- - **Tree Debugger:** `/home/dustin/projects/groundswell/src/debugger/tree-debugger.ts`
207
- - **Implementation Patterns:** `/home/dustin/projects/groundswell/plan/docs/bugfix-architecture/implementation_patterns.md`
208
-
209
- ### External Resources
210
- - **DOM Tree Spec:** https://dom.spec.whatwg.org/#concept-tree-parent
211
- - **React Fiber:** https://github.com/facebook/react/blob/main/packages/react-reconciler/src/ReactFiber.js
212
- - **QuickCheck Paper:** https://www.cs.tufts.edu/~nr/cs257/archive/john-hughes/quick.pdf
213
- - **Princeton CS226:** https://www.cs.princeton.edu/courses/archive/fall09/cos226/lectures/22BalancedTrees.pdf
214
-
215
- ---
216
-
217
- ## Success Criteria
218
-
219
- ### Quantitative
220
- - ✅ 50+ new bidirectional consistency tests
221
- - ✅ 95%+ coverage of tree manipulation code
222
- - ✅ Test suite completes in <5 minutes
223
- - ✅ 5+ potential issues caught by adversarial tests
224
-
225
- ### Qualitative
226
- - ✅ High confidence in tree operation correctness
227
- - ✅ Easy to add new consistency tests
228
- - ✅ Clear patterns documented
229
- - ✅ Team trained on testing approach
230
-
231
- ---
232
-
233
- ## FAQ
234
-
235
- **Q: Why do we need two trees?**
236
- A: Workflow instance tree provides runtime behavior, WorkflowNode tree provides introspection and debugging. Both must stay in sync.
237
-
238
- **Q: What happens if trees get out of sync?**
239
- A: Bugs occur. Events may not propagate correctly, debugging shows wrong structure, observers receive incorrect data.
240
-
241
- **Q: How do I know if my tests are good enough?**
242
- A: Use the helper functions! `verifyBidirectionalLink()` and `verifyTreeMirror()` catch most issues.
243
-
244
- **Q: Can I skip testing node tree if I test workflow tree?**
245
- A: NO! Both trees must be tested. The whole point is they must stay synchronized.
246
-
247
- **Q: Where do I start?**
248
- A: Start with QUICK_REFERENCE.md. It has everything you need to write tests immediately.
249
-
250
- ---
251
-
252
- ## Support
253
-
254
- ### Questions?
255
- - Check QUICK_REFERENCE.md for immediate answers
256
- - Review test-pattern-examples.md for code samples
257
- - Read bidirectional-tree-consistency-testing.md for deep understanding
258
-
259
- ### Issues?
260
- - Verify you're testing both trees
261
- - Use helper functions consistently
262
- - Check existing test patterns for examples
263
-
264
- ### Contributions?
265
- - Follow the patterns in this research
266
- - Use helper functions in new tests
267
- - Document new patterns as you discover them
268
-
269
- ---
270
-
271
- ## Document Metadata
272
-
273
- **Research Task:** P1M3T1S4
274
- **Completion Date:** 2026-01-12
275
- **Status:** ✅ COMPLETE
276
- **Version:** 1.0
277
-
278
- **Documents:**
279
- 1. QUICK_REFERENCE.md (5 min read)
280
- 2. test-pattern-examples.md (15 min read)
281
- 3. bidirectional-tree-consistency-testing.md (30 min read)
282
- 4. SUMMARY.md (10 min read)
283
- 5. README.md (this file)
284
-
285
- **Total Documentation:** 2,000+ lines
286
- **Total Code Examples:** 600+ lines
287
- **Helper Functions:** 7 reusable utilities
288
-
289
- ---
290
-
291
- ## Next Steps
292
-
293
- 1. **Read** QUICK_REFERENCE.md (5 minutes)
294
- 2. **Create** helper functions library (1 hour)
295
- 3. **Write** tests using patterns (2-4 hours)
296
- 4. **Run** tests and verify (30 minutes)
297
- 5. **Iterate** and refine (ongoing)
298
-
299
- **Ready to start? Open QUICK_REFERENCE.md!** →
300
-
301
- ---
302
-
303
- **Research Team:** P1M3T1S4
304
- **Last Updated:** 2026-01-12
305
- **Contact:** See project documentation for team contacts