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.
- package/LICENSE +21 -0
- package/README.md +26 -9
- package/dist/cache/cache-key.d.ts +86 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +204 -0
- package/dist/cache/cache-key.js.map +1 -0
- package/dist/cache/cache.d.ts +104 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +179 -0
- package/dist/cache/cache.js.map +1 -0
- package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/core/agent.d.ts +203 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +833 -0
- package/dist/core/agent.js.map +1 -0
- package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +80 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/event-tree.d.ts +72 -0
- package/dist/core/event-tree.d.ts.map +1 -0
- package/dist/core/event-tree.js +211 -0
- package/dist/core/event-tree.js.map +1 -0
- package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
- package/dist/core/factory.d.ts.map +1 -0
- package/dist/core/factory.js +110 -0
- package/dist/core/factory.js.map +1 -0
- package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +50 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +91 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mcp-handler.d.ts +127 -0
- package/dist/core/mcp-handler.d.ts.map +1 -0
- package/dist/core/mcp-handler.js +323 -0
- package/dist/core/mcp-handler.js.map +1 -0
- package/dist/core/prompt.d.ts +80 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +120 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/workflow-context.d.ts +61 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +358 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workflow.d.ts +543 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +986 -0
- package/dist/core/workflow.js.map +1 -0
- package/dist/debugger/event-replayer.d.ts +422 -0
- package/dist/debugger/event-replayer.d.ts.map +1 -0
- package/dist/debugger/event-replayer.js +639 -0
- package/dist/debugger/event-replayer.js.map +1 -0
- package/dist/debugger/index.d.ts +2 -0
- package/dist/debugger/index.d.ts.map +1 -0
- package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
- package/dist/debugger/index.js.map +1 -0
- package/dist/debugger/tree-debugger.d.ts +240 -0
- package/dist/debugger/tree-debugger.d.ts.map +1 -0
- package/dist/debugger/tree-debugger.js +620 -0
- package/dist/debugger/tree-debugger.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/observed-state.d.ts +32 -0
- package/dist/decorators/observed-state.d.ts.map +1 -0
- package/dist/decorators/observed-state.js +79 -0
- package/dist/decorators/observed-state.js.map +1 -0
- package/dist/decorators/step.d.ts +15 -0
- package/dist/decorators/step.d.ts.map +1 -0
- package/dist/decorators/step.js +192 -0
- package/dist/decorators/step.js.map +1 -0
- package/dist/decorators/task.d.ts +50 -0
- package/dist/decorators/task.d.ts.map +1 -0
- package/dist/decorators/task.js +118 -0
- package/dist/decorators/task.js.map +1 -0
- package/dist/examples/index.d.ts +3 -0
- package/dist/examples/index.d.ts.map +1 -0
- package/{src/examples/index.ts → dist/examples/index.js} +1 -0
- package/dist/examples/index.js.map +1 -0
- package/dist/examples/tdd-orchestrator.d.ts +15 -0
- package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
- package/dist/examples/tdd-orchestrator.js +121 -0
- package/dist/examples/tdd-orchestrator.js.map +1 -0
- package/dist/examples/test-cycle-workflow.d.ts +14 -0
- package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
- package/dist/examples/test-cycle-workflow.js +116 -0
- package/dist/examples/test-cycle-workflow.js.map +1 -0
- package/dist/harnesses/claude-code-harness.d.ts +391 -0
- package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
- package/dist/harnesses/claude-code-harness.js +1076 -0
- package/dist/harnesses/claude-code-harness.js.map +1 -0
- package/dist/harnesses/harness-registry.d.ts +440 -0
- package/dist/harnesses/harness-registry.d.ts.map +1 -0
- package/dist/harnesses/harness-registry.js +543 -0
- package/dist/harnesses/harness-registry.js.map +1 -0
- package/dist/harnesses/index.d.ts +12 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +11 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/pi-harness.d.ts +219 -0
- package/dist/harnesses/pi-harness.d.ts.map +1 -0
- package/dist/harnesses/pi-harness.js +676 -0
- package/dist/harnesses/pi-harness.js.map +1 -0
- package/dist/harnesses/pi-schema-converter.d.ts +24 -0
- package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
- package/dist/harnesses/pi-schema-converter.js +81 -0
- package/dist/harnesses/pi-schema-converter.js.map +1 -0
- package/dist/harnesses/register-defaults.d.ts +24 -0
- package/dist/harnesses/register-defaults.d.ts.map +1 -0
- package/dist/harnesses/register-defaults.js +40 -0
- package/dist/harnesses/register-defaults.js.map +1 -0
- package/dist/harnesses/session-store.d.ts +201 -0
- package/dist/harnesses/session-store.d.ts.map +1 -0
- package/dist/harnesses/session-store.js +254 -0
- package/dist/harnesses/session-store.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/reflection/index.d.ts +5 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/reflection.d.ts +84 -0
- package/dist/reflection/reflection.d.ts.map +1 -0
- package/dist/reflection/reflection.js +344 -0
- package/dist/reflection/reflection.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/introspection.d.ts +165 -0
- package/dist/tools/introspection.d.ts.map +1 -0
- package/dist/tools/introspection.js +324 -0
- package/dist/tools/introspection.js.map +1 -0
- package/dist/types/agent.d.ts +1317 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +423 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/decorators.d.ts +40 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/decorators.js +2 -0
- package/dist/types/decorators.js.map +1 -0
- package/dist/types/error-strategy.d.ts +13 -0
- package/dist/types/error-strategy.d.ts.map +1 -0
- package/dist/types/error-strategy.js +2 -0
- package/dist/types/error-strategy.js.map +1 -0
- package/dist/types/error.d.ts +20 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +2 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/events.d.ts +113 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/harnesses.d.ts +474 -0
- package/dist/types/harnesses.d.ts.map +1 -0
- package/dist/types/harnesses.js +2 -0
- package/dist/types/harnesses.js.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/logging.d.ts +24 -0
- package/dist/types/logging.d.ts.map +1 -0
- package/dist/types/logging.js +2 -0
- package/dist/types/logging.js.map +1 -0
- package/dist/types/observer.d.ts +18 -0
- package/dist/types/observer.d.ts.map +1 -0
- package/dist/types/observer.js +2 -0
- package/dist/types/observer.js.map +1 -0
- package/dist/types/prompt.d.ts +31 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +6 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/providers.d.ts +691 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +14 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/reflection.d.ts +96 -0
- package/dist/types/reflection.d.ts.map +1 -0
- package/dist/types/reflection.js +24 -0
- package/dist/types/reflection.js.map +1 -0
- package/dist/types/restart.d.ts +132 -0
- package/dist/types/restart.d.ts.map +1 -0
- package/dist/types/restart.js +2 -0
- package/dist/types/restart.js.map +1 -0
- package/dist/types/sdk-primitives.d.ts +118 -0
- package/dist/types/sdk-primitives.d.ts.map +1 -0
- package/dist/types/sdk-primitives.js +6 -0
- package/dist/types/sdk-primitives.js.map +1 -0
- package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
- package/dist/types/snapshot.d.ts.map +1 -0
- package/dist/types/snapshot.js +2 -0
- package/dist/types/snapshot.js.map +1 -0
- package/dist/types/streaming.d.ts +194 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +67 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/workflow-context.d.ts +275 -0
- package/dist/types/workflow-context.d.ts.map +1 -0
- package/dist/types/workflow-context.js +8 -0
- package/dist/types/workflow-context.js.map +1 -0
- package/dist/types/workflow.d.ts +30 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +2 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/agent-validation.d.ts +88 -0
- package/dist/utils/agent-validation.d.ts.map +1 -0
- package/dist/utils/agent-validation.js +87 -0
- package/dist/utils/agent-validation.js.map +1 -0
- package/dist/utils/delay.d.ts +7 -0
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +9 -0
- package/dist/utils/delay.js.map +1 -0
- package/dist/utils/harness-config.d.ts +180 -0
- package/dist/utils/harness-config.d.ts.map +1 -0
- package/dist/utils/harness-config.js +311 -0
- package/dist/utils/harness-config.js.map +1 -0
- package/dist/utils/id.d.ts +6 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +12 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-spec.d.ts +110 -0
- package/dist/utils/model-spec.d.ts.map +1 -0
- package/dist/utils/model-spec.js +149 -0
- package/dist/utils/model-spec.js.map +1 -0
- package/dist/utils/observable.d.ts +54 -0
- package/dist/utils/observable.d.ts.map +1 -0
- package/dist/utils/observable.js +82 -0
- package/dist/utils/observable.js.map +1 -0
- package/dist/utils/provider-config.d.ts +10 -0
- package/dist/utils/provider-config.d.ts.map +1 -0
- package/dist/utils/provider-config.js +10 -0
- package/dist/utils/provider-config.js.map +1 -0
- package/dist/utils/restart-analysis.d.ts +202 -0
- package/dist/utils/restart-analysis.d.ts.map +1 -0
- package/dist/utils/restart-analysis.js +426 -0
- package/dist/utils/restart-analysis.js.map +1 -0
- package/dist/utils/session-serialization.d.ts +118 -0
- package/dist/utils/session-serialization.d.ts.map +1 -0
- package/dist/utils/session-serialization.js +217 -0
- package/dist/utils/session-serialization.js.map +1 -0
- package/dist/utils/workflow-error-utils.d.ts +22 -0
- package/dist/utils/workflow-error-utils.d.ts.map +1 -0
- package/dist/utils/workflow-error-utils.js +45 -0
- package/dist/utils/workflow-error-utils.js.map +1 -0
- package/package.json +34 -5
- package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
- package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
- package/.claude/commands/task-breakdown.md +0 -94
- package/.claude/settings.local.json +0 -9
- package/.claude/system_prompts/task-breakdown.md +0 -101
- package/CHANGELOG.md +0 -188
- package/PRD.md +0 -543
- package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
- package/PRPs/PRDs/002-agent-prompt.md +0 -390
- package/PRPs/PRDs/003-agent-prompt.md +0 -943
- package/PRPs/PRDs/004-agent-prompt.md +0 -1136
- package/PRPs/PRDs/tasks-001.json +0 -492
- package/PRPs/README.md +0 -83
- package/PRPs/templates/prp_base.md +0 -222
- package/docs/agent.md +0 -422
- package/docs/prompt.md +0 -419
- package/docs/workflow.md +0 -600
- package/examples/README.md +0 -258
- package/examples/examples/01-basic-workflow.ts +0 -100
- package/examples/examples/02-decorator-options.ts +0 -217
- package/examples/examples/03-parent-child.ts +0 -241
- package/examples/examples/04-observers-debugger.ts +0 -340
- package/examples/examples/05-error-handling.ts +0 -387
- package/examples/examples/06-concurrent-tasks.ts +0 -352
- package/examples/examples/07-agent-loops.ts +0 -432
- package/examples/examples/08-sdk-features.ts +0 -667
- package/examples/examples/09-reflection.ts +0 -573
- package/examples/examples/10-introspection.ts +0 -550
- package/examples/examples/11-reparenting-workflows.ts +0 -269
- package/examples/index.ts +0 -147
- package/examples/utils/helpers.ts +0 -57
- package/package-lock.json +0 -2398
- package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
- package/plan/001_d3bb02af4886/backlog.json +0 -867
- package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
- package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
- package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
- package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
- package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
- package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
- package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
- package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
- package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
- package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
- package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
- package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
- package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
- package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
- package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
- package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
- package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
- package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
- package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
- package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
- package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
- package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
- package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
- package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
- package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
- package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
- package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
- package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
- package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
- package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
- package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
- package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
- package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
- package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
- package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
- package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
- package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
- package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
- package/scripts/generate-llms-full.ts +0 -206
- package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
- package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
- package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
- package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
- package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
- package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
- package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
- package/src/__tests__/adversarial/edge-case.test.ts +0 -703
- package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
- package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
- package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
- package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
- package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
- package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
- package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
- package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
- package/src/__tests__/helpers/index.ts +0 -18
- package/src/__tests__/helpers/tree-verification.ts +0 -257
- package/src/__tests__/integration/agent-workflow.test.ts +0 -256
- package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
- package/src/__tests__/integration/observer-logging.test.ts +0 -643
- package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
- package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
- package/src/__tests__/unit/agent.test.ts +0 -169
- package/src/__tests__/unit/cache-key.test.ts +0 -182
- package/src/__tests__/unit/cache.test.ts +0 -172
- package/src/__tests__/unit/context.test.ts +0 -217
- package/src/__tests__/unit/decorators.test.ts +0 -100
- package/src/__tests__/unit/introspection-tools.test.ts +0 -277
- package/src/__tests__/unit/logger.test.ts +0 -293
- package/src/__tests__/unit/observable.test.ts +0 -321
- package/src/__tests__/unit/prompt.test.ts +0 -135
- package/src/__tests__/unit/reflection.test.ts +0 -210
- package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
- package/src/__tests__/unit/tree-debugger.test.ts +0 -85
- package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
- package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
- package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
- package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
- package/src/__tests__/unit/workflow.test.ts +0 -357
- package/src/cache/cache-key.ts +0 -244
- package/src/cache/cache.ts +0 -236
- package/src/core/agent.ts +0 -593
- package/src/core/event-tree.ts +0 -260
- package/src/core/logger.ts +0 -112
- package/src/core/mcp-handler.ts +0 -184
- package/src/core/prompt.ts +0 -150
- package/src/core/workflow-context.ts +0 -351
- package/src/core/workflow.ts +0 -540
- package/src/debugger/tree-debugger.ts +0 -255
- package/src/decorators/observed-state.ts +0 -95
- package/src/decorators/step.ts +0 -139
- package/src/decorators/task.ts +0 -159
- package/src/examples/tdd-orchestrator.ts +0 -65
- package/src/examples/test-cycle-workflow.ts +0 -64
- package/src/index.ts +0 -142
- package/src/reflection/reflection.ts +0 -407
- package/src/tools/index.ts +0 -36
- package/src/tools/introspection.ts +0 -464
- package/src/types/agent.ts +0 -90
- package/src/types/decorators.ts +0 -32
- package/src/types/error-strategy.ts +0 -13
- package/src/types/error.ts +0 -20
- package/src/types/events.ts +0 -75
- package/src/types/index.ts +0 -55
- package/src/types/logging.ts +0 -24
- package/src/types/observer.ts +0 -18
- package/src/types/prompt.ts +0 -40
- package/src/types/reflection.ts +0 -117
- package/src/types/sdk-primitives.ts +0 -128
- package/src/types/workflow-context.ts +0 -163
- package/src/types/workflow.ts +0 -37
- package/src/utils/id.ts +0 -11
- package/src/utils/index.ts +0 -4
- package/src/utils/observable.ts +0 -106
- package/src/utils/workflow-error-utils.ts +0 -56
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
|
@@ -1,433 +0,0 @@
|
|
|
1
|
-
# Research Summary: Bidirectional Tree Consistency Testing
|
|
2
|
-
|
|
3
|
-
**Task:** P1M3T1S4
|
|
4
|
-
**Date:** 2026-01-12
|
|
5
|
-
**Status:** COMPLETE
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Executive Summary
|
|
10
|
-
|
|
11
|
-
This research identified and documented best practices for testing bidirectional consistency between dual tree structures (Workflow instance tree and WorkflowNode tree). The findings are based on:
|
|
12
|
-
|
|
13
|
-
1. **Analysis of existing codebase patterns** (7 test files examined)
|
|
14
|
-
2. **Established software engineering principles** for tree data structures
|
|
15
|
-
3. **External best practices** from DOM API, React Fiber, and academic research
|
|
16
|
-
|
|
17
|
-
**Key Finding:** The codebase already implements strong testing patterns for tree consistency. The research extracted, documented, and organized these patterns into actionable guidelines.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Key Deliverables
|
|
22
|
-
|
|
23
|
-
### 1. Comprehensive Research Document
|
|
24
|
-
**File:** `/home/dustin/projects/groundswell/plan/bugfix/P1M3T1S4/research/bidirectional-tree-consistency-testing.md`
|
|
25
|
-
|
|
26
|
-
**Contents:**
|
|
27
|
-
- Core testing patterns (AAA pattern, naming conventions)
|
|
28
|
-
- Bidirectional consistency validation methods
|
|
29
|
-
- Tree operation testing (attach, detach, reparenting)
|
|
30
|
-
- Invariant testing patterns (structural, counting, depth)
|
|
31
|
-
- Adversarial testing approaches (manual mutations, circular refs, stress tests)
|
|
32
|
-
- External best practices (DOM, React Fiber, property-based testing)
|
|
33
|
-
- Test pattern catalog with reusable templates
|
|
34
|
-
- Implementation checklist
|
|
35
|
-
|
|
36
|
-
**Size:** 1,100+ lines of comprehensive documentation
|
|
37
|
-
|
|
38
|
-
### 2. Ready-to-Use Test Examples
|
|
39
|
-
**File:** `/home/dustin/projects/groundswell/plan/bugfix/P1M3T1S4/research/test-pattern-examples.md`
|
|
40
|
-
|
|
41
|
-
**Contents:**
|
|
42
|
-
- Helper functions for tree verification (copy-paste ready)
|
|
43
|
-
- 6 complete test patterns with full code examples:
|
|
44
|
-
- Basic bidirectional consistency tests
|
|
45
|
-
- Reparenting consistency tests
|
|
46
|
-
- Invariant testing patterns
|
|
47
|
-
- Adversarial testing patterns
|
|
48
|
-
- Property-based testing patterns
|
|
49
|
-
- WorkflowTreeDebugger integration patterns
|
|
50
|
-
- Test file template for quick start
|
|
51
|
-
- Usage guidelines and best practices
|
|
52
|
-
|
|
53
|
-
**Size:** 600+ lines of actionable code examples
|
|
54
|
-
|
|
55
|
-
### 3. This Summary Document
|
|
56
|
-
**File:** `/home/dustin/projects/groundswell/plan/bugfix/P1M3T1S4/research/SUMMARY.md`
|
|
57
|
-
|
|
58
|
-
**Contents:**
|
|
59
|
-
- Executive summary
|
|
60
|
-
- Key findings
|
|
61
|
-
- Actionable recommendations
|
|
62
|
-
- URLs and references
|
|
63
|
-
- Implementation roadmap
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Key Findings
|
|
68
|
-
|
|
69
|
-
### Finding 1: Existing Codebase Has Strong Patterns
|
|
70
|
-
|
|
71
|
-
**Evidence:** Analysis of `/home/dustin/projects/groundswell/src/__tests__/integration/workflow-reparenting.test.ts`
|
|
72
|
-
|
|
73
|
-
The existing test suite demonstrates excellent patterns for bidirectional consistency testing:
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
// Lines 280-302: Critical 1:1 Tree Mirror Invariant validation
|
|
77
|
-
// Workflow tree state:
|
|
78
|
-
expect(child.parent).toBe(parent2);
|
|
79
|
-
expect(parent2.children).toEqual([child]);
|
|
80
|
-
expect(parent1.children).toEqual([]);
|
|
81
|
-
|
|
82
|
-
// Node tree state (via getNode() method):
|
|
83
|
-
const childNodeFinal = child.getNode();
|
|
84
|
-
const parent2NodeFinal = parent2.getNode();
|
|
85
|
-
const parent1NodeFinal = parent1.getNode();
|
|
86
|
-
|
|
87
|
-
expect(childNodeFinal.parent).toBe(parent2NodeFinal);
|
|
88
|
-
expect(parent2NodeFinal.children).toEqual([childNodeFinal]);
|
|
89
|
-
expect(parent1NodeFinal.children).toEqual([]);
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**Impact:** These patterns should be extracted into reusable helper functions and applied consistently across all tree operations.
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
### Finding 2: Tree Mirror Invariant is Critical
|
|
97
|
-
|
|
98
|
-
**Core Invariant:** The Workflow instance tree and WorkflowNode tree must maintain perfect 1:1 correspondence at all times.
|
|
99
|
-
|
|
100
|
-
**Validation Approach:**
|
|
101
|
-
```typescript
|
|
102
|
-
function verifyTreeMirror(workflowRoot: Workflow): void {
|
|
103
|
-
const allNodes = collectAllNodes(workflowRoot);
|
|
104
|
-
|
|
105
|
-
allNodes.forEach(wfNode => {
|
|
106
|
-
const node = wfNode.node;
|
|
107
|
-
|
|
108
|
-
// Verify parent relationship mirrors
|
|
109
|
-
if (wfNode.parent) {
|
|
110
|
-
expect(node.parent).toBe(wfNode.parent.node);
|
|
111
|
-
} else {
|
|
112
|
-
expect(node.parent).toBeNull();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Verify children relationship mirrors
|
|
116
|
-
expect(node.children.length).toBe(wfNode.children.length);
|
|
117
|
-
wfNode.children.forEach((childWf, index) => {
|
|
118
|
-
expect(node.children[index]).toBe(childWf.node);
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
**Impact:** This invariant should be verified after every tree mutation operation (attach, detach, reparenting).
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
### Finding 3: Bidirectional Link Verification is Essential
|
|
129
|
-
|
|
130
|
-
**Pattern:** Always verify both directions of parent-child relationships in BOTH trees.
|
|
131
|
-
|
|
132
|
-
**Example:**
|
|
133
|
-
```typescript
|
|
134
|
-
function verifyBidirectionalLink(parent: Workflow, child: Workflow): void {
|
|
135
|
-
// Workflow tree checks
|
|
136
|
-
expect(child.parent).toBe(parent);
|
|
137
|
-
expect(parent.children).toContain(child);
|
|
138
|
-
|
|
139
|
-
// Node tree checks (must mirror workflow tree)
|
|
140
|
-
expect(child.node.parent).toBe(parent.node);
|
|
141
|
-
expect(parent.node.children).toContain(child.node);
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
**Impact:** This helper function should be used after every attachChild() and after reparenting operations.
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
### Finding 4: Adversarial Testing Catches Edge Cases
|
|
150
|
-
|
|
151
|
-
**Evidence:** `/home/dustin/projects/groundswell/src/__tests__/adversarial/edge-case.test.ts` demonstrates comprehensive edge case testing:
|
|
152
|
-
|
|
153
|
-
- Manual parent mutation tests
|
|
154
|
-
- Circular reference detection
|
|
155
|
-
- Deep hierarchy stress tests (100 levels)
|
|
156
|
-
- Wide hierarchy stress tests (100 siblings)
|
|
157
|
-
- Rapid attach/detach cycles
|
|
158
|
-
|
|
159
|
-
**Impact:** These patterns should be expanded to cover more scenarios and run as part of regular test suite.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### Finding 5: External Best Practices Align with Implementation
|
|
164
|
-
|
|
165
|
-
**DOM Tree API:** The WHATWG DOM specification provides authoritative patterns for tree mutation semantics. Our implementation follows similar principles.
|
|
166
|
-
|
|
167
|
-
**React Fiber:** The dual tree representation (current tree + work-in-progress tree) mirrors our Workflow tree + WorkflowNode tree pattern.
|
|
168
|
-
|
|
169
|
-
**Property-Based Testing:** QuickCheck/Hypothesis patterns provide formal methods for invariant testing.
|
|
170
|
-
|
|
171
|
-
**Impact:** These external patterns validate our approach and provide additional testing strategies.
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## Actionable Recommendations
|
|
176
|
-
|
|
177
|
-
### Priority 1: Create Helper Functions Library
|
|
178
|
-
|
|
179
|
-
**Action:** Create `/home/dustin/projects/groundswell/src/__tests__/helpers/tree-verification.ts`
|
|
180
|
-
|
|
181
|
-
**Content:**
|
|
182
|
-
- `collectAllNodes(root: Workflow): Workflow[]`
|
|
183
|
-
- `validateTreeConsistency(root: Workflow): string[]`
|
|
184
|
-
- `verifyBidirectionalLink(parent: Workflow, child: Workflow): void`
|
|
185
|
-
- `verifyTreeMirror(workflowRoot: Workflow): void`
|
|
186
|
-
- `verifyOrphaned(child: Workflow): void`
|
|
187
|
-
- `verifyNoCycles(root: Workflow): void`
|
|
188
|
-
- `getDepth(node: Workflow): number`
|
|
189
|
-
|
|
190
|
-
**Benefit:** Reusable utilities that ensure consistent testing across all test files.
|
|
191
|
-
|
|
192
|
-
**Effort:** 2-3 hours
|
|
193
|
-
**Impact:** HIGH
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
### Priority 2: Create Comprehensive Test Suite
|
|
198
|
-
|
|
199
|
-
**Action:** Create `/home/dustin/projects/groundswell/src/__tests__/integration/bidirectional-consistency.test.ts`
|
|
200
|
-
|
|
201
|
-
**Content:**
|
|
202
|
-
- Basic operation consistency tests (attach, detach, reparenting)
|
|
203
|
-
- Tree mirror invariant tests
|
|
204
|
-
- Bidirectional link verification tests
|
|
205
|
-
- Error case validation tests
|
|
206
|
-
|
|
207
|
-
**Benefit:** Centralized location for all bidirectional consistency tests.
|
|
208
|
-
|
|
209
|
-
**Effort:** 4-6 hours
|
|
210
|
-
**Impact:** HIGH
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
### Priority 3: Expand Adversarial Test Suite
|
|
215
|
-
|
|
216
|
-
**Action:** Create `/home/dustin/projects/groundswell/src/__tests__/adversarial/tree-invariants.test.ts`
|
|
217
|
-
|
|
218
|
-
**Content:**
|
|
219
|
-
- Manual mutation detection tests
|
|
220
|
-
- Circular reference tests (simple and complex)
|
|
221
|
-
- Stress tests (deep/wide hierarchies)
|
|
222
|
-
- Rapid cycle tests
|
|
223
|
-
- Property-based tests
|
|
224
|
-
|
|
225
|
-
**Benefit:** Catches edge cases and ensures robustness.
|
|
226
|
-
|
|
227
|
-
**Effort:** 3-4 hours
|
|
228
|
-
**Impact:** MEDIUM
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
### Priority 4: Add Consistency Checks to Test Teardown
|
|
233
|
-
|
|
234
|
-
**Action:** Add global test teardown that validates tree consistency
|
|
235
|
-
|
|
236
|
-
**Implementation:**
|
|
237
|
-
```typescript
|
|
238
|
-
// In vitest.config.ts or test setup file
|
|
239
|
-
afterEach(() => {
|
|
240
|
-
// If test created any workflows, verify no inconsistencies leaked
|
|
241
|
-
// This catches test bugs that leave trees in invalid state
|
|
242
|
-
});
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
**Benefit:** Catches test pollution and ensures tests don't leave corrupted state.
|
|
246
|
-
|
|
247
|
-
**Effort:** 1-2 hours
|
|
248
|
-
**Impact:** MEDIUM
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
### Priority 5: Document Testing Patterns
|
|
253
|
-
|
|
254
|
-
**Action:** Add testing documentation to project README or docs folder
|
|
255
|
-
|
|
256
|
-
**Content:**
|
|
257
|
-
- How to test tree operations
|
|
258
|
-
- Required consistency checks
|
|
259
|
-
- Common pitfalls
|
|
260
|
-
- Helper functions reference
|
|
261
|
-
|
|
262
|
-
**Benefit:** Onboards new contributors and ensures consistent testing practices.
|
|
263
|
-
|
|
264
|
-
**Effort:** 2-3 hours
|
|
265
|
-
**Impact:** MEDIUM
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## URLs and References
|
|
270
|
-
|
|
271
|
-
### Internal Resources (Codebase)
|
|
272
|
-
|
|
273
|
-
1. **Existing Reparenting Tests**
|
|
274
|
-
- URL: `/home/dustin/projects/groundswell/src/__tests__/integration/workflow-reparenting.test.ts`
|
|
275
|
-
- Key Pattern: Lines 280-302 (1:1 Tree Mirror Invariant validation)
|
|
276
|
-
|
|
277
|
-
2. **Tree Mirroring Tests**
|
|
278
|
-
- URL: `/home/dustin/projects/groundswell/src/__tests__/integration/tree-mirroring.test.ts`
|
|
279
|
-
- Key Pattern: Lines 27-41 (1:1 tree mirror validation)
|
|
280
|
-
|
|
281
|
-
3. **PRD Compliance Tests**
|
|
282
|
-
- URL: `/home/dustin/projects/groundswell/src/__tests__/adversarial/prd-compliance.test.ts`
|
|
283
|
-
- Key Pattern: Lines 678-730 (Perfect 1:1 Tree Mirror Requirement)
|
|
284
|
-
|
|
285
|
-
4. **Edge Case Tests**
|
|
286
|
-
- URL: `/home/dustin/projects/groundswell/src/__tests__/adversarial/edge-case.test.ts`
|
|
287
|
-
- Key Pattern: Lines 490-505 (Circular reference detection)
|
|
288
|
-
|
|
289
|
-
5. **Deep Analysis Tests**
|
|
290
|
-
- URL: `/home/dustin/projects/groundswell/src/__tests__/adversarial/deep-analysis.test.ts`
|
|
291
|
-
- Key Pattern: Lines 582-622 (Child attachment edge cases)
|
|
292
|
-
|
|
293
|
-
6. **Tree Debugger Implementation**
|
|
294
|
-
- URL: `/home/dustin/projects/groundswell/src/debugger/tree-debugger.ts`
|
|
295
|
-
- Key Pattern: Lines 38-84 (Tree structure tracking and validation)
|
|
296
|
-
|
|
297
|
-
7. **Implementation Patterns Documentation**
|
|
298
|
-
- URL: `/home/dustin/projects/groundswell/plan/docs/bugfix-architecture/implementation_patterns.md`
|
|
299
|
-
- Key Pattern: Lines 272-400 (Tree Integrity Test Suite)
|
|
300
|
-
|
|
301
|
-
### External Resources (Best Practices)
|
|
302
|
-
|
|
303
|
-
1. **DOM Tree Specification**
|
|
304
|
-
- URL: https://dom.spec.whatwg.org/#concept-tree-parent
|
|
305
|
-
- Relevance: Authoritative source on tree mutation semantics
|
|
306
|
-
- Key Concepts: Parent-child relationship management, tree traversal, node ownership
|
|
307
|
-
|
|
308
|
-
2. **React Fiber Architecture**
|
|
309
|
-
- URL: https://github.com/facebook/react/blob/main/packages/react-reconciler/src/ReactFiber.js
|
|
310
|
-
- Relevance: Dual tree representation patterns
|
|
311
|
-
- Key Concepts: Current tree + work-in-progress tree synchronization
|
|
312
|
-
|
|
313
|
-
3. **QuickCheck Paper (Property-Based Testing)**
|
|
314
|
-
- URL: https://www.cs.tufts.edu/~nr/cs257/archive/john-hughes/quick.pdf
|
|
315
|
-
- Relevance: Formal methods for invariant testing
|
|
316
|
-
- Key Concepts: Property definition, random generation, invariant verification
|
|
317
|
-
|
|
318
|
-
4. **Princeton CS226 - Balanced Trees**
|
|
319
|
-
- URL: https://www.cs.princeton.edu/courses/archive/fall09/cos226/lectures/22BalancedTrees.pdf
|
|
320
|
-
- Relevance: Formal invariant definition
|
|
321
|
-
- Key Concepts: Structural invariants, size properties, height properties
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## Implementation Roadmap
|
|
326
|
-
|
|
327
|
-
### Phase 1: Foundation (Week 1)
|
|
328
|
-
- [ ] Create helper functions library (`tree-verification.ts`)
|
|
329
|
-
- [ ] Add helper functions to all existing tree tests
|
|
330
|
-
- [ ] Run full test suite to ensure no regressions
|
|
331
|
-
|
|
332
|
-
### Phase 2: Coverage (Week 2)
|
|
333
|
-
- [ ] Create comprehensive bidirectional consistency test suite
|
|
334
|
-
- [ ] Add tests for all tree operations (attach, detach, reparenting)
|
|
335
|
-
- [ ] Add invariant tests (acyclicity, single root, connectedness)
|
|
336
|
-
- [ ] Achieve 100% coverage of tree mutation code paths
|
|
337
|
-
|
|
338
|
-
### Phase 3: Robustness (Week 3)
|
|
339
|
-
- [ ] Create adversarial test suite
|
|
340
|
-
- [ ] Add stress tests (deep/wide hierarchies)
|
|
341
|
-
- [ ] Add property-based tests
|
|
342
|
-
- [ ] Add manual mutation detection tests
|
|
343
|
-
|
|
344
|
-
### Phase 4: Integration (Week 4)
|
|
345
|
-
- [ ] Add consistency checks to test teardown
|
|
346
|
-
- [ ] Integrate with CI/CD pipeline
|
|
347
|
-
- [ ] Document testing patterns
|
|
348
|
-
- [ ] Train team on new testing approaches
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
## Success Metrics
|
|
353
|
-
|
|
354
|
-
### Quantitative Metrics
|
|
355
|
-
1. **Test Coverage**: Achieve >95% coverage for tree manipulation code
|
|
356
|
-
2. **Test Count**: Add 50+ new bidirectional consistency tests
|
|
357
|
-
3. **Test Speed**: Ensure full test suite completes in <5 minutes
|
|
358
|
-
4. **Bug Detection**: Catch 5+ potential issues through adversarial testing
|
|
359
|
-
|
|
360
|
-
### Qualitative Metrics
|
|
361
|
-
1. **Confidence**: High confidence that tree operations maintain consistency
|
|
362
|
-
2. **Maintainability**: Easy to add new tree consistency tests
|
|
363
|
-
3. **Documentation**: Clear patterns documented and team trained
|
|
364
|
-
4. **Robustness**: Tests catch edge cases and prevent regressions
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## Risks and Mitigations
|
|
369
|
-
|
|
370
|
-
### Risk 1: Test Suite Performance
|
|
371
|
-
**Risk:** Adding many consistency checks may slow down tests
|
|
372
|
-
**Mitigation:** Use lightweight validation, cache results, run only in CI
|
|
373
|
-
|
|
374
|
-
### Risk 2: False Positives
|
|
375
|
-
**Risk:** Strict consistency checks may flag valid edge cases
|
|
376
|
-
**Mitigation:** Carefully define invariants, allow exceptions where appropriate
|
|
377
|
-
|
|
378
|
-
### Risk 3: Maintenance Overhead
|
|
379
|
-
**Risk:** Large test suite requires ongoing maintenance
|
|
380
|
-
**Mitigation:** Use helper functions, document patterns, automate where possible
|
|
381
|
-
|
|
382
|
-
### Risk 4: Team Adoption
|
|
383
|
-
**Risk:** Team may not follow new testing patterns
|
|
384
|
-
**Mitigation:** Provide training, create templates, integrate with code review
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## Next Steps
|
|
389
|
-
|
|
390
|
-
1. **Review Research Documents**
|
|
391
|
-
- Read `bidirectional-tree-consistency-testing.md` for comprehensive patterns
|
|
392
|
-
- Read `test-pattern-examples.md` for ready-to-use code
|
|
393
|
-
|
|
394
|
-
2. **Implement Helper Functions**
|
|
395
|
-
- Create `src/__tests__/helpers/tree-verification.ts`
|
|
396
|
-
- Copy helper functions from research document
|
|
397
|
-
|
|
398
|
-
3. **Create Test Suite**
|
|
399
|
-
- Create `src/__tests__/integration/bidirectional-consistency.test.ts`
|
|
400
|
-
- Implement tests using patterns from research
|
|
401
|
-
|
|
402
|
-
4. **Validate and Iterate**
|
|
403
|
-
- Run tests, fix issues, refine patterns
|
|
404
|
-
- Document lessons learned
|
|
405
|
-
|
|
406
|
-
5. **Share with Team**
|
|
407
|
-
- Present findings at team meeting
|
|
408
|
-
- Train team on new testing patterns
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
|
-
## Conclusion
|
|
413
|
-
|
|
414
|
-
This research successfully identified and documented best practices for testing bidirectional consistency between dual tree structures. The key findings are:
|
|
415
|
-
|
|
416
|
-
1. **Strong Foundation**: The codebase already has excellent testing patterns that can be extracted and reused
|
|
417
|
-
2. **Critical Invariant**: The 1:1 tree mirror invariant between Workflow and WorkflowNode trees must be maintained
|
|
418
|
-
3. **Proven Patterns**: External best practices (DOM, React Fiber, academic research) validate our approach
|
|
419
|
-
4. **Actionable Roadmap**: Clear implementation path with helper functions, test suites, and documentation
|
|
420
|
-
|
|
421
|
-
The research deliverables provide everything needed to implement comprehensive bidirectional consistency testing: comprehensive documentation, ready-to-use code examples, and an implementation roadmap.
|
|
422
|
-
|
|
423
|
-
**Research Status:** COMPLETE
|
|
424
|
-
**Ready for Implementation:** YES
|
|
425
|
-
**Next Phase:** P1M3T1S5 - Implement test suite based on research findings
|
|
426
|
-
|
|
427
|
-
---
|
|
428
|
-
|
|
429
|
-
**Document Information**
|
|
430
|
-
- **Author:** P1M3T1S4 Research Team
|
|
431
|
-
- **Date:** 2026-01-12
|
|
432
|
-
- **Version:** 1.0
|
|
433
|
-
- **Status:** Final
|