Skip to content

Move reaction step after generate_aw_info for faster user feedback#21783

Merged
pelikhan merged 3 commits intomainfrom
copilot/update-compiler-heart-reaction
Mar 19, 2026
Merged

Move reaction step after generate_aw_info for faster user feedback#21783
pelikhan merged 3 commits intomainfrom
copilot/update-compiler-heart-reaction

Conversation

Copy link
Contributor

Copilot AI commented Mar 19, 2026

The reaction step (e.g. 👀 ❤️) was placed late in the activation job — after resolve-host-repo, artifact prefix, aw_info, secret validation, and checkout steps — adding unnecessary latency before the user sees any feedback.

Changes

  • compiler_activation_job.go: Moves generate_aw_info (and its prerequisites resolve-host-repo/artifact-prefix) before the app token minting and reaction step. generate_aw_info runs first so its data is always captured even if the reaction step fails, then the reaction step fires as early as possible for user feedback.

Before:

Setup Scripts → resolve-host-repo → artifact-prefix → generate_aw_info → validate-secret → checkout .github → app-token-mint → react

After:

Setup Scripts → resolve-host-repo → artifact-prefix → generate_aw_info → app-token-mint → react → validate-secret → checkout .github
  • compiler_activation_jobs_test.go: Adds TestBuildActivationJob_ReactionAfterSetupScripts to assert the step order: Setup Scriptsgenerate_aw_inforeact.
  • aw_info_before_validate_secret_test.go: Removes stale comment claiming generate_aw_info is the first step after setup.
  • All 175 .lock.yml files recompiled to reflect the new ordering.
Original prompt

Update compiler such that Add heart reaction step should be inserted immediately after setup-scripts step so that it is shown as fast as possible to the user

https://github.com/github/gh-aw/actions/runs/23294151374/job/67737067343#step:7:1


📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.

The heart reaction step (and activation app token minting if needed) is
now inserted immediately after the Setup Scripts step in the activation
job. This ensures users see the reaction feedback as fast as possible,
rather than waiting for resolve-host-repo, artifact prefix, aw_info,
secret validation, checkout, and other steps to complete first.

Also adds a test to validate the new step ordering.

Recompiles all 175 lock files to reflect the new order.

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Update compiler to insert heart reaction step after setup-scripts Move reaction step immediately after setup-scripts for faster user feedback Mar 19, 2026
Copilot AI requested a review from pelikhan March 19, 2026 12:46
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/add_reaction.cjs');
await main();
- name: Generate agentic run info
Copy link
Contributor

Choose a reason for hiding this comment

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

@copilot run this step first. We need this info in case add reaction fails.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done in f30c3d5. generate_aw_info now runs before the reaction step so its data is always captured even if the reaction fails. New order: Setup Scriptsgenerate_aw_inforeact.

…on failure

The generate_aw_info step now runs before the reaction step so that aw_info
data is always captured even if the reaction step fails. The order becomes:
Setup Scripts → generate_aw_info → react → secret validation → checkout ...

Recompile all 175 lock files to reflect the new step ordering.

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

