Skip to content

Pregenerate accessible needs.* expressions and transform activation outputs to sanitized step#16277

Merged
pelikhan merged 19 commits intomainfrom
copilot/add-needs-expressions-generation
Feb 17, 2026
Merged

Pregenerate accessible needs.* expressions and transform activation outputs to sanitized step#16277
pelikhan merged 19 commits intomainfrom
copilot/add-needs-expressions-generation

Conversation

Copy link
Contributor

Copilot AI commented Feb 17, 2026

Pregenerate accessible needs.* expressions and transform activation outputs ✅

Successfully implemented generation of accessible needs.* expressions for the "Substitute placeholders" step with automatic transformation of activation outputs to sanitized step references, plus a codemod for migrating existing workflows.

Key Insights

  1. Prompt generation happens in the activation job - can only access outputs from jobs that run before activation
  2. Known needs. expressions only needed in substitution step* - not in prompt creation step
  3. Activation job can't reference its own needs outputs - must use step outputs instead
  4. Jobs without explicit needs get needs: activation added automatically - so they run AFTER activation

Implementation

The compiler now:

  1. Adds known needs.* expressions to the "Substitute placeholders" step only
  2. Automatically transforms needs.activation.outputs.{text|title|body} to steps.sanitized.outputs.{text|title|body} during compilation
  3. Only includes jobs that explicitly depend on pre_activation - jobs without explicit needs run after activation
  4. Provides a codemod CLI command for users to update existing markdown files

Codemod Transformation

Automatic (during compilation):

  • transformActivationOutputs() function in expression_extraction.go
  • Applied automatically during workflow compilation
  • No user action required for new compilations

Manual (via CLI command):

  • gh aw fix command now includes activation-outputs-to-sanitized-step codemod
  • Users can run gh aw fix --write to update existing workflow markdown files
  • Dry-run mode with gh aw fix shows what would be changed
  • Word boundary checking prevents partial matches

Transformations:

  • needs.activation.outputs.textsteps.sanitized.outputs.text
  • needs.activation.outputs.titlesteps.sanitized.outputs.title
  • needs.activation.outputs.bodysteps.sanitized.outputs.body

Features:

  • Word boundary checking prevents partial matches (e.g., text_custom is not transformed)
  • Continues searching after partial matches to transform later valid occurrences
  • Handles operators and punctuation correctly
  • Logs transformations for debugging
  • Other activation outputs (comment_id, comment_repo) not transformed
  • Step ID renamed from "compute-text" to "sanitized" for clarity

Codemod CLI Usage

List available codemods:

gh aw fix --list-codemods

Dry-run (see what would change):

gh aw fix                    # Check all workflows
gh aw fix my-workflow        # Check specific workflow

Apply fixes:

gh aw fix --write            # Fix all workflows
gh aw fix my-workflow --write # Fix specific workflow

Example output:

⚠ my-workflow.md
    • Transform activation outputs to sanitized step

ℹ Would fix 1 of 1 workflow files

ℹ To fix these issues, run:
  gh aw fix --write

Documentation Added

User-Facing Documentation (docs/src/content/docs/reference/templating.md):

  • New section "Automatic Expression Transformations"
  • Explains why transformations occur (activation job context limitation)
  • Lists all transformations with examples
  • Notes about runtime-import compatibility

Developer Documentation (AGENTS.md):

  • New section "Expression Transformations in Workflows"
  • Explains transformation logic and implementation
  • Debug logging instructions
  • Examples with correct/incorrect usage

Technical Deep-Dive (scratchpad/activation-output-transformations.md):

  • Complete overview of the problem and solution
  • Implementation details with code locations
  • Word boundary checking algorithm explanation
  • Test coverage summary
  • Historical context and key commits

Code Comments (compiler_activation_jobs.go):

  • Added detailed comments explaining the sanitized step
  • Cross-references to transformation function
  • Explains why outputs must be referenced as steps.* within activation job

