./workflow-dry-run.gnougo-flow.yaml
v0.1.0
version: 1
name: workflow-dry-run-checklist
skill:
description: Runs a deterministic checklist and reports the safe command policy.
tags: [dry-run, validation, commands]
inputs:
checks: { type: array, required: false }
outputs:
summary: { type: string }
functions: |
function label(value) { return upper(trim(value)); }
workflows:
main:
inputs:
checks:
type: array
items: { type: string }
required: false
default: [parse, compile, execute]
steps:
- id: discover_command_tools
type: mcp.list
input:
servers: [GnOuGo.Cmd.Mcp]
include: [tools]
- id: read_command_policy
type: mcp.call
input:
server: GnOuGo.Cmd.Mcp
kind: tool
method: cmd_get_policy
request: {}
- id: run_checks
type: loop.parallel
input:
items: "${data.inputs.checks}"
max_concurrency: 3
item_var: check
index_var: check_index
steps:
- id: format_check
type: set
output_schema:
type: object
properties:
index: { type: integer }
name: { type: string }
passed: { type: boolean }
required: [index, name, passed]
additionalProperties: false
input:
index: "${data.check_index}"
name: "${functions.label(data.check)}"
passed: true
- id: summarize
type: workflow.call
input:
ref: { kind: local, name: summarize_checks }
args:
completed: "${data.steps.run_checks.count}"
tool_count: "${len(data.steps.discover_command_tools.tools)}"
outputs:
summary: "${data.steps.summarize.outputs.text}"
check_results: "${data.steps.run_checks.results}"
command_policy: "${data.steps.read_command_policy.response}"
summarize_checks:
inputs:
completed: { type: number, required: true }
tool_count: { type: number, required: true }
steps:
- id: render
type: template.render
input:
engine: mustache
template: "Dry run completed {{completed}} checks with {{tool_count}} safe command tools."
data:
completed: "${data.inputs.completed}"
tool_count: "${data.inputs.tool_count}"
mode: text
outputs:
text: "${data.steps.render.text}"Semantic view
Workflow graph
✓ Semantically valid
Generated from the validated YAML with GnOuGo.Flow.Mermaid. Emit steps are hidden to keep the execution graph focused.
flowchart TD
n0_start(("Start"))
n1_end(("End"))
n2_inputs[/"Inputs: checks"/]
n3_discover_command_tools[("discover_command_tools - mcp.list")]
n4_read_command_policy[("read_command_policy - mcp.call")]
n5_run_checks{{"run_checks - loop.parallel"}}
n6_format_check("format_check - set")
n7_loop_exit(("Loop exit"))
n8_summarize[["summarize - workflow.call - local: summarize_checks"]]
n9_outputs[/"Outputs: check_results, command_policy, summary"/]
n0_start --> n2_inputs
n3_discover_command_tools --> n4_read_command_policy
n5_run_checks -->|loop body| n6_format_check
n6_format_check --> n7_loop_exit
n4_read_command_policy --> n5_run_checks
n7_loop_exit --> n8_summarize
n2_inputs --> n3_discover_command_tools
n8_summarize --> n9_outputs
n9_outputs --> n1_end
summarize_checks
Local sub-workflow
flowchart TD
n0_start(("Start"))
n1_end(("End"))
n2_inputs[/"Inputs: completed, tool_count"/]
n3_render[/"render - template.render"/]
n4_outputs[/"Outputs: text"/]
n0_start --> n2_inputs
n2_inputs --> n3_render
n3_render --> n4_outputs
n4_outputs --> n1_end