Copilot AI commented Mar 19, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

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 /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 66028d21 (http block)
    • 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 rt (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 /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config /usr/bin/git remote.origin.urgit (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 archie.md --silent er: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabl--show-toplevel tierignore (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 479722/b018/vet.owner=github r: $owner, name:-f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha -tags !integration /opt/hostedtoolcache/node/24.14.0/x64/bin/node 120s ./pkg/workflow/ ./pkg/parser/ node /tmp�� /tmp/TestHashStability_SameInputSameOutput675747680/001/stability-test.md 64/pkg/tool/linux_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 /opt/hostedtoolcache/go/1.25.0/xconfig /usr/bin/git ithub/workflows /tmp/go-build140rev-parse repository(owne--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linuconfig /usr/bin/git te &#39;scripts/**/*git /tmp/go-build140rev-parse k/gh-aw/gh-aw/ac--show-toplevel git (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 graphql -f /usr/bin/git -f owner=github -f git -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config /usr/bin/infocmp remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config ache/node/24.14.0/x64/bin/node remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel ache/go/1.25.0/x-tests /usr/bin/git lex-frontmatter-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 /home/REDACTED/work/gh-aw/gh-aw/.github/workflows rev-parse /usr/bin/infocmp re --log-level=egit (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 rev-parse 0/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha 443697/b001/workflow.test x_amd64/vet 443697/b001/importcfg.link (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 graphql -f /usr/bin/git -f owner=github -f git -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config /usr/bin/infocmp remote.origin.urgit (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 rev-parse ache/node/24.14.0/x64/bin/node re --log-level=egit (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 on&#39; --ignore-path ../../../.pret.prettierignore cfg 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha on&#39; --ignore-patremote.origin.url (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha --noprofile -tests er: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabl--show-toplevel (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha ath ../../../.pr**/*.json (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha --noprofile -tests /bin/sh (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha ithub/workflows -tests /opt/hostedtoolcache/go/1.25.0/x64/bin/node (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 ./../pkg/workflow/js/**/*.json&#39; --ignore-path cfg x_amd64/link (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha ./../pkg/workflo-f cfg 64/pkg/tool/linu-f (http block)

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

Copilot AI changed the title Move reaction step immediately after setup-scripts for faster user feedback Move reaction step after generate_aw_info for faster user feedback Mar 19, 2026
Copilot AI requested a review from pelikhan March 19, 2026 13:08
@pelikhan pelikhan marked this pull request as ready for review March 19, 2026 13:11
Copilot AI review requested due to automatic review settings March 19, 2026 13:11
@pelikhan pelikhan merged commit 026f66e into main Mar 19, 2026
77 of 78 checks passed
@pelikhan pelikhan deleted the copilot/update-compiler-heart-reaction branch March 19, 2026 13:12
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR reorders the activation job steps so generate_aw_info runs as early as possible and the “react” step runs shortly after, reducing time-to-first-feedback for users.

Changes:

  • Reordered activation job steps to run resolve-host-repo/artifact-prefix/generate_aw_info before app token minting and the reaction step, and moved secret validation + .github checkout later.
  • Added a unit test to assert the relative ordering of Setup Scriptsgenerate_aw_inforeact.
  • Regenerated workflow .lock.yml files to reflect the new step ordering and updated a stale test comment.

Reviewed changes

Copilot reviewed 29 out of 29 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pkg/workflow/compiler_activation_job.go Reorders activation job steps so generate_aw_info and reactions happen earlier.
pkg/workflow/compiler_activation_jobs_test.go Adds test asserting early ordering of setup/aw_info/react steps.
pkg/workflow/aw_info_before_validate_secret_test.go Removes/updates stale comment about step ordering.
.github/workflows/workflow-generator.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/unbloat-docs.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/tidy.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-temporary-id.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-project.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-multi-pr.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-gemini.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-copilot.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-copilot-arm.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-codex.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/smoke-claude.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/security-review.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/scout.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/q.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/pr-nitpick-reviewer.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/poem-bot.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/plan.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/pdf-summary.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/mergefest.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/grumpy-reviewer.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/craft.lock.yml Regenerated lockfile reflecting earlier reaction step placement (and moved .github checkout accordingly).
.github/workflows/cloclo.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/changeset.lock.yml Regenerated lockfile reflecting earlier reaction step placement.
.github/workflows/brave.lock.yml Regenerated lockfile reflecting earlier reaction step placement (and moved .github checkout accordingly).
.github/workflows/archie.lock.yml Regenerated lockfile reflecting earlier reaction step placement (and moved .github checkout accordingly).
.github/workflows/ace-editor.lock.yml Regenerated lockfile reflecting earlier reaction step placement.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +121 to 125
// Add reaction step right after generate_aw_info so it is shown to the user as fast as
// possible. generate_aw_info runs first so its data is captured even if the reaction fails.
// This runs in the activation job so it can use any configured github-token or github-app.
if hasReaction {
reactionCondition := BuildReactionCondition()
Comment on lines 15 to 17
// TestValidateSecretBeforeAwInfo verifies that the generate_aw_info step in the activation job
// appears before the validate-secret step. generate_aw_info is now the first step after setup,
// so it must precede validate-secret.
// appears before the validate-secret step.
func TestValidateSecretBeforeAwInfo(t *testing.T) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants