diff --git a/ql/lib/codeql/actions/dataflow/FlowSources.qll b/ql/lib/codeql/actions/dataflow/FlowSources.qll index 79934ca586b..34f8c76df67 100644 --- a/ql/lib/codeql/actions/dataflow/FlowSources.qll +++ b/ql/lib/codeql/actions/dataflow/FlowSources.qll @@ -222,3 +222,15 @@ class TJActionsVerifyChangedFilesSource extends RemoteFlowSource { override string getSourceType() { result = "filename" } } + +class Xt0rtedSlashCommandSource extends RemoteFlowSource { + Xt0rtedSlashCommandSource() { + exists(UsesStep u | + u.getCallee() = "xt0rted/slash-command-action" and + u.getArgument("permission-level").toLowerCase() = ["read", "none"] and + this.asExpr() = u + ) + } + + override string getSourceType() { result = "text" } +} diff --git a/ql/lib/codeql/actions/dataflow/FlowSteps.qll b/ql/lib/codeql/actions/dataflow/FlowSteps.qll index caa09e9c7e2..46c42da2652 100644 --- a/ql/lib/codeql/actions/dataflow/FlowSteps.qll +++ b/ql/lib/codeql/actions/dataflow/FlowSteps.qll @@ -217,7 +217,7 @@ predicate tjActionsChangedFilesTaintStep(DataFlow::Node pred, DataFlow::Node suc */ predicate tjActionsVerifyChangedFilesTaintStep(DataFlow::Node pred, DataFlow::Node succ) { exists(StepsExpression o | - pred instanceof TJActionsChangedFilesSource and + pred instanceof TJActionsVerifyChangedFilesSource and o.getTarget() = pred.asExpr() and o.getStepId() = pred.asExpr().(UsesStep).getId() and o.getFieldName() = "changed_files" and @@ -225,12 +225,26 @@ predicate tjActionsVerifyChangedFilesTaintStep(DataFlow::Node pred, DataFlow::No ) } +/** + * A read of user-controlled field of the xt0rted/slash-command-action action. + */ +predicate xt0rtedSlashCommandActionTaintStep(DataFlow::Node pred, DataFlow::Node succ) { + exists(StepsExpression o | + pred instanceof Xt0rtedSlashCommandSource and + o.getTarget() = pred.asExpr() and + o.getStepId() = pred.asExpr().(UsesStep).getId() and + o.getFieldName() = "command-arguments" and + succ.asExpr() = o + ) +} + class TaintSteps extends AdditionalTaintStep { override predicate step(DataFlow::Node node1, DataFlow::Node node2) { envToRunStep(node1, node2) or artifactDownloadToUseStep(node1, node2) or dornyPathsFilterTaintStep(node1, node2) or tjActionsChangedFilesTaintStep(node1, node2) or - tjActionsVerifyChangedFilesTaintStep(node1, node2) + tjActionsVerifyChangedFilesTaintStep(node1, node2) or + xt0rtedSlashCommandActionTaintStep(node1, node2) } } diff --git a/ql/lib/ext/manual/xt0rted_slash-command-action.model.yml b/ql/lib/ext/manual/xt0rted_slash-command-action.model.yml deleted file mode 100644 index 0910261d21d..00000000000 --- a/ql/lib/ext/manual/xt0rted_slash-command-action.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: github/actions-all - extensible: actionsSourceModel - data: - - ["xt0rted/slash-command-action", "*", "output.command-arguments", "text", "manual"] - - ["xt0rted/slash-command-action", "*", "output.command-arguments", "text", "manual"] diff --git a/ql/test/library-tests/test.expected b/ql/test/library-tests/test.expected index 19eda82df48..c80dc006ce7 100644 --- a/ql/test/library-tests/test.expected +++ b/ql/test/library-tests/test.expected @@ -6,20 +6,20 @@ files workflows | .github/workflows/expression_nodes.yml:1:1:21:47 | on: issue_comment | | .github/workflows/multiline.yml:1:1:89:29 | on: | -| .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | +| .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | | .github/workflows/test.yml:1:1:40:53 | on: push | reusableWorkflows compositeActions jobs | .github/workflows/expression_nodes.yml:5:5:21:47 | Job: echo-chamber | | .github/workflows/multiline.yml:9:5:89:29 | Job: Test | -| .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | | .github/workflows/test.yml:5:5:31:2 | Job: job1 | | .github/workflows/test.yml:32:5:40:53 | Job: job2 | localJobs | .github/workflows/expression_nodes.yml:5:5:21:47 | Job: echo-chamber | | .github/workflows/multiline.yml:9:5:89:29 | Job: Test | -| .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | | .github/workflows/test.yml:5:5:31:2 | Job: job1 | | .github/workflows/test.yml:32:5:40:53 | Job: job2 | extJobs @@ -46,11 +46,7 @@ steps | .github/workflows/multiline.yml:78:9:85:6 | Run Step | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | @@ -62,7 +58,12 @@ steps | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | | .github/workflows/test.yml:11:9:15:6 | Uses Step | | .github/workflows/test.yml:15:9:19:6 | Uses Step: source | | .github/workflows/test.yml:19:9:26:6 | Uses Step: step | @@ -92,23 +93,23 @@ runSteps | .github/workflows/multiline.yml:78:9:85:6 | Run Step | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | venv/bin/activate | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | echo foo; . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | echo foo;. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | echo foo \|. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | ./venv/bin/activate | -| .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | sh venv/bin/activate.sh | -| .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | echo $(sh venv/bin/activate.sh) | -| .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | echo foo; sh venv/bin/activate.sh; echo bar | -| .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | echo foo \| sh venv/bin/activate.sh > output | -| .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | python venv/bin/activate.py | -| .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | echo foo; python venv/bin/activate.py | -| .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | pnpm run test:ct | -| .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | pip install nbformat && python scripts/generate_notebooks.py | -| .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | python scripts/generate_theme.py --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | xvfb-run ./mvnw clean package | +| .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | . venv/bin/activate | +| .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | echo foo; . venv/bin/activate | +| .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | echo foo;. venv/bin/activate | +| .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | echo foo \|. venv/bin/activate | +| .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | ./venv/bin/activate | +| .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | sh venv/bin/activate.sh | +| .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | echo $(sh venv/bin/activate.sh) | +| .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | echo foo; sh venv/bin/activate.sh; echo bar | +| .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | echo foo \| sh venv/bin/activate.sh > output | +| .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | xvfb-run ./mvnw clean package | | .github/workflows/test.yml:26:9:28:6 | Run Step: simplesink1 | echo ${{ steps.source.outputs.all_changed_files }} | | .github/workflows/test.yml:28:9:31:2 | Run Step: simplesink2 | ${{ github.event.pull_request.head.ref }} | | .github/workflows/test.yml:39:9:40:53 | Run Step: sink | echo ${{needs.job1.outputs.job_output}} | @@ -129,14 +130,17 @@ runExprs | .github/workflows/test.yml:28:9:31:2 | Run Step: simplesink2 | .github/workflows/test.yml:29:15:29:55 | github.event.pull_request.head.ref | | .github/workflows/test.yml:39:9:40:53 | Run Step: sink | .github/workflows/test.yml:40:20:40:53 | needs.job1.outputs.job_output | uses +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | | .github/workflows/test.yml:11:9:15:6 | Uses Step | | .github/workflows/test.yml:15:9:19:6 | Uses Step: source | | .github/workflows/test.yml:19:9:26:6 | Uses Step: step | stepUses +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | | .github/workflows/test.yml:11:9:15:6 | Uses Step | | .github/workflows/test.yml:15:9:19:6 | Uses Step: source | | .github/workflows/test.yml:19:9:26:6 | Uses Step: step | usesArgs +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | script | .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | | .github/workflows/test.yml:19:9:26:6 | Uses Step: step | source | .github/workflows/test.yml:23:20:23:64 | steps.source.outputs.all_changed_files | runStepChildren | .github/workflows/expression_nodes.yml:7:9:8:6 | Run Step | .github/workflows/expression_nodes.yml:7:14:7:58 | LINE 1echo '${{ github.event.comment.body }}' | @@ -171,23 +175,23 @@ runStepChildren | .github/workflows/multiline.yml:85:9:89:29 | Run Step | .github/workflows/multiline.yml:85:15:85:21 | block13 | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | -| .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | -| .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | -| .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | -| .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | -| .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | -| .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | -| .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | -| .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | -| .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | +| .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | +| .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | +| .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | +| .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | +| .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | +| .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | +| .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | +| .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | +| .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | +| .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | | .github/workflows/test.yml:26:9:28:6 | Run Step: simplesink1 | .github/workflows/test.yml:26:13:26:23 | simplesink1 | | .github/workflows/test.yml:26:9:28:6 | Run Step: simplesink1 | .github/workflows/test.yml:27:14:27:63 | echo ${{ steps.source.outputs.all_changed_files }} | | .github/workflows/test.yml:28:9:31:2 | Run Step: simplesink2 | .github/workflows/test.yml:28:13:28:23 | simplesink2 | @@ -340,86 +344,94 @@ parentNodes | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | .github/workflows/multiline.yml:1:1:89:29 | on: | | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | .github/workflows/multiline.yml:9:5:89:29 | Job: Test | | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | .github/workflows/multiline.yml:85:9:89:29 | Run Step | -| .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | +| .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | | .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:5:1:8 | push | | .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:5:1:8 | push | | .github/workflows/poisonable_steps.yml:1:5:1:8 | push | .github/workflows/poisonable_steps.yml:1:5:1:8 | push | -| .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:5:14:5:26 | ubuntu-latest | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:5:14:5:26 | ubuntu-latest | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:5:14:5:26 | ubuntu-latest | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:5:14:5:26 | ubuntu-latest | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | | .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | -| .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | -| .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | -| .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | -| .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | -| .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | -| .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | -| .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | -| .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | -| .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | -| .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | -| .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | -| .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:8:15:8:38 | actions/github-script@v7 | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:8:15:8:38 | actions/github-script@v7 | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:8:15:8:38 | actions/github-script@v7 | .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | +| .github/workflows/poisonable_steps.yml:10:19:12:72 | const { default: foo } = await import('${{ github.workspace }}/scripts/foo.mjs')\nreturn foo({ github, context, core }, body, number, sender)\n | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:10:19:12:72 | const { default: foo } = await import('${{ github.workspace }}/scripts/foo.mjs')\nreturn foo({ github, context, core }, body, number, sender)\n | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:10:19:12:72 | const { default: foo } = await import('${{ github.workspace }}/scripts/foo.mjs')\nreturn foo({ github, context, core }, body, number, sender)\n | .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | +| .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | .github/workflows/poisonable_steps.yml:10:19:12:72 | const { default: foo } = await import('${{ github.workspace }}/scripts/foo.mjs')\nreturn foo({ github, context, core }, body, number, sender)\n | +| .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | +| .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | +| .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | +| .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | +| .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | +| .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | +| .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | +| .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | +| .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | +| .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | +| .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | | .github/workflows/test.yml:1:5:1:8 | push | .github/workflows/test.yml:1:1:40:53 | on: push | | .github/workflows/test.yml:1:5:1:8 | push | .github/workflows/test.yml:1:1:40:53 | on: push | | .github/workflows/test.yml:1:5:1:8 | push | .github/workflows/test.yml:1:5:1:8 | push | @@ -576,47 +588,49 @@ cfgNodes | .github/workflows/multiline.yml:79:14:84:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | -| .github/workflows/poisonable_steps.yml:1:1:24:43 | enter on: push | -| .github/workflows/poisonable_steps.yml:1:1:24:43 | exit on: push | -| .github/workflows/poisonable_steps.yml:1:1:24:43 | exit on: push (normal) | -| .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | -| .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:1:1:29:43 | enter on: push | +| .github/workflows/poisonable_steps.yml:1:1:29:43 | exit on: push | +| .github/workflows/poisonable_steps.yml:1:1:29:43 | exit on: push (normal) | +| .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | +| .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | | .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | -| .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | -| .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | -| .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | -| .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | -| .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | +| .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | -| .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | +| .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | -| .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | +| .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | -| .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | +| .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | | .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | -| .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | +| .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | | .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | -| .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | | .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | -| .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | | .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | -| .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | | .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | -| .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | -| .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | -| .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | -| .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | -| .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | +| .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | +| .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | +| .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | +| .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | +| .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | +| .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | +| .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | | .github/workflows/test.yml:1:1:40:53 | enter on: push | | .github/workflows/test.yml:1:1:40:53 | exit on: push | | .github/workflows/test.yml:1:1:40:53 | exit on: push (normal) | @@ -695,43 +709,45 @@ dfNodes | .github/workflows/multiline.yml:79:14:84:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | -| .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | +| .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | | .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | -| .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | -| .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | -| .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | -| .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | -| .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | +| .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | -| .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | +| .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | -| .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | +| .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | -| .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | +| .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | | .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | -| .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | +| .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | | .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | -| .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | | .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | -| .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | | .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | -| .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | | .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | -| .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | -| .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | -| .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | -| .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | -| .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | +| .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | +| .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | +| .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | +| .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | +| .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | +| .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | +| .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | | .github/workflows/test.yml:5:5:31:2 | Job: job1 | | .github/workflows/test.yml:8:7:10:4 | Job outputs node | | .github/workflows/test.yml:8:20:8:50 | steps.step.outputs.value | @@ -750,6 +766,7 @@ dfNodes | .github/workflows/test.yml:40:14:40:52 | echo ${{needs.job1.outputs.job_output}} | | .github/workflows/test.yml:40:20:40:53 | needs.job1.outputs.job_output | argumentNodes +| .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | | .github/workflows/test.yml:23:20:23:64 | steps.source.outputs.all_changed_files | usesIds | .github/workflows/test.yml:15:9:19:6 | Uses Step: source | source | @@ -811,43 +828,45 @@ nodeLocations | .github/workflows/multiline.yml:79:14:84:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | .github/workflows/multiline.yml:79:14:84:29 | .github/workflows/multiline.yml@79:14:84:29 | | .github/workflows/multiline.yml:85:9:89:29 | Run Step | .github/workflows/multiline.yml:85:9:89:29 | .github/workflows/multiline.yml@85:9:89:29 | | .github/workflows/multiline.yml:86:14:89:29 | {\n echo 'JSON_RESPONSE<> "$GITHUB_ENV"\n | .github/workflows/multiline.yml:86:14:89:29 | .github/workflows/multiline.yml@86:14:89:29 | -| .github/workflows/poisonable_steps.yml:5:5:24:43 | Job: local_commands | .github/workflows/poisonable_steps.yml:5:5:24:43 | .github/workflows/poisonable_steps.yml@5:5:24:43 | +| .github/workflows/poisonable_steps.yml:5:5:29:43 | Job: local_commands | .github/workflows/poisonable_steps.yml:5:5:29:43 | .github/workflows/poisonable_steps.yml@5:5:29:43 | | .github/workflows/poisonable_steps.yml:7:9:8:6 | Run Step | .github/workflows/poisonable_steps.yml:7:9:8:6 | .github/workflows/poisonable_steps.yml@7:9:8:6 | | .github/workflows/poisonable_steps.yml:7:14:7:30 | venv/bin/activate | .github/workflows/poisonable_steps.yml:7:14:7:30 | .github/workflows/poisonable_steps.yml@7:14:7:30 | -| .github/workflows/poisonable_steps.yml:8:9:9:6 | Run Step | .github/workflows/poisonable_steps.yml:8:9:9:6 | .github/workflows/poisonable_steps.yml@8:9:9:6 | -| .github/workflows/poisonable_steps.yml:8:14:8:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:8:14:8:32 | .github/workflows/poisonable_steps.yml@8:14:8:32 | -| .github/workflows/poisonable_steps.yml:9:9:10:6 | Run Step | .github/workflows/poisonable_steps.yml:9:9:10:6 | .github/workflows/poisonable_steps.yml@9:9:10:6 | -| .github/workflows/poisonable_steps.yml:9:14:9:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:9:14:9:42 | .github/workflows/poisonable_steps.yml@9:14:9:42 | -| .github/workflows/poisonable_steps.yml:10:9:11:6 | Run Step | .github/workflows/poisonable_steps.yml:10:9:11:6 | .github/workflows/poisonable_steps.yml@10:9:11:6 | -| .github/workflows/poisonable_steps.yml:10:14:10:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:10:14:10:41 | .github/workflows/poisonable_steps.yml@10:14:10:41 | -| .github/workflows/poisonable_steps.yml:11:9:12:6 | Run Step | .github/workflows/poisonable_steps.yml:11:9:12:6 | .github/workflows/poisonable_steps.yml@11:9:12:6 | -| .github/workflows/poisonable_steps.yml:11:14:11:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:11:14:11:42 | .github/workflows/poisonable_steps.yml@11:14:11:42 | -| .github/workflows/poisonable_steps.yml:12:9:13:6 | Run Step | .github/workflows/poisonable_steps.yml:12:9:13:6 | .github/workflows/poisonable_steps.yml@12:9:13:6 | -| .github/workflows/poisonable_steps.yml:12:14:12:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:12:14:12:32 | .github/workflows/poisonable_steps.yml@12:14:12:32 | +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | .github/workflows/poisonable_steps.yml:8:9:13:6 | .github/workflows/poisonable_steps.yml@8:9:13:6 | +| .github/workflows/poisonable_steps.yml:11:53:11:75 | github.workspace | .github/workflows/poisonable_steps.yml:11:53:11:75 | .github/workflows/poisonable_steps.yml@11:53:11:75 | | .github/workflows/poisonable_steps.yml:13:9:14:6 | Run Step | .github/workflows/poisonable_steps.yml:13:9:14:6 | .github/workflows/poisonable_steps.yml@13:9:14:6 | -| .github/workflows/poisonable_steps.yml:13:14:13:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:13:14:13:36 | .github/workflows/poisonable_steps.yml@13:14:13:36 | +| .github/workflows/poisonable_steps.yml:13:14:13:32 | . venv/bin/activate | .github/workflows/poisonable_steps.yml:13:14:13:32 | .github/workflows/poisonable_steps.yml@13:14:13:32 | | .github/workflows/poisonable_steps.yml:14:9:15:6 | Run Step | .github/workflows/poisonable_steps.yml:14:9:15:6 | .github/workflows/poisonable_steps.yml@14:9:15:6 | -| .github/workflows/poisonable_steps.yml:14:14:14:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:14:14:14:44 | .github/workflows/poisonable_steps.yml@14:14:14:44 | +| .github/workflows/poisonable_steps.yml:14:14:14:42 | echo foo; . venv/bin/activate | .github/workflows/poisonable_steps.yml:14:14:14:42 | .github/workflows/poisonable_steps.yml@14:14:14:42 | | .github/workflows/poisonable_steps.yml:15:9:16:6 | Run Step | .github/workflows/poisonable_steps.yml:15:9:16:6 | .github/workflows/poisonable_steps.yml@15:9:16:6 | -| .github/workflows/poisonable_steps.yml:15:14:15:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:15:14:15:56 | .github/workflows/poisonable_steps.yml@15:14:15:56 | +| .github/workflows/poisonable_steps.yml:15:14:15:41 | echo foo;. venv/bin/activate | .github/workflows/poisonable_steps.yml:15:14:15:41 | .github/workflows/poisonable_steps.yml@15:14:15:41 | | .github/workflows/poisonable_steps.yml:16:9:17:6 | Run Step | .github/workflows/poisonable_steps.yml:16:9:17:6 | .github/workflows/poisonable_steps.yml@16:9:17:6 | -| .github/workflows/poisonable_steps.yml:16:14:16:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:16:14:16:56 | .github/workflows/poisonable_steps.yml@16:14:16:56 | +| .github/workflows/poisonable_steps.yml:16:14:16:42 | echo foo \|. venv/bin/activate | .github/workflows/poisonable_steps.yml:16:14:16:42 | .github/workflows/poisonable_steps.yml@16:14:16:42 | | .github/workflows/poisonable_steps.yml:17:9:18:6 | Run Step | .github/workflows/poisonable_steps.yml:17:9:18:6 | .github/workflows/poisonable_steps.yml@17:9:18:6 | -| .github/workflows/poisonable_steps.yml:17:14:17:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:17:14:17:40 | .github/workflows/poisonable_steps.yml@17:14:17:40 | +| .github/workflows/poisonable_steps.yml:17:14:17:32 | ./venv/bin/activate | .github/workflows/poisonable_steps.yml:17:14:17:32 | .github/workflows/poisonable_steps.yml@17:14:17:32 | | .github/workflows/poisonable_steps.yml:18:9:19:6 | Run Step | .github/workflows/poisonable_steps.yml:18:9:19:6 | .github/workflows/poisonable_steps.yml@18:9:19:6 | -| .github/workflows/poisonable_steps.yml:18:14:18:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:18:14:18:50 | .github/workflows/poisonable_steps.yml@18:14:18:50 | +| .github/workflows/poisonable_steps.yml:18:14:18:36 | sh venv/bin/activate.sh | .github/workflows/poisonable_steps.yml:18:14:18:36 | .github/workflows/poisonable_steps.yml@18:14:18:36 | | .github/workflows/poisonable_steps.yml:19:9:20:6 | Run Step | .github/workflows/poisonable_steps.yml:19:9:20:6 | .github/workflows/poisonable_steps.yml@19:9:20:6 | -| .github/workflows/poisonable_steps.yml:19:14:19:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:19:14:19:29 | .github/workflows/poisonable_steps.yml@19:14:19:29 | +| .github/workflows/poisonable_steps.yml:19:14:19:44 | echo $(sh venv/bin/activate.sh) | .github/workflows/poisonable_steps.yml:19:14:19:44 | .github/workflows/poisonable_steps.yml@19:14:19:44 | | .github/workflows/poisonable_steps.yml:20:9:21:6 | Run Step | .github/workflows/poisonable_steps.yml:20:9:21:6 | .github/workflows/poisonable_steps.yml@20:9:21:6 | -| .github/workflows/poisonable_steps.yml:20:14:20:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:20:14:20:73 | .github/workflows/poisonable_steps.yml@20:14:20:73 | +| .github/workflows/poisonable_steps.yml:20:14:20:56 | echo foo; sh venv/bin/activate.sh; echo bar | .github/workflows/poisonable_steps.yml:20:14:20:56 | .github/workflows/poisonable_steps.yml@20:14:20:56 | | .github/workflows/poisonable_steps.yml:21:9:22:6 | Run Step | .github/workflows/poisonable_steps.yml:21:9:22:6 | .github/workflows/poisonable_steps.yml@21:9:22:6 | -| .github/workflows/poisonable_steps.yml:21:14:21:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:21:14:21:78 | .github/workflows/poisonable_steps.yml@21:14:21:78 | +| .github/workflows/poisonable_steps.yml:21:14:21:56 | echo foo \| sh venv/bin/activate.sh > output | .github/workflows/poisonable_steps.yml:21:14:21:56 | .github/workflows/poisonable_steps.yml@21:14:21:56 | | .github/workflows/poisonable_steps.yml:22:9:23:6 | Run Step | .github/workflows/poisonable_steps.yml:22:9:23:6 | .github/workflows/poisonable_steps.yml@22:9:23:6 | -| .github/workflows/poisonable_steps.yml:22:14:22:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:22:14:22:76 | .github/workflows/poisonable_steps.yml@22:14:22:76 | +| .github/workflows/poisonable_steps.yml:22:14:22:40 | python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:22:14:22:40 | .github/workflows/poisonable_steps.yml@22:14:22:40 | | .github/workflows/poisonable_steps.yml:23:9:24:6 | Run Step | .github/workflows/poisonable_steps.yml:23:9:24:6 | .github/workflows/poisonable_steps.yml@23:9:24:6 | -| .github/workflows/poisonable_steps.yml:23:14:23:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:23:14:23:92 | .github/workflows/poisonable_steps.yml@23:14:23:92 | -| .github/workflows/poisonable_steps.yml:24:9:24:43 | Run Step | .github/workflows/poisonable_steps.yml:24:9:24:43 | .github/workflows/poisonable_steps.yml@24:9:24:43 | -| .github/workflows/poisonable_steps.yml:24:14:24:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:24:14:24:42 | .github/workflows/poisonable_steps.yml@24:14:24:42 | +| .github/workflows/poisonable_steps.yml:23:14:23:50 | echo foo; python venv/bin/activate.py | .github/workflows/poisonable_steps.yml:23:14:23:50 | .github/workflows/poisonable_steps.yml@23:14:23:50 | +| .github/workflows/poisonable_steps.yml:24:9:25:6 | Run Step | .github/workflows/poisonable_steps.yml:24:9:25:6 | .github/workflows/poisonable_steps.yml@24:9:25:6 | +| .github/workflows/poisonable_steps.yml:24:14:24:29 | pnpm run test:ct | .github/workflows/poisonable_steps.yml:24:14:24:29 | .github/workflows/poisonable_steps.yml@24:14:24:29 | +| .github/workflows/poisonable_steps.yml:25:9:26:6 | Run Step | .github/workflows/poisonable_steps.yml:25:9:26:6 | .github/workflows/poisonable_steps.yml@25:9:26:6 | +| .github/workflows/poisonable_steps.yml:25:14:25:73 | pip install nbformat && python scripts/generate_notebooks.py | .github/workflows/poisonable_steps.yml:25:14:25:73 | .github/workflows/poisonable_steps.yml@25:14:25:73 | +| .github/workflows/poisonable_steps.yml:26:9:27:6 | Run Step | .github/workflows/poisonable_steps.yml:26:9:27:6 | .github/workflows/poisonable_steps.yml@26:9:27:6 | +| .github/workflows/poisonable_steps.yml:26:14:26:78 | python scripts/generate_theme.py --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:26:14:26:78 | .github/workflows/poisonable_steps.yml@26:14:26:78 | +| .github/workflows/poisonable_steps.yml:27:9:28:6 | Run Step | .github/workflows/poisonable_steps.yml:27:9:28:6 | .github/workflows/poisonable_steps.yml@27:9:28:6 | +| .github/workflows/poisonable_steps.yml:27:14:27:76 | ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:27:14:27:76 | .github/workflows/poisonable_steps.yml@27:14:27:76 | +| .github/workflows/poisonable_steps.yml:28:9:29:6 | Run Step | .github/workflows/poisonable_steps.yml:28:9:29:6 | .github/workflows/poisonable_steps.yml@28:9:29:6 | +| .github/workflows/poisonable_steps.yml:28:14:28:92 | bundle run exec ruby scripts/generate_theme.rb --outfile js/storybook/theme.css | .github/workflows/poisonable_steps.yml:28:14:28:92 | .github/workflows/poisonable_steps.yml@28:14:28:92 | +| .github/workflows/poisonable_steps.yml:29:9:29:43 | Run Step | .github/workflows/poisonable_steps.yml:29:9:29:43 | .github/workflows/poisonable_steps.yml@29:9:29:43 | +| .github/workflows/poisonable_steps.yml:29:14:29:42 | xvfb-run ./mvnw clean package | .github/workflows/poisonable_steps.yml:29:14:29:42 | .github/workflows/poisonable_steps.yml@29:14:29:42 | | .github/workflows/test.yml:5:5:31:2 | Job: job1 | .github/workflows/test.yml:5:5:31:2 | .github/workflows/test.yml@5:5:31:2 | | .github/workflows/test.yml:8:7:10:4 | Job outputs node | .github/workflows/test.yml:8:7:10:4 | .github/workflows/test.yml@8:7:10:4 | | .github/workflows/test.yml:8:20:8:50 | steps.step.outputs.value | .github/workflows/test.yml:8:20:8:50 | .github/workflows/test.yml@8:20:8:50 | @@ -868,7 +887,7 @@ nodeLocations scopes | .github/workflows/expression_nodes.yml:1:1:21:47 | on: issue_comment | | .github/workflows/multiline.yml:1:1:89:29 | on: | -| .github/workflows/poisonable_steps.yml:1:1:24:43 | on: push | +| .github/workflows/poisonable_steps.yml:1:1:29:43 | on: push | | .github/workflows/test.yml:1:1:40:53 | on: push | sources | ahmadnassri/action-changed-files | * | output.files | filename | manual | @@ -892,6 +911,7 @@ sources | khan/pull-request-comment-trigger | * | output.comment_body | text | manual | | marocchino/on_artifact | * | output.* | artifact | manual | | peter-murray/issue-body-parser-action | * | output.* | text | manual | +| potiuk/get-workflow-origin | * | output.sourceHeadBranch | branch | manual | | puppeteer/puppeteer/.github/workflows/changed-packages.yml | * | output.changes | filename | manual | | redhat-plumbers-in-action/download-artifact | * | output.* | artifact | manual | | tj-actions/branch-names | * | output.current_branch | branch | manual | @@ -902,7 +922,6 @@ sources | trilom/file-changes-action | * | output.files_removed | filename | manual | | tzkhan/pr-update-action | * | output.headMatch | branch | manual | | xt0rted/pull-request-comment-branch | * | output.head_ref | branch | manual | -| xt0rted/slash-command-action | * | output.command-arguments | text | manual | summaries | akhileshns/heroku-deploy | * | input.branch | output.status | taint | manual | | android-actions/setup-android | * | input.cmdline-tools-version | output.ANDROID_COMMANDLINE_TOOLS_VERSION | taint | manual | @@ -992,6 +1011,7 @@ summaries | timheuer/base64-to-file | * | input.fileName | output.filePath | taint | manual | | zitadel/zitadel/.github/workflows/container.yml | * | input.build_image_name | output.build_image | taint | manual | calls +| .github/workflows/poisonable_steps.yml:8:9:13:6 | Uses Step | actions/github-script | | .github/workflows/test.yml:11:9:15:6 | Uses Step | actions/checkout | | .github/workflows/test.yml:15:9:19:6 | Uses Step: source | tj-actions/changed-files | | .github/workflows/test.yml:19:9:26:6 | Uses Step: step | mad9000/actions-find-and-replace-string | diff --git a/ql/test/query-tests/Security/CWE-094/.github/workflows/slash_command1.yml b/ql/test/query-tests/Security/CWE-094/.github/workflows/slash_command1.yml new file mode 100644 index 00000000000..adca4bc90ff --- /dev/null +++ b/ql/test/query-tests/Security/CWE-094/.github/workflows/slash_command1.yml @@ -0,0 +1,21 @@ +name: Test +on: issue_comment +permissions: + issues: write + +jobs: + test: + if: startsWith(github.event.comment.body, '/benchmark') + runs-on: benchmarks + steps: + - name: Check for Command + id: command + uses: xt0rted/slash-command-action@v2 + with: + command: benchmark + reaction-type: "eyes" + repo-token: ${{ env.GH_TOKEN }} + + - run: echo "${{ steps.command.outputs.command-arguments }}" + + diff --git a/ql/test/query-tests/Security/CWE-094/.github/workflows/slash_command2.yml b/ql/test/query-tests/Security/CWE-094/.github/workflows/slash_command2.yml new file mode 100644 index 00000000000..5422ac4e987 --- /dev/null +++ b/ql/test/query-tests/Security/CWE-094/.github/workflows/slash_command2.yml @@ -0,0 +1,21 @@ +name: Test +on: issue_comment +permissions: + issues: write + +jobs: + test: + if: startsWith(github.event.comment.body, '/benchmark') + runs-on: benchmarks + steps: + - name: Check for Command + id: command + uses: xt0rted/slash-command-action@v2 + with: + command: benchmark + reaction-type: "eyes" + repo-token: ${{ env.GH_TOKEN }} + permission-level: read + + - run: echo "${{ steps.command.outputs.command-arguments }}" + diff --git a/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected b/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected index 16119dd6453..6dfb91f7275 100644 --- a/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected +++ b/ql/test/query-tests/Security/CWE-094/CodeInjectionCritical.expected @@ -59,6 +59,7 @@ edges | .github/workflows/simple2.yml:14:9:18:6 | Uses Step: source | .github/workflows/simple2.yml:22:20:22:64 | steps.source.outputs.all_changed_files | provenance | | | .github/workflows/simple2.yml:18:9:26:6 | Uses Step: step [value] | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | provenance | | | .github/workflows/simple2.yml:22:20:22:64 | steps.source.outputs.all_changed_files | .github/workflows/simple2.yml:18:9:26:6 | Uses Step: step [value] | provenance | | +| .github/workflows/slash_command2.yml:11:9:20:6 | Uses Step: command | .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | provenance | | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | provenance | | | .github/workflows/test2.yml:17:9:25:6 | Uses Step: changed | .github/workflows/test2.yml:27:26:27:66 | steps.changed.outputs.locale_files | provenance | | | .github/workflows/test2.yml:29:9:37:6 | Uses Step: changed2 | .github/workflows/test2.yml:39:25:39:66 | steps.changed2.outputs.locale_files | provenance | | @@ -237,6 +238,8 @@ nodes | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | semmle.label | steps.step.outputs.value | | .github/workflows/simple3.yml:20:31:20:74 | github.event.workflow_run.head_branch | semmle.label | github.event.workflow_run.head_branch | | .github/workflows/simple3.yml:22:11:22:37 | toJSON(github.event) | semmle.label | toJSON(github.event) | +| .github/workflows/slash_command2.yml:11:9:20:6 | Uses Step: command | semmle.label | Uses Step: command | +| .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | semmle.label | steps.command.outputs.command-arguments | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | semmle.label | env.ISSUE_KEY | @@ -357,6 +360,7 @@ subpaths | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | .github/workflows/simple2.yml:14:9:18:6 | Uses Step: source | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | ${{ steps.step.outputs.value }} | | .github/workflows/simple3.yml:20:31:20:74 | github.event.workflow_run.head_branch | .github/workflows/simple3.yml:20:31:20:74 | github.event.workflow_run.head_branch | .github/workflows/simple3.yml:20:31:20:74 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/simple3.yml:20:31:20:74 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} | | .github/workflows/simple3.yml:22:11:22:37 | toJSON(github.event) | .github/workflows/simple3.yml:22:11:22:37 | toJSON(github.event) | .github/workflows/simple3.yml:22:11:22:37 | toJSON(github.event) | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/simple3.yml:22:11:22:37 | toJSON(github.event) | ${{ toJSON(github.event) }} | +| .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | .github/workflows/slash_command2.yml:11:9:20:6 | Uses Step: command | .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | ${{ steps.command.outputs.command-arguments }} | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | ${{ github.event.pull_request.title }} | | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | ${{ env.ISSUE_KEY }} | | .github/workflows/test2.yml:27:26:27:66 | steps.changed.outputs.locale_files | .github/workflows/test2.yml:17:9:25:6 | Uses Step: changed | .github/workflows/test2.yml:27:26:27:66 | steps.changed.outputs.locale_files | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test2.yml:27:26:27:66 | steps.changed.outputs.locale_files | ${{ steps.changed.outputs.locale_files }} | diff --git a/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected b/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected index d0834f0dff8..11036e7f8eb 100644 --- a/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected +++ b/ql/test/query-tests/Security/CWE-094/CodeInjectionMedium.expected @@ -59,6 +59,7 @@ edges | .github/workflows/simple2.yml:14:9:18:6 | Uses Step: source | .github/workflows/simple2.yml:22:20:22:64 | steps.source.outputs.all_changed_files | provenance | | | .github/workflows/simple2.yml:18:9:26:6 | Uses Step: step [value] | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | provenance | | | .github/workflows/simple2.yml:22:20:22:64 | steps.source.outputs.all_changed_files | .github/workflows/simple2.yml:18:9:26:6 | Uses Step: step [value] | provenance | | +| .github/workflows/slash_command2.yml:11:9:20:6 | Uses Step: command | .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | provenance | | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | provenance | | | .github/workflows/test2.yml:17:9:25:6 | Uses Step: changed | .github/workflows/test2.yml:27:26:27:66 | steps.changed.outputs.locale_files | provenance | | | .github/workflows/test2.yml:29:9:37:6 | Uses Step: changed2 | .github/workflows/test2.yml:39:25:39:66 | steps.changed2.outputs.locale_files | provenance | | @@ -237,6 +238,8 @@ nodes | .github/workflows/simple2.yml:29:24:29:54 | steps.step.outputs.value | semmle.label | steps.step.outputs.value | | .github/workflows/simple3.yml:20:31:20:74 | github.event.workflow_run.head_branch | semmle.label | github.event.workflow_run.head_branch | | .github/workflows/simple3.yml:22:11:22:37 | toJSON(github.event) | semmle.label | toJSON(github.event) | +| .github/workflows/slash_command2.yml:11:9:20:6 | Uses Step: command | semmle.label | Uses Step: command | +| .github/workflows/slash_command2.yml:20:21:20:66 | steps.command.outputs.command-arguments | semmle.label | steps.command.outputs.command-arguments | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | | .github/workflows/test1.yml:22:38:22:75 | github.event.pull_request.title | semmle.label | github.event.pull_request.title | | .github/workflows/test1.yml:25:20:25:39 | env.ISSUE_KEY | semmle.label | env.ISSUE_KEY |