Code Review Fixes

  1. Fixed transformation loop (comment 2815031311):

    • Now continues searching after partial matches instead of breaking
    • Allows transforming multiple valid occurrences even if partial matches exist
    • Test case: "text_custom || needs.activation.outputs.text" correctly transforms the second occurrence
  2. Fixed dependency logic (comment 2815031321):

    • getCustomJobsBeforeActivation() now only includes jobs explicitly depending on pre_activation
    • Aligned with compiler_jobs.go:383-388 which auto-adds needs: activation to jobs without explicit needs
    • Jobs without explicit needs correctly excluded (they run AFTER activation)
  3. Added negative assertions (comment 2815031295):

    • Tests now verify shared action paths are NOT used
    • Checks for both old (compute-text) and new (sanitized) shared action paths

Test Coverage Summary

Expression Extraction Tests:

  • TestTransformActivationOutputs - 12 test cases for transformation logic
  • TestExpressionExtractor_ActivationOutputTransformation - integration test
  • Word boundary and partial match edge case tests

Known Needs Expression Tests:

  • 10 test functions with 34 test cases
  • Unit tests for all helper functions
  • Integration test for end-to-end verification

Codemod Tests:

  • TestActivationOutputsCodemod - 10 test cases for CLI codemod
  • TestActivationOutputsCodemodMetadata - metadata validation
  • Tests cover partial matches, multiple outputs, operators, edge cases

Codemod Registry Tests:

  • Updated to expect 18 codemods (was 17)
  • Validates new codemod is registered and ordered correctly

Total: 14 test functions with 56+ test cases

Verification Results ✅

  • ✅ All 154 workflows compiled successfully
  • ✅ All unit tests passing (14 test functions, 56+ test cases)
  • ✅ Integration tests validate real workflow compilation
  • ✅ Code review issues addressed
  • ✅ Documentation added (user-facing, developer, and technical deep-dive)
  • ✅ Code comments improved with cross-references
  • ✅ Codemod CLI command working and tested end-to-end
  • ✅ Codemod registry updated (18 codemods)
  • ✅ Zero occurrences of needs.activation.outputs.{text|title|body} in compiled workflows
  • ✅ All use steps.sanitized.outputs.*
  • ✅ Transformation loop handles partial matches correctly
  • ✅ Dependency logic aligned with compiler's auto-addition of needs: activation
  • ✅ File sizes reduced (e.g., brave.lock.yml: 67.0 KB → 58.5 KB, ~13% reduction)

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.


Changeset

  • Type: patch
  • Description: Ensure the substitution step always publishes known needs.* expression mappings and automatically rewrite needs.activation.outputs.{text,title,body} to steps.sanitized.outputs.*, keeping prompts referencing sanitized activation outputs working even when the markdown is updated at runtime.

Generated by Changeset Generator


✨ PR Review Safe Output Test - Run 22088201181

💥 [THE END] — Illustrated by Smoke Claude

Copilot AI and others added 2 commits February 17, 2026 01:47
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@pelikhan
Copy link
Contributor

The prompt generation only happens in activation, so it can only see needs job from activation job.

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@pelikhan
Copy link
Contributor

@copilot The prompt generation only happens in activation, so it can only see needs job from activation job.

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Add generation of needs expressions in prompt rendering Pregenerate all known needs.* expressions for runtime-import compatibility Feb 17, 2026
Copilot AI requested a review from pelikhan February 17, 2026 01:57
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 17, 2026

@copilot The prompt generation only happens in activation, so it can only see needs job from activation job.

