131 lines
2.6 KiB
Plaintext
131 lines
2.6 KiB
Plaintext
@startuml SmartTools Pipeline Flow
|
|
!theme plain
|
|
skinparam activityBackgroundColor white
|
|
|
|
title SmartTools Pipeline Data Flow
|
|
|
|
start
|
|
|
|
:Read discussion.md;
|
|
note right
|
|
**Input**
|
|
Discussion markdown
|
|
with metadata headers
|
|
and comment blocks
|
|
end note
|
|
|
|
partition "Step 1: Parse" {
|
|
:discussion-parser;
|
|
note right
|
|
**Output: $parsed**
|
|
{
|
|
"metadata": {...},
|
|
"comments": [...],
|
|
"vote_summary": {...}
|
|
}
|
|
end note
|
|
}
|
|
|
|
if (Participants specified?) then (no)
|
|
partition "Step 2: Route" {
|
|
:discussion-mention-router;
|
|
note right
|
|
**Output: $routing**
|
|
{
|
|
"participants_to_call": [...],
|
|
"callouts": {...}
|
|
}
|
|
end note
|
|
}
|
|
else (yes)
|
|
:Use provided\nparticipants;
|
|
endif
|
|
|
|
partition "Step 3: Call Participants" {
|
|
fork
|
|
:discussion-architect;
|
|
note right
|
|
stdin: $discussion
|
|
args: --callout, --templates-dir
|
|
end note
|
|
fork again
|
|
:discussion-security;
|
|
fork again
|
|
:discussion-pragmatist;
|
|
end fork
|
|
|
|
:Collect $responses[];
|
|
note right
|
|
Each response:
|
|
{"comment": "...", "vote": "..."}
|
|
or {"sentinel": "NO_RESPONSE"}
|
|
end note
|
|
}
|
|
|
|
partition "Step 4: Append" {
|
|
:discussion-turn-appender;
|
|
note right
|
|
**Input**
|
|
$discussion + ---RESPONSES--- + $responses
|
|
|
|
**Output**
|
|
Updated markdown with
|
|
new comment blocks
|
|
end note
|
|
}
|
|
|
|
if (Phase has voting?) then (yes)
|
|
partition "Step 5: Count Votes" {
|
|
:Re-parse updated discussion;
|
|
:discussion-vote-counter;
|
|
note right
|
|
**Output: $votes**
|
|
{
|
|
"vote_summary": {
|
|
"READY": 2,
|
|
"CHANGES": 1,
|
|
"REJECT": 0
|
|
},
|
|
"consensus": {
|
|
"reached": false,
|
|
"reason": "..."
|
|
}
|
|
}
|
|
end note
|
|
}
|
|
|
|
partition "Step 6: Promote Status" {
|
|
:discussion-status-promoter;
|
|
note right
|
|
**Output: $promotion**
|
|
{
|
|
"should_promote": true,
|
|
"new_status": "READY_FOR_DESIGN"
|
|
}
|
|
end note
|
|
}
|
|
|
|
if (Should promote?) then (yes)
|
|
:Update status in\ndiscussion.md;
|
|
endif
|
|
endif
|
|
|
|
:Return TurnResult;
|
|
note right
|
|
- responses[]
|
|
- vote_summary
|
|
- consensus_reached
|
|
- status_promoted
|
|
end note
|
|
|
|
stop
|
|
|
|
legend right
|
|
| Symbol | Meaning |
|
|
| Rectangle | SmartTool |
|
|
| Diamond | Condition |
|
|
| Fork | Parallel execution |
|
|
endlegend
|
|
|
|
@enduml
|