6196e0974a
- Engine generates step Merkle nodes (type: step) after each role step - Engine generates thread root Merkle node (type: thread) on completion - WorkflowResult gains rootHash field - WorkflowFn returns WorkflowCompletion (no rootHash), engine wraps with rootHash - workflowAsAgent returns rootHash instead of summary - Full DAG traversal: root → steps → content - 151 tests passing Fixes #42