```graphviz digraph prof { node [style="filled, rounded", shape=box, fontname="Roboto", margin="0.5,0.25"]; /* ------- COLOR-CODED NODE "CLASSES" ------- */ /* Human actions */ pr, commits0, commits1, runrecipetest, merge, release [color=palegreen]; /* Execution steps, flow control, etc. */ lintgate, registertest, runflow, flowexit, flowsuccess, updatecomment, newrepo, buildrecipe, exitgate, stac [color=khaki]; /* Inline labels */ Test, Full [color=white, margin="0,0"]; /* Errors */ error0, error1 [color=pink, label="error"]; /* ------- NODE LABELS ------- */ pr [label="PR opened against `/staged-recipes`"]; commits0, commits1 [label="More commits"]; lintgate [label="PR includes valid `recipe.py` and `meta.yaml`?"] runrecipetest [label="`/run-recipe-test` command issued"] registertest [label="Register recipe subset Flow"] runflow [label="Run Prefect Flow"] etl [label="ETL algorithm"] flowexit [label="Exit state POSTed to GitHub API."] updatecomment [label="`/run-recipe-test` comment updated"] flowsuccess [label="Exit state == 'Success'?"] merge [label="Merge PR"] newrepo [label="Feedstock repo created"] release [label="Tag and release feedstock repo"] buildrecipe [label="Register full recipe Flow"] exitgate [label="Flow type?"] stac [label="Generate STAC Object"] /* ------- GRAPH CONNECTIONS ------- */ /* Control flow connections */ pr -> lintgate [arrowhead=none] lintgate -> error0 [color=red] error0 -> commits0 commits0 -> lintgate lintgate -> runrecipetest [color=green] runrecipetest -> registertest registertest -> runflow runflow -> etl etl -> flowexit [arrowhead=none] flowexit -> exitgate [arrowhead=none] exitgate -> Test [arrowhead=none] Test -> updatecomment exitgate -> Full [arrowhead=none] Full -> stac stac -> done updatecomment -> flowsuccess [arrowhead=none] flowsuccess -> error1 [color=red] error1 -> commits1 commits1 -> runrecipetest flowsuccess -> merge [color=green] merge -> newrepo [arrowhead=none] newrepo -> release release -> buildrecipe buildrecipe -> runflow {rank = same; registertest; buildrecipe;} {rank = same; runrecipetest; release;} /* ------- CALL STACK ------- # Styling linter, registertest_stack, slashcmd, automationhook, updatecomment_stack, newrepo_stack, buildrecipe_stack [color=aliceblue, margin="0.75,0.25"]; # Labels linter [label="/staged-recipes/.github/workflows/linter.yaml"] registertest_stack [label="/staged-recipes/.github/workflows/slash-command-dispatch.yaml /staged-recipes/.github/workflows/run-recipe-test.yaml"] slashcmd [label="/recipe-prefect-action/action.yaml /pangeo-forge-prefect/pangeo_forge_prefect/flow_manager.py::register_flow"] automationhook [label="/pangeo-forge-prefect/pangeo_forge_prefect/automation_hook_manager.py"] updatecomment_stack [label="/staged-recipes/.github/workflows/update-slash-command-comment.yaml"] newrepo_stack [label="/staged-recipes/.github/workflows/create-feedstock.yaml /feedstock-creation-action/action.yaml"] buildrecipe_stack [label="/feedstock-template/.github/workflows/run-recipe.yaml"] # Call stack connections lintgate -> linter [arrowhead=none, style=dotted] registertest -> registertest_stack [arrowhead=none, style=dotted] runflow -> slashcmd [arrowhead=none, style=dotted] flowexit -> automationhook [arrowhead=none, style=dotted] updatecomment -> updatecomment_stack [arrowhead=none, style=dotted] newrepo -> newrepo_stack [arrowhead=none, style=dotted] buildrecipe -> buildrecipe_stack [arrowhead=none, style=dotted] {rank = same; lintgate; linter;} {rank = same; registertest; registertest_stack;} {rank = same; runflow; slashcmd;} {rank = same; flowexit; automationhook;} {rank = same; updatecomment; updatecomment_stack;} {rank = same; newrepo; newrepo_stack;} {rank = same; buildrecipe; buildrecipe_stack;} */ } ```