Critical fixes:
- C1: Create standalone ADR-006 file (edge type consistency),
extract from open-questions.md inline content
- C2: Convert CallResult from plain interface to TypeBox schema,
aligning with 'TypeBox as single source of truth' constraint
- C3: Add fromJSON() cycle detection specification - enforce
ADR-002 DAG invariant even on deserialized input
- C4: Rewrite consumer-integration.md Phase 4 to use ADR-005
event-append pattern instead of direct signal mutation
- C5: Fix operator precedence bug in consumer-integration.md
(missing parentheses around OR condition)
Warnings addressed:
- W1: Fix immutability claim - operation graph is 'conventionally
immutable', not prevented by API
- W2: Add EventLogProjection to reactive exports map
- W3: Add CallResult/CallResultSchema to schema exports map
- W4: Fix reactive-execution.md Level 1 error handling to use
event-append pattern instead of direct signal mutation
- W5: Remove duplicate dataFlow inference description in schema.md
- W6: Clarify ADR-006 project context (flowgraph vs taskgraph)
Suggestions implemented:
- S1: Add 'reviewed' document lifecycle status between draft/stable,
update all docs to reviewed status
- S2: Add carve-out note for analysis result types in schema.md
constraints (they are ephemeral, not serialized)
- S3: Add isComplete() and getAggregateStatus() convenience methods
to WorkflowReactiveRoot specification
Resolve all 19 remaining open questions across the architecture. Every
question now has a documented resolution with rationale:
- OQ-004/OQ-029: edgeType is a universal required attribute on all edges,
single graph per FlowGraph instance (ADR-006)
- OQ-011: No OR preconditions for v1; preconditionMode as v2 extension
- OQ-012: maxConcurrency enforced via reactive counting semaphore
- OQ-014: Unknown operationId creates node with pending status
- OQ-017: Expose common graphology traversal methods on FlowGraph (80/20)
- OQ-020: condition as Type.Unknown() with string/function documentation
- OQ-022: Identity imported from @alkdev/operations peer dep
- All other questions resolved with documented rationale
Fix three critical issues found by architecture review:
1. edgeType serialization/validation gap: document two-step validation
2. CallEdgeAttrs runtime discrimination: edgeType as runtime discriminant,
depends_on edges clarified as observability-only (not execution)
3. ADR-005 signal mutation inconsistency: explicitly distinguish call-level
statuses (event-log-driven) from workflow-derived statuses (signal-mutation)
Additional clarifications:
- dataFlow inference uses conservative strategy (defaults false)
- Conditional.test string resolution: operationName → status === completed
- Add negated field to TemplateEdgeAttrs for else-branch conditions
- Document edge key priority convention for composite keys
- Add maxConcurrency semaphore design to reactive-execution.md