Skip to content

Commit 37a491d

Browse files
authored
Repo Assist: require explicit noop safe output when no action is taken (#4026)
The scheduled Repo Assist run completed successfully but produced no safe outputs, triggering a failure issue despite no runtime/job failure. The workflow prompt allowed a “no action” outcome without explicitly requiring a safe output artifact. - **Root cause** - Repo Assist guidance emphasized restraint and allowed “no action” runs, but did not explicitly require emitting a safe output in that branch. - This permitted successful runs to end with empty safe outputs (`items: []`), which the conclusion stage treats as a failure condition. - **Change** - Updated `.github/workflows/repo-assist.md` with a strict safe-output requirement: - If the agent determines there is truly nothing useful to do, it must emit **exactly one** `noop` safe output with a brief reason. - It must not end with empty safe outputs. - **Behavioral impact** - “No work this run” is now represented as an explicit, machine-readable outcome (`noop`) instead of an empty output set. - Preserves existing task-selection and action behavior; only clarifies terminal behavior for the no-op path. ```md **Safe output requirement**: Never end with empty safe outputs. If, after completing all required checks, you determine there is truly nothing useful to do this run, you must emit exactly one `noop` safe output with a brief reason (and no other safe outputs). ``` > [!WARNING] > > <details> > <summary>Firewall rules blocked me from connecting to one or more addresses (expand for details)</summary> > > #### I tried to connect to the following addresses, but was blocked by firewall rules: > > - `example.com` > - Triggering command: `/tmp/go-build3960202725/b510/launcher.test /tmp/go-build3960202725/b510/launcher.test -test.testlogfile=/tmp/go-build3960202725/b510/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true 1.10.2/active_help.go 1.10.2/args.go x_amd64/vet --gdwarf-5 pickfirst/intern-atomic -o x_amd64/vet --de�� g_.a --debug-prefix-m-ifaceassert x_amd64/vet -g&#34; resolver/delegat-atomic -I x_amd64/vet` (dns block) > - Triggering command: `/tmp/go-build2572188529/b514/launcher.test /tmp/go-build2572188529/b514/launcher.test -test.testlogfile=/tmp/go-build2572188529/b514/testlog.txt -test.paniconexit0 -test.timeout=10m0s 0163�� /tmp/go-build935016357/b094/vet.cfg /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel-ifaceassert 64/pkg/tool/linux_amd64/vet acehttp@v1.43.0/git --local /opt/hostedtoolc-v 64/pkg/tool/linuorigin` (dns block) > - `invalid-host-that-does-not-exist-12345.com` > - Triggering command: `/tmp/go-build3960202725/b492/config.test /tmp/go-build3960202725/b492/config.test -test.testlogfile=/tmp/go-build3960202725/b492/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true @v1.1.3/cpu/cpu.go 7008033/b151/ x_amd64/vet /tmp/go-build352/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet ternal/engine/wa-unsafeptr=false x86_64-linux-gnu-unreachable=false x_amd64/vet 7008�� CsQlTmGwP -I x_amd64/vet --gdwarf-5 --64 -o x_amd64/vet` (dns block) > - Triggering command: `/tmp/go-build2572188529/b496/config.test /tmp/go-build2572188529/b496/config.test -test.testlogfile=/tmp/go-build2572188529/b496/testlog.txt -test.paniconexit0 -test.timeout=10m0s 0163�� fy66OxATrrbMgUIjgo1.25.8 .cfg 64/pkg/tool/linu-nolocalimports -c=4 -nolocalimports -importcfg 64/pkg/tool/linuREDACTED 0163�� /tmp/go-build935016357/b094/vet.cfg /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel-ifaceassert 64/pkg/tool/linux_amd64/vet acehttp@v1.43.0/git --local /opt/hostedtoolc-v 64/pkg/tool/linuorigin` (dns block) > - `nonexistent.local` > - Triggering command: `/tmp/go-build3960202725/b510/launcher.test /tmp/go-build3960202725/b510/launcher.test -test.testlogfile=/tmp/go-build3960202725/b510/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true 1.10.2/active_help.go 1.10.2/args.go x_amd64/vet --gdwarf-5 pickfirst/intern-atomic -o x_amd64/vet --de�� g_.a --debug-prefix-m-ifaceassert x_amd64/vet -g&#34; resolver/delegat-atomic -I x_amd64/vet` (dns block) > - Triggering command: `/tmp/go-build2572188529/b514/launcher.test /tmp/go-build2572188529/b514/launcher.test -test.testlogfile=/tmp/go-build2572188529/b514/testlog.txt -test.paniconexit0 -test.timeout=10m0s 0163�� /tmp/go-build935016357/b094/vet.cfg /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel-ifaceassert 64/pkg/tool/linux_amd64/vet acehttp@v1.43.0/git --local /opt/hostedtoolc-v 64/pkg/tool/linuorigin` (dns block) > - `slow.example.com` > - Triggering command: `/tmp/go-build3960202725/b510/launcher.test /tmp/go-build3960202725/b510/launcher.test -test.testlogfile=/tmp/go-build3960202725/b510/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true 1.10.2/active_help.go 1.10.2/args.go x_amd64/vet --gdwarf-5 pickfirst/intern-atomic -o x_amd64/vet --de�� g_.a --debug-prefix-m-ifaceassert x_amd64/vet -g&#34; resolver/delegat-atomic -I x_amd64/vet` (dns block) > - Triggering command: `/tmp/go-build2572188529/b514/launcher.test /tmp/go-build2572188529/b514/launcher.test -test.testlogfile=/tmp/go-build2572188529/b514/testlog.txt -test.paniconexit0 -test.timeout=10m0s 0163�� /tmp/go-build935016357/b094/vet.cfg /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel-ifaceassert 64/pkg/tool/linux_amd64/vet acehttp@v1.43.0/git --local /opt/hostedtoolc-v 64/pkg/tool/linuorigin` (dns block) > - `this-host-does-not-exist-12345.com` > - Triggering command: `/tmp/go-build3960202725/b519/mcp.test /tmp/go-build3960202725/b519/mcp.test -test.testlogfile=/tmp/go-build3960202725/b519/testlog.txt -test.paniconexit0 -test.timeout=10m0s -test.v=true cfg /tmp/go-build3527008033/b151/ x_amd64/vet 7008033/b288/ telabs/wazero/in/usr/bin/runc --64 x_amd64/vet cfg 7008033/b444/_pkg_.a -I x_amd64/vet --gdwarf-5 ntio/asm/cpu -o x_amd64/vet` (dns block) > - Triggering command: `/tmp/go-build2572188529/b523/mcp.test /tmp/go-build2572188529/b523/mcp.test -test.testlogfile=/tmp/go-build2572188529/b523/testlog.txt -test.paniconexit0 -test.timeout=10m0s` (dns block) > > If you need me to access, download, or install something from one of these locations, you can either: > > - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled > - Add the appropriate URLs or hosts to the custom allowlist in this repository's [Copilot coding agent settings](https://github.com/github/gh-aw-mcpg/settings/copilot/coding_agent) (admins only) > > </details>
2 parents 68ce183 + 7f01fad commit 37a491d

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

.github/workflows/repo-assist.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,8 @@ The weighting scheme naturally adapts to repo state:
226226

227227
**Progress Imperative**: Your primary purpose is to make forward progress on the repository. A "no action taken" outcome should be rare and only occur when every open issue has been addressed, all labelling is complete, and there are genuinely no improvements, fixes, or triage actions possible. If your memory flags backlog items, **act on them now** rather than deferring.
228228

229+
**Safe output requirement**: Never end with empty safe outputs. If, after completing all required checks, you determine there is truly nothing useful to do this run, you must emit exactly one `noop` safe output with a brief reason (and no other safe outputs).
230+
229231
Always do Task 11 (Update Monthly Activity Summary Issue) every run. In all comments and PR descriptions, identify yourself as "Repo Assist". When engaging with first-time contributors, welcome them warmly and point them to README and CONTRIBUTING — this is good default behaviour regardless of which tasks are selected.
230232

231233
### Task 1: Issue Labelling
@@ -424,4 +426,4 @@ Maintain a single open issue titled `[Repo Assist] Monthly Activity {YYYY}-{MM}`
424426
- **Systematic**: use the backlog cursor to process oldest issues first over successive runs. Do not stop early.
425427
- **Release preparation**: use your judgement on each run to assess whether a release is warranted (significant unreleased changes, changelog out of date). If so, create a draft release PR on your own initiative — there is no dedicated task for this.
426428
- **Quality over quantity**: noise erodes trust. Do nothing rather than add low-value output.
427-
- **Bias toward action**: While avoiding spam, actively seek ways to contribute value within the two selected tasks. A "no action" run should be genuinely exceptional.
429+
- **Bias toward action**: While avoiding spam, actively seek ways to contribute value within the two selected tasks. A "no action" run should be genuinely exceptional.

0 commit comments

Comments
 (0)