Fixed in c6cfb39. The implementation now only generates needs.pre_activation.outputs.* and custom job outputs that run before activation. Removed generation of activation/agent/detection/safe-output job expressions since those run after activation and aren't accessible in the prompt creation step.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw help,version,id,add -- /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build1129710092/b059/vet.cfg tnet/tools/bash (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name tions/setup/js/n-nilfunc l -tests /home/REDACTED/.lo-unreachable=false node estl�� k/gh-aw/gh-aw/.github/workflows bash /opt/hostedtoolcache/node/24.13.-nilfunc l (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name /opt/hostedtoolcache/node/24.13.-test.short=true --noprofile users.noreply.girev-parse /usr/bin/bash node js/f�� 4007230800/.github/workflows bash it --noprofile (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --get-regexp --local ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha ithub-script/git/ref/tags/v8 --others 0/x64/bin/node --ignore-path ..git 64/pkg/tool/linurev-parse /usr/bin/git make t-ha�� ithub/workflows/blog-auditor.md git /usr/bin/git /golden.go git 0/x64/bin/node git (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v2 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha 0833-15816/test-4007230800/.github/workflows rev-parse .cfg --show-toplevel x_amd64/vet ache/go/1.25.0/x--show-toplevel git chec�� ai-moderator.md git ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet ./../.prettieriggit nly /usr/bin/git ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha 8fl6aaGAo .cfg 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha -unreachable=false /tmp/go-build1129710092/b185/vet.cfg /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha se 9710092/b114/vet.cfg ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha -bool -buildtags /usr/bin/chmod -errorsas -ifaceassert -nilfunc chmod &#43;x tup/sh/sanitize_path.sh&#39; &#39;:::/usr/bin:/usr/local/bin&#39; &amp;&amp; echo &#34;$PATH&#34; -tests /usr/local/bin/bash (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha -unreachable=false /tmp/go-build1129710092/b184/vet.cfg /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha h ../../../.prettierignore ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet 0/x64/bin/node Q_LWaf83A origin ache/go/1.25.0/xcopilot/add-needs-expressions-generation git cjs --show-toplevel rtcfg /usr/bin/git g/workflow/featu/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet g/workflow/impor-atomic ache/go/1.25.0/x-bool git (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --write **/*.cjs /home/REDACTED/work/gh-aw/node_modules/.bin/node **/*.json --ignore-path ../../../.pretti--show-toplevel node /hom�� --write l /home/REDACTED/.config/composer/vendor/bin/bash --ignore-path ../../../.prettirev-parse /usr/bin/git bash (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha --show-toplevel (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha OKEN }} (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha --show-toplevel x_amd64/vet ache/node/24.13.0/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha --show-toplevel x_amd64/vet ache/node/24.13.0/x64/bin/npm (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha --show-toplevel x_amd64/vet ache/node/24.13.0/x64/bin/node (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha --show-toplevel x_amd64/vet ache/node/24.13.0/x64/bin/npm (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha --show-toplevel x_amd64/vet bin/node (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 o (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 git /opt/hostedtoolc-nilfunc l rev-parse r: $owner, name:user.name node js/f�� .js&#39; --ignore-path .prettierigno-c=4 bash ules/.bin/node l (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 git /opt/hostedtoolcache/node/24.13.-nilfunc /home/REDACTED/worgit config /home/REDACTED/woruser.email node js/f�� .js&#39; --ignore-path .prettierignore bash bin/node --noprofile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 bash x_amd64/vet --noprofile -tests /usr/bin/grep x_amd64/vet js/f�� .js&#39; --ignore-path .prettierignore grep 0/x64/bin/git est&#34; (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 bash x_amd64/link l (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 .go x_amd64/vet --noprofile le_test.go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 bash x_amd64/compile l -tests /usr/bin/bash x_amd64/compile js/f�� .js&#39; --ignore-path .prettierignoremote.origin.url bash 64/bin/git l (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path ath ../../../.prettierignore ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet 0/x64/bin/node se 9710092/b049/vet/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/pre�� .cfg git js w/js/**/*.json&#39; --ignore-path ache/go/1.25.0/x../../../.prettierignore /usr/bin/git se 9710092/b221/vet--norc ache/go/1.25.0/x--noprofile git (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 9710092/b115/vet-atomic rgo/bin/bash git rev-�� ithub/workflows red-by: pelikhan-ifaceassert ache/node/24.13.-nilfunc /tmp/go-build112git -trimpath /opt/hostedtoolc--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 -tests /usr/sbin/bash x_amd64/vet tion�� k/gh-aw/gh-aw/.github/workflows bash (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha 4007230800/.github/workflows bash it --noprofile (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion --noprofile users.noreply.girev-parse /usr/local/bin/b--show-toplevel node js/f�� */*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path bash tnet/tools/git --noprofile (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 0/x64/bin/node --detach 9710092/b079/vet/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/pre�� 64/bin/bash git js w/js/**/*.json&#39; --ignore-path ache/go/1.25.0/x../../../.prettierignore /usr/bin/git se 9710092/b199/vet--norc bin/bash git (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 0/x64/bin/node se 9710092/b053/vetls-files ache/go/1.25.0/x--exclude-standard git js w/js/**/*.json&#39; --ignore-path ../../../.prettierignore ache/go/1.25.0/x64/pkg/tool/linujournal-or-kmsg /usr/bin/git se 9710092/b169/vet-10 p/bin/bash git (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state 64/bin/sh --noprofile (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name ath ../../../.pr--ignore-path ache/go/1.25.0/x.prettierignore /sh se 9710092/b062/vet/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/pre�� .cfg git js w/js/**/*.json&#39; --ignore-path ache/go/1.25.0/x../../../.prettierignore /usr/bin/git se 9710092/b217/vet--norc ache/go/1.25.0/x--noprofile git (http block)
  • https://api.github.com/user
    • Triggering command: /usr/bin/gh gh api user --jq .login (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login --show-toplevel W6/PDkLLQwhUd6zAsecurity 0/x64/bin/node se 9710092/b029/vet-c 599004f6199e5ab8&#34;prettier&#34; --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../../../.prettierignore git arne�� --show-toplevel ache/go/1.25.0/xconntrack 0/x64/bin/node se 9710092/b158/vetcommit 64/pkg/tool/linu-m git (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title Pregenerate all known needs.* expressions for runtime-import compatibility Pregenerate accessible needs.* expressions for runtime-import compatibility Feb 17, 2026
@pelikhan
Copy link
Contributor

@copilot we only need this feature for the "Substitute placeholders" step

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 17, 2026

@copilot we only need this feature for the "Substitute placeholders" step

Fixed in 8ab0275. Known needs.* expressions are now added only to the "Substitute placeholders" step, not to the "Create prompt with built-in context" step. The prompt creation step now only has expressions extracted from markdown, while the substitution step has both markdown expressions and known needs expressions.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name ache/go/1.25.0/x64/pkg/tool/linu-lang=go1.25 (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha runs/20260217-021916-11369/test-1526382393/.github/workflows (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v2 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha 1916-11369/test-3571223943/.github/workflows -buildtags _.a -errorsas -ifaceassert -nilfunc infocmp -1 s-expressions-generation -tests 0/x64/bin/node (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha g/cli config /usr/bin/infocmp remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows rev-parse 0/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/pkg/cli resolved$ /opt/hostedtoolcache/node/24.13.0/x64/bin/node (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha k/gh-aw/gh-aw/.github/workflows (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha e: ${{ secrets.TOKEN }} x_amd64/vet /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel -goversion /usr/bin/git -c=4 -nolocalimports -importcfg git rev-�� tup/sh/sanitize_path.sh&#39; &#39;:::/usr/bin:/usr/local/bin&#39; &amp;&amp; echo &#34;$PATH&#34; /home/REDACTED/work/gh-aw/gh-aw/scripts/lint_error_messages_test.go /usr/bin/infocmp get --local ache/go/1.25.0/x--show-toplevel infocmp (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha flib/difflib.go (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha .egg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config /usr/bin/git remote.origin.urgit (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config /usr/bin/git remote.origin.urgit (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha } (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 344881/b078/vet.cfg ache/go/1.25.0/x64/pkg/tool/linu-lang=go1.25 (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 344881/b116/vet.cfg ache/go/1.25.0/x64/pkg/tool/linu-test.short=true (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 344881/b066/vet.cfg x_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 user.name x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 344881/b132/vet.cfg x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 344881/b083/vet.cfg ache/go/1.25.0/x64/pkg/tool/linu-buildmode=exe (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 344881/b084/vet.cfg x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha 3571223943/.github/workflows security 64/bin/git OUTPUT -d 168.63.129.16 /opt/hostedtoolcache/go/1.25.0/x-pack -uns�� neration /tmp/go-build142344881/b017/vet.cfg 64/pkg/tool/linux_amd64/vet INVALID,NEW -j DROP 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name (http block)
  • https://api.github.com/user
    • Triggering command: /usr/bin/gh gh api user --jq .login (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login ithub/workflows 344881/b219/vet.cfg ache/go/1.25.0/x64/pkg/tool/linu-importcfg (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login ithub/workflows 344881/b222/vet.-c=4 ache/go/1.25.0/x-nolocalimports (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Contributor

@copilot add tests

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 17, 2026

@copilot add tests

Added in 239d94a. Comprehensive test suite includes:

  • TestParseNeedsField - tests job dependency parsing
  • TestKnownNeedsExpressionsIntegration - end-to-end test verifying expressions are only in substitution step
  • TestParseNeedsFieldArrayTypes - array handling edge cases

Total: 10 test functions with 34 test cases covering expression generation, filtering, normalization, and integration scenarios.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name ache/node/24.13.0/x64/bin/node se 3488428/b014/vet-C .cfg git estl�� */*.ts&#39; &#39;**/*.js.github/workflows/test.md ache/go/1.25.0/x64/pkg/tool/linu-nolocalimports tions/setup/js/node_modules/.bin-importcfg get --local .cfg git (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name 0/x64/bin/node se 3488428/b034/vetrev-parse ache/go/1.25.0/x--show-toplevel git 8d51�� 2437261223/.github/workflows ache/go/1.25.0/x-10 de/node/bin/git se 3488428/b233/vetrev-parse (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha runs/20260217-023809-14783/test-4031542094/.github/workflows ../../../**/*.json ache/node/24.13.0/x64/bin/node --ignore-path ../../../.prettirev-parse /usr/bin/git go t-12�� sistency_GoAndJavaScript4017218020/001/test-simple-frontmatter.md -parallel=4 /usr/bin/git -run=^Test ./... -short git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha 3809-14783/test-2437261223/.github/workflows /opt/hostedtoolcache/go/1.25.0/x-10 .cfg -unreachable=falgit /tmp/go-build193rev-parse ode-gyp-bin/node--show-toplevel node js/f�� s-expressions-generation bash ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet --noprofile (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha set-url origin /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha SameOutput1262424521/001/stability-test.md **/*.cjs /opt/hostedtoolcache/node/24.13.0/x64/lib/node_modules/npm/node_-nolocalimports **/*.json --ignore-path ../../../.pretti--show-toplevel sh -c runs/20260217-023809-14783/test-448009312 git /home/REDACTED/.cargo/bin/git --show-toplevel (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha t0 m0s /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet nerateKnownNeedsgit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha ty_test.go .go son ignore (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha set-url origin /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha h ../../../.prettierignore x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --write **/*.cjs /home/REDACTED/work/_temp/ghcca-node/node/bin/sh **/*.json --ignore-path ../../../.pretti--show-toplevel sh -c &#34;prettier&#34; --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../.git l /usr/local/sbin/git --show-toplevel (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha 9750511/b389/gitutil.test **/*.cjs 9750511/b389/importcfg.link **/*.json --ignore-path ../../../.pretti--show-toplevel IyMn_axNhnwyO/rvz2RpjwQG5IM3iBPkwt/R2F3QIql7sijNKpmEq80/2FayTf2IyMn_axNhnwyO -c ry=1 git 9750511/b389/_pkg_.a --show-toplevel (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 ache/go/1.25.0/x64/pkg/tool/linu-test.run=^Test x_amd64/compile 3488428/b333/_pkgit (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 ache/go/1.25.0/x64/pkg/tool/linumain ache/node/24.13.0/x64/bin/node se 3488428/b135/vetinit .cfg git _har�� --show-toplevel ache/go/1.25.0/x/tmp/gh-aw/aw.pa-nolocalimports ache/node/24.13.0/x64/bin/node se 3488428/b188/vetconfig ache/go/1.25.0/x--get git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 ache/go/1.25.0/xmain x_amd64/compile se 3488428/b134/vetrev-parse .cfg x_amd64/compile _har�� .egg ache/go/1.25.0/x-c=4 ache/node/24.13.-nolocalimports se ase,codename,allconfig ache/go/1.25.0/x--get git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 ache/go/1.25.0/x64/pkg/tool/linugithub.com/github/gh-aw/pkg/envutil x_amd64/vet se 3488428/b166/vetrev-parse .cfg x_amd64/vet 0/x6�� ty-test.md ache/go/1.25.0/x64/pkg/tool/linu-nolocalimports x_amd64/compile se 3488428/b197/vetrev-parse ache/go/1.25.0/x--show-toplevel x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 ache/go/1.25.0/x64/pkg/tool/linugithub.com/github/gh-aw/pkg/fileutil 64/bin/node se 3488428/b189/vetinit .cfg git 0/x6�� --show-toplevel ache/go/1.25.0/xfeature-branch x_amd64/link se 3488428/b198/vetrev-parse ache/go/1.25.0/x--show-toplevel x_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet x_amd64/compile se 3488428/b202/vetconfig .cfg x_amd64/compile 0/x6�� --show-toplevel ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet ache/node/24.13.0/x64/bin/node se 3488428/b201/vetrev-parse ache/go/1.25.0/x--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet x_amd64/vet se 3488428/b218/vetconfig .cfg x_amd64/vet _har�� .js&#39; --ignore-path .prettierignore ache/go/1.25.0/xBranch commit 0/x64/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/node se 3488428/b203/vetinit ache/go/1.25.0/x64/pkg/tool/linuuser.email git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path ath ../../../.prettierignore x_amd64/vet /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 3488428/b020/vet-C .cfg x_amd64/compile tion�� --show-toplevel ache/go/1.25.0/xtest@example.com-nolocalimports h se 3488428/b159/vetrev-parse ache/go/1.25.0/x--show-toplevel gh (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha 2437261223/.github/workflows ache/go/1.25.0/x-10 de/node/bin/git se 3488428/b233/vetrev-parse (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion se 3488428/b053/vetrev-parse ache/go/1.25.0/x--show-toplevel git 8d51�� --show-toplevel ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet 64/bin/git se 3488428/b232/vetrev-parse cal/bin/bash git (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state tions/setup/node_modules/.bin/sh get clKJ/jiBd-_QcHoqrev-parse ache/go/1.25.0/x--show-toplevel git _inc�� /workflows ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet ache/node/24.13.0/x64/bin/node set-url ache/go/1.25.0/xremote 3488428/b152/vet-v git (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name ath ../../../.pr**/*.json C17Frju/rdgbZIlk--ignore-path /usr/bin/git (http block)
  • https://api.github.com/user
    • Triggering command: /usr/bin/gh gh api user --jq .login --show-toplevel x_amd64/vet /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login --show-toplevel ache/go/1.25.0/x-c=4 ules/.bin/sh se 3488428/b120/vet/tmp/js-hash-test-27333124/test-hash.js ache/go/1.25.0/x/home/REDACTED/work/gh-aw/gh-aw/.github/workflows/archie.md git _inc�� *.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../../../.prettierignore ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet 0/x64/bin/git --abbrev-ref HEAD /opt/hostedtoolc-v git (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login --show-toplevel ache/go/1.25.0/xUpdate initial file h se 3488428/b121/vetrev-parse ache/go/1.25.0/x--show-toplevel git _inc�� *.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../../../.prettierignore ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet k/_temp/ghcca-node/node/bin/bash --abbrev-ref HEAD /opt/hostedtoolcgithub.event.inputs.branch git (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Contributor

@copilot The step that computes the clean needs.activation.output.text need to be placed before the steps that generate the prompt. And the expression "needs.activation.outputs.text" need to be replaced by the local step name.outputs.text (same for title, body).
Add codemod to patch those expressions.

@github-actions
Copy link
Contributor

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@pelikhan
Copy link
Contributor

@copilot instructions and documentation about needs.agent.outputs.text becoming steps.sanitized.text

@github-actions
Copy link
Contributor

Agent Container Tool Check ✅

Tool Status Version
bash 5.2.21
sh available
git 2.52.0
jq 1.7
yq 4.52.2
curl 8.5.0
gh 2.86.0
node 20.20.0
python3 3.12.3
go 1.24.13
java 21.0.10
dotnet 10.0.102

Result: 12/12 tools available ✅

🔧 Tool validation by Agent Container Smoke Test for issue #16277

@github-actions
Copy link
Contributor

Smoke Temporary ID completed successfully. Temporary ID validation passed.

@github-actions
Copy link
Contributor

Smoke Project completed successfully. All project operations validated.

@github-actions
Copy link
Contributor

PR titles: Fix Go linting errors in known_needs_expressions_test.go; Document agentic engine architecture and extensibility patterns
GitHub MCP: ✅
Serena MCP: ✅
Playwright: ✅
File write + cat: ✅
Build (make build): ✅
Overall status: PASS

🔮 The oracle has spoken through Smoke Codex for issue #16277

@github-actions
Copy link
Contributor

🧪 Smoke Test Results: §22088201180

PRs Reviewed:

Results:

  • ✅ GitHub MCP Testing
  • ✅ Safe Inputs GH CLI Testing
  • ❌ Serena MCP Testing (not available)
  • ✅ Playwright Testing
  • ✅ File Writing Testing
  • ✅ Bash Tool Testing
  • ✅ Discussion Query Testing
  • ✅ Build gh-aw

Status: PARTIAL PASS (1/8 failed)

@Mossaka @app/copilot-swe-agent

📰 BREAKING: Report filed by Smoke Copilot for issue #16277

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Reviewed as part of smoke test §22088201180

This PR systematically adds GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_* environment variables across all workflow lock files, making pre-activation outputs accessible in setup_globals context. The changes are consistent and follow the established pattern.

📰 BREAKING: Report filed by Smoke Copilot for issue #16277

GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: ${{ needs.pre_activation.outputs.activated }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consistent pattern - these env vars are now available across all workflow files. Nice systematic change!

@github-actions
Copy link
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 17, 2026

@copilot instructions and documentation about needs.agent.outputs.text becoming steps.sanitized.text

Added in e082f19. Documentation includes:

User-facing (docs/reference/templating.md):

  • New "Automatic Expression Transformations" section
  • Explains why needs.activation.outputs.* becomes steps.sanitized.outputs.*
  • Examples and notes about runtime-import compatibility

Developer (AGENTS.md):

  • New "Expression Transformations in Workflows" section
  • Implementation details and debug logging
  • Cross-references to code

Technical deep-dive (scratchpad/activation-output-transformations.md):

  • Complete overview with problem statement, solution, and algorithm
  • Test coverage and historical context
  • Code locations and related files

Code comments (compiler_activation_jobs.go):

  • Detailed explanation of sanitized step
  • Cross-reference to transformation function

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name x_amd64/link user.name b/gh-aw/pkg/strirev-parse (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name ode age (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name tions/setup/node-nolocalimports (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha runs/20260217-063032-11008/test-928374540/.github/workflows -v /opt/hostedtoolcache/go/1.25.0/x64/bin/go (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha 3032-11008/test-1790889749/.github/workflows on 64/pkg/tool/linux_amd64/vet **/*.json erignore ../../../.pretti--show-toplevel 64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build3962322184/b232/vet.cfg ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha NxAhq5YBL -tests /opt/hostedtoolcache/go/1.25.0/x64/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha prettier --write /home/REDACTED/.dotnet/tools/git !../../../pkg/wogit --ignore-path ../../../.pretti--show-toplevel git chec�� copilot/add-needs-expressions-generation (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha --get remote.origin.url /usr/bin/git -c=4 -nolocalimports -importcfg git conf�� user.email test@example.com /usr/bin/git ../pkg/workflow/git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha se 2322184/b198/vet.cfg ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha 2899519/b418/timeutil.test -trimpath 2899519/b418/importcfg.link -p main -lang=go1.25 iiEtxJ64HjgrP/g5FpiJ9ENbZatjTay5oJ/BhqTCoRMGewfss9ZXZGY/X4XoDkfiTest User rev-�� ry=1 -dwarf=false ache/node/24.13.0/x64/bin/node go1.25.0 -c=4 -nolocalimports git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha ZfW18FhUoxlWnfn7lKMy/ZfW18FhUoxlWnfn7lKMy -goversion /usr/bin/git -c=4 -nolocalimports -importcfg git rev-�� tup/sh/sanitize_path.sh&#39; &#39;/usr/bin:/usr/local/bin:::&#39; &amp;&amp; echo &#34;$PATH&#34; /home/REDACTED/work/gh-aw/gh-aw/scripts/lint_error_messages_test.go /usr/bin/git runtime import k/gh-aw/gh-aw/dorev-parse 64/pkg/tool/linu--show-toplevel /usr/bin/git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha js/**/*.json&#39; --ignore-path ../../../.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha -c=4 -nolocalimports -importcfg /tmp/go-build3662899519/b405/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/sliceutil/sliceutil.go /home/REDACTED/work/gh-aw/gh-aw/pkg/sliceutil/sliceutil_test.go (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha prettier --write 0/x64/bin/node !../../../pkg/wogit --ignore-path ../../../.pretti--show-toplevel git t-ha�� ithub/workflows/archie.md (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha dXXxIkvSN -tests ache/go/1.25.0/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 2322184/b041/vet.cfg x_amd64/vet pull.rebase (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 .cfg x_amd64/compile pull.rebase (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 2322184/b030/vet.cfg x_amd64/vet pull.rebase (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 2322184/b052/vet.cfg x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 2322184/b043/vet.cfg ules/.bin/sh (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 2322184/b047/vet.cfg tions/node_modules/.bin/sh pull.rebase (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 2322184/b060/vet.cfg x_amd64/compile pull.rebase (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path re (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 k/gh-aw/gh-aw/do-d k/gh-aw/gh-aw/do-c ache/go/1.25.0/x64/pkg/tool/linu-goversion (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha 1790889749/.github/workflows (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo de/node/bin/bash (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state .cfg (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name (http block)
  • https://api.github.com/user
    • Triggering command: /usr/bin/gh gh api user --jq .login rics-collector.m.prettierignore hecksum-verification.md x_amd64/vet ng/copilot-schembash ocs/blog/2026-01--norc ocs/blog/2026-01--noprofile x_amd64/vet ocs/�� ocs/blog/2026-01-13-meet-the-workflows-tool-infrastructure.md ocs/blog/2026-01-13-meet-the-workflows-continuous-improvement.md x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login rics-collector.m.prettierignore hecksum-verification.md x_amd64/vet ng/copilot-schemgit ocs/blog/2026-01status ocs/blog/2026-01--short x_amd64/vet ocs/�� ocs/blog/2026-01-13-meet-the-workflows-tool-infrastructure.md ocs/blog/2026-01-13-meet-the-workflows-continuous-improvement.md x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api user --jq .login */*.json&#39; &#39;!../../../pkg/workflogo1.25.0 2322184/b048/vet.cfg .cfg (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💥 Automated smoke test review - all systems nominal!

💥 [THE END] — Illustrated by Smoke Claude for issue #16277

@pelikhan
Copy link
Contributor

@copilot add a codemod that converts the old expressions to the new expression

…tputs

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 17, 2026

@copilot add a codemod that converts the old expressions to the new expression

Added in d5322e1. Created activation-outputs-to-sanitized-step codemod that users can run to update existing markdown files:

List available codemods:

gh aw fix --list-codemods

Dry-run (see what would change):

gh aw fix my-workflow

Apply transformation:

gh aw fix my-workflow --write

The codemod uses regex with word boundary checking to transform needs.activation.outputs.{text|title|body}steps.sanitized.outputs.{text|title|body}, while preserving partial matches like text_custom. Includes 10 test cases covering all scenarios.

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@pelikhan pelikhan merged commit c983e89 into main Feb 17, 2026
@pelikhan pelikhan deleted the copilot/add-needs-expressions-generation branch February 17, 2026 06:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants