Repository navigation
Fix AW runtime setup and concurrency ledger failures - #70859
Conversation
Preserve non-sensitive literal Gemini engine environment settings in shell tools, provision mounted Node for Serena Go projects, and specify exact concurrency ledger fields. Include focused regressions and regenerated workflow locks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅
|
|
✅ PR Code Quality Reviewer completed the code quality review.
|
|
✅ Ponytail Reviewer completed successfully! Ponytail ReviewerOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft. Commit pushed:
|
|
✅ Test Quality Sentinel completed test quality analysis. Test Quality SentinelOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
🏗️ Design Decision Gate — ADR RequiredThis PR adds more than 100 new lines in 📄 Draft ADR committed: The draft is about the main design change in
📋 What to do next
Once the ADR is linked, this gate will re-run and check that the implementation matches the decision. 📋 Michael Nygard ADR Format Reference
|
Comment MemoryPeek at saved memory (pr-code-quality-reviewer)Note This comment is managed by comment memory.Expand the saved memory block to view or edit the persistent context for this thread.
|
There was a problem hiding this comment.
Review
Two test-quality issues are worth correcting: the ledger regression does not actually test rejection of the tool alias, and the Serena ordering assertion can match a step from another job instead of jobs.agent. Inline comments contain the details. No blocking runtime defect was confirmed from the capped diff; validation was static only.
🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt50 · 3.78 AIC · ⌖ 0.687 AIC · ⊞ 1.6K
Comment /review to run again
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /diagnosing-bugs and /tdd — this is a focused, well-tested incident fix. Approving with one minor suggestion.
📋 Key Themes & Highlights
Key Themes
- One finding: the new
geminiSensitiveEnvNameregex (pkg/workflow/gemini_tools.go) does unbounded substring matching, which over-filters benign names (e.g.AUTHOR_NAME,KEYSTONE_REGION). Fail-safe bias is reasonable for a security allowlist, but it should be a documented tradeoff and covered by a false-positive test case, not just theACCESS_TOKENtrue-positive case.
Positive Highlights
- ✅
/diagnosing-bugs: each of the three incident causes (Gemini env redaction, Serena Node runtime, ledger field alias) has a regression test added inworkflow_health_regression_test.goandserena_go_runtime_test.gothat fails without the fix and passes with it — verified locally (targeted go test run against HEAD, all green). - ✅
/codebase-design: thecomputeGeminiShellToolsextraction is a clean, behavior-preserving refactor (confirmed against existingcomputeGeminiToolsCoresubtests, all passing unchanged) that makes the allowlist mapping easier to read. - ✅
/tdd: the new ledger example test parses the literal markdown example against the live JSON schema and asserts thetool-vs-analyzed_toolalias is rejected — directly encodes the root cause as an executable spec, not just prose guidance. - ✅ Root cause addressed, not just symptom: the Gemini fix preserves explicit literal
engine.envnames while still excluding secrets/credentials/runtime expressions via the existing exclusion pipeline, rather than special-casing the one conformance variable that broke.
@copilot please address the review comment above.
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · 74.9 AIC · ⌖ 14 AIC · ⊞ 10.2K
Comment /matt to run again
There was a problem hiding this comment.
🟡 Changes recommended
The runtime setup broadens sandbox network access beyond Serena’s needs.
2 open issues
What changed in this PR
Addresses runtime setup and ledger payload failures in gh-aw’s compiler and repository workflows.
Changes:
- Preserve eligible literal Gemini environment settings in shell commands.
- Provision Node.js 24 for Serena and regenerate affected workflow locks.
- Document the concurrency ledger payload, add regressions, and include a patch changeset.
| File | Description |
|---|---|
pkg/workflow/workflow_health_regression_test.go |
Tests Gemini allowlisting and ledger schema acceptance. |
pkg/workflow/serena_go_runtime_test.go |
Checks Node version and setup ordering. |
pkg/workflow/gemini_tools.go |
Adds environment allowlisting and extracts shell-tool mapping. |
.github/workflows/typist.lock.yml |
Adds Node setup and updates network policy. |
.github/workflows/smoke-copilot.lock.yml |
Refreshes generated workflow hashes. |
.github/workflows/smoke-copilot-arm.lock.yml |
Adds Node setup and refreshes hashes. |
.github/workflows/smoke-copilot-aoai-entra.lock.yml |
Adds Node setup and refreshes hashes. |
.github/workflows/smoke-copilot-aoai-apikey.lock.yml |
Adds Node setup and refreshes hashes. |
.github/workflows/smoke-codex.lock.yml |
Updates runtime-derived network policy and hashes. |
.github/workflows/shared/mcp/serena-go.md |
Declares Node runtime and documents mounted availability. |
.github/workflows/purelock.lock.yml |
Adds Node setup and updates detection network policy. |
.github/workflows/mcp-inspector.lock.yml |
Updates detection network policy and hashes. |
.github/workflows/glossary-maintainer.lock.yml |
Adds Node setup and updates detection network policy. |
.github/workflows/engine-conformance-gemini.lock.yml |
Allows the conformance sentinel environment name. |
.github/workflows/daily-mcp-concurrency-analysis.md |
Specifies ledger fields and queued-call limitations. |
.github/workflows/daily-mcp-concurrency-analysis.lock.yml |
Refreshes prompt-related hashes. |
.github/workflows/daily-file-diet.lock.yml |
Adds Node setup and updates network policy. |
.github/workflows/daily-compiler-quality.lock.yml |
Adds Node setup and updates network policy. |
.changeset/patch-aw-health-runtime-contracts.md |
Records the fixes for a patch release. |
Review effort: Max
Provision Serena Node on the host without expanding runtime-derived egress. Check agent-local setup ordering, validate ledger additional properties, honor effective sandbox environment overrides, and document conservative Gemini name filtering. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
@copilot address the following outstanding work in one pass:
Push the necessary fixes, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved. Use the pr-finisher skill and stop when only human review or CI remains; do not trigger CI. Sous-chef head: 31476a8
|
|
🎉 This pull request is included in a new release. Release: |

Why
Investigating the three-hour AW health window on 2026-10-21 exposed three actionable failures: Gemini removed an explicitly configured environment setting from shell commands, Serena could not start the project's TypeScript/Bash language servers without a mounted Node runtime, and the concurrency agent submitted a ledger record with
toolinstead of the requiredanalyzed_tool.Changes
engine.envnames through shell environment redaction. Check effective values aftersandbox.agent.envoverrides, retain credential exclusions and conservative sensitive-name filtering, and emit names only, never values.ADR: ADR-70859: Gemini engine.env shell redaction allowlist documents the design and conservative filtering tradeoff; its status remains Draft for maintainer review.
Validation
Passed for the review follow-up:
make buildandmake fmt.go test ./pkg/workflow -run 'Test.*Gemini|TestConcurrencyAuditLedgerPromptExample|TestSerenaGoRuntimeExposure' -count=1.make recompile- 346/346 workflow sources compiled.make check-workflow-drift- generated locks match their sources.make agent-report-progress.golangci-lint run --allow-parallel-runners --new-from-rev=bb4a057ecaa2e2fadd2585dab33b3b7b57273968 ./pkg/workflow- no new findings. Full package lint reported three pre-existing modernize findings in unchanged files.Limitations:
cache-mode: readonly; model-inventory refresh was unavailable in the isolated diagnostic repository because it had no remote. These are not passing dry-run results.Scope
The dominant shared incident was GitHub installation API quota exhaustion, affecting 12 AW runs at the same activation boundary. This PR does not bypass daily-AIC accounting, change credentials, or claim to resolve quota exhaustion, secondary throttling, or OTLP authentication failures. The separate health-output reflection produced recommendations only; this PR does not change
gh aw health.All five requested inline review comments were addressed and replied to in commit
31476a8b65.