Skip to content

Add agentic issue investigation workflow - #48830

Open
ROHIT SINGHAL (rohitsinghal4u) wants to merge 14 commits into
Azure:mainfrom
rohitsinghal4u:add-agentic-issue-investigation
Open

ROHIT SINGHAL (rohitsinghal4u) wants to merge 14 commits into
Azure:mainfrom
rohitsinghal4u:add-agentic-issue-investigation

Conversation

@rohitsinghal4u

@rohitsinghal4u ROHIT SINGHAL (rohitsinghal4u) commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds evidence-based issue investigation after triage, adapted from Azure/azure-sdk-for-net#60514 for Python and PyPI.

Protecting existing workflows

Existing triage label/comment/assignment budgets, owner-routing code/dependencies, permissions, and failure reporting are preserved against main. Investigation is handled by a separate completion-triggered relay, not by a prerequisite of triage writes or completion. The existing Actionlint workflow is restored byte-for-byte; new native contracts run in a separate path-filtered CI workflow.

Automatic handoff is disabled by default. A maintainer can set GH_AW_ENABLE_ISSUE_INVESTIGATION=true after rollout validation. Manual investigation dispatch remains available. The relay verifies a successful same-repository/default-branch triage run, attempt-specific jobs and current artifacts, the explicit safe detection verdict, the target cross-checked from trusted activation-job logs, the applied analysis comment, and owner routing before native dispatch. Its failures cannot gate or roll back the completed triage workflow. The existing triage source, generated workflow, and shared Actionlint are byte-for-byte identical to current upstream main; runtime selection and concurrency are unchanged.

Changes and review fixes

  • Use an independent, opt-in completion relay after successful triage. Preserve single-owner assignment and mention-based routing using actual application receipts.
  • Validate nonempty terminal outputs before mutations. Reject incomplete/error outputs and conflicting actions rather than returning a misleading successful run.
  • Bind investigation comments and closures to the dispatched issue before invoking native handlers; the pinned close handler does not itself enforce its configured target. Recheck open/unlocked status and all clean-triage labels before mutations and Copilot assignment.
  • Use the closure handler's comment-first behavior and gate Copilot assignment on the applied recommendation comment's Outcome. Keep authentication/availability skips best-effort.
  • Preserve lifecycle-aware compatible-release guidance, specific duplicate evidence, targeted information requests, service-ownership evidence, and human-review exclusions. Read all comment pages before deciding whether an investigation is repeated.
  • Generate the workflows with gh-aw v0.88.8 and pin Copilot CLI 1.0.80. Run native handler/serializer and baseline-compatibility contracts in a separate path-filtered CI workflow.

Local validation

  • The added investigation compiles with strict/schema validation and zero warnings; its generated output is reproducible. Existing triage source and generated YAML are restored exactly from upstream, not regenerated.
  • 21 automated test groups pass, including 370 named deterministic gate, corner-case, and relay integration scenarios. Coverage includes full-file legacy parity, missing/expired/ambiguous artifacts, reruns, actual native dispatcher calls with mocked GitHub writes, every handoff predicate, scope validation, and supported target representations.
  • Native actionlint v1.7.12, repository cspell, and whitespace checks pass.
  • The real single-owner receipt is rejected by the previously published helper and accepted by the corrected helper.

Live evidence and remaining limitations

Earlier live runs verified a targeted information request and a bounded documentation-fix recommendation on commit 06bc1d0, plus a negative handoff that lacked a valid analysis receipt. Most of the planned live gate matrix was not executed before cleanup. The corrected relay selected the issue and artifact IDs read-only from real upstream triage run 38799256886. Full live gate coverage, automatic completion-triggered dispatch, and persistent coding-agent assignment remain unverified; a native handler success log alone is not proof of assignment. No full-live-validation claim is made for this update.

Copilot assignment remains best-effort with the existing credential chain. Ownership/version decisions remain model-based, and separate API calls are not transactional. Native runtime scripts are pinned and tested rather than copied or modified.

API, compatibility, and security

No SDK implementation, public API, package version, dependency, or release metadata changes. The color-based label taxonomy is unchanged: all service names and all six current category colors remain supported, including future service names using the same color. Positive integer forms, case-insensitive colors, and an optional leading color hash remain accepted. Closed/locked/manual-triage issues and cross-issue output targets are intentionally excluded. The agent stays read-only with shell access disabled; no new secrets or external inference endpoints are introduced.

Reviewer risks

Likely reviewer Comment they might leave Evidence checked Fix made or reason deliberately kept
Azure SDK engineering owners Handcrafted receipts do not reflect runtime behavior Pinned handler and serializer execution Real runtime regression tests in CI
Copilot reviewer Scoped closures or gated assignment still affect the wrong issue Native close-target probe, applied receipts, current issue state Trusted output binding and clean-triage revalidation
Python owners Upgrade advice rejects supported versions or previews Published lifecycle policy and release conventions Compatible-release guidance, no service/cloud allowlist

All SDK Contribution checklist

  • No SDK breaking changes.
  • Package CHANGELOG: not applicable to this workflow-only change.
  • Contribution guidelines read.
  • Title and description reflect the implementation and known validation limits.
  • Existing PR history preserved; no merge or force push requested.
  • Regression coverage is included in CI.

Ports the Azure SDK for .NET Agentic Issue Investigation workflow to
azure-sdk-for-python, adapted for Python conventions (PyPI package
metadata, azure-<service>-<package> naming, sdk/<service>/TROUBLESHOOTING.md
lookups).

- Adds .github/workflows/issue-investigation.md + compiled lock.yml
- Updates issue-triage.md to add Step 7: Dispatch Agentic Investigation,
  auto-chaining into the new investigation workflow after a clean triage
  handoff, plus the dispatch-workflow safe-output declaration

Same decision gates as .NET: handoff validation, version currency,
duplicate detection, insufficient context, working-as-designed/service-side,
actionable SDK issue (with exclusions), and an overarching confidence gate.

For testing/validation in this fork only.
Copilot AI balanced review requested due to automatic review settings September 1, 2026 17:47
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
9 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds an automated, evidence-gated investigation stage after issue triage.

Changes:

  • Adds issue investigation and decision rules.
  • Dispatches investigations after clean triage.
  • Adds compiled workflow definitions.

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 6 comments.

File Description
.github/workflows/issue-investigation.md Defines investigation behavior and outputs.
.github/workflows/issue-investigation.lock.yml Compiles the investigation workflow.
.github/workflows/issue-triage.md Dispatches eligible issues for investigation.
.github/workflows/issue-triage.lock.yml Compiles updated triage orchestration.
Suppressed comments (1)

.github/workflows/issue-investigation.md:61

  • The assignment sink is also repository-wide, so a compromised or mistaken investigation can assign Copilot to an issue other than the dispatched one. Restrict the safe output to the supplied issue number.
    target: "*"

Comment thread .github/workflows/issue-triage.lock.yml Resolved
The prior actionable-path example claimed a StopIteration/continuation_token
bug in azure-core PageIterator/_list_blobs_helper.py that does not actually
exist -- current source (paging.py:79-80) already guards against it.
Presenting a false root cause as a worked example risked priming the
investigator to reproduce it on a superficially similar real report.

Replaced with a verified-real example: an etag operand-order bug in
azure-appconfiguration's set_configuration_setting (confirmed present in
current source by direct inspection), which silently ignores an explicit
etag kwarg whenever the ConfigurationSetting object already has one set.
Copilot AI review requested due to automatic review settings September 1, 2026 18:32
@rohitsinghal4u

Copy link
Copy Markdown
Contributor Author

Thanks for the thorough review — addressing each finding:

1. Fabricated worked example (issue-investigation.md:310) — FIXED. Verified: azure-core/paging.py:79-80 does already guard against the None continuation-token case I claimed was missing. Replaced the example with a real, verified bug I found and confirmed by direct source inspection: an etag operand-order bug in azure-appconfiguration's set_configuration_setting (etag=configuration_setting.etag or etag instead of etag=etag or configuration_setting.etag). See commit 1b600f3.

2 & 5. Stale gh-aw compiler version (v0.81.6) on both lock files. Confirmed valid — this repo's other workflows are on v0.87.1+, and the older compiler's Copilot CLI invocation pattern doesn't copy the binary to a mounted path first. I attempted to upgrade my local gh-aw CLI to match, but the v0.87.10 download was blocked by Windows Defender as a false-positive in my environment, and I'm not going to work around an AV block. This needs a maintainer with a clean v0.87.1+ install to recompile both lock files before merge — flagging clearly rather than shipping something I couldn't verify.

3. Version Currency wording ("only available for the latest package version"). This is intentional and inherited verbatim from the already-merged .NET workflow (Azure/azure-sdk-for-net PR #60514), where it was explicitly requested by that workflow's maintainer as a mandatory decision point rather than soft guidance. I don't think this Python PR should unilaterally soften wording that was deliberately hardened upstream — but happy to revisit if this repo's policy genuinely differs, that's a maintainer call.

4. Exclusion routing ambiguity (noop vs. "Requires a human"). Confirmed this same tension exists verbatim in the current .NET source too — it's not something introduced by this port. Reading intent: well-evidenced excluded cases → "Requires a human" (post the analysis); cases lacking evidence → noop. Open to tightening the wording, but wanted to flag this is a pre-existing ambiguity, not new.

6. Wildcard target: "*" on close-issue/assign-to-agent. Also inherited verbatim from .NET's current production config. Valid architectural question — today the safety boundary relies on the prompt instructing the agent to only act on the dispatched issue_number, not on safe-output-level enforcement. I didn't find a gh-aw option to bind target to a dynamic issue number; if one exists, happy to apply it here and suggest it back upstream to .NET too.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.

Suppressed comments (3)

.github/workflows/issue-investigation.md:129

  • This is stricter than the Azure SDK support policy: an Active major version is fully supported, while customers are only encouraged to use the latest compatible release. The Version Currency rule consequently short-circuits valid reports from any older minor/patch and tells supported customers that support only applies to latest. Reframe currency as diagnostic guidance and reserve support-based deferral for lifecycle/compatibility cases rather than every non-latest version.
## Support Policy Expectation

By policy, Azure SDK support is only available for the latest package version. Version currency is a mandatory decision point, not just background guidance.

.github/workflows/issue-investigation.md:224

  • For confirmed SDK-side issues that hit an exclusion, this rule directs the agent to noop, but the Comment Format explicitly defines Requires a human. Analysis provided below for those same cases. As written, complex but well-evidenced SDK issues can silently disappear instead of giving maintainers the prepared analysis. Emit the human-review outcome for confirmed SDK-side exclusions, while retaining targeted requests/noop only when ownership or required evidence is unresolved.
Do not assign Copilot, even if the above are met, when the issue requires any of the following. Use `noop` or a targeted Insufficient Context request instead:

.github/workflows/issue-triage.lock.yml:1

  • This regenerated lockfile is also pinned to gh-aw v0.81.6 and retains the older direct /usr/local/bin/copilot invocation. Recompile issue-triage.md with the current gh-aw release so it uses the repository's mounted Copilot CLI pattern and commit the resulting lockfile; generated YAML should not be patched manually.
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"05b306844fe731bbc51742814306b173e76912201a7e90c5783c248d61a8abd5","body_hash":"dc8a877d119de2565e69737741e0463fd731dbe25d0159ee257cf166e3793683","compiler_version":"v0.81.6","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.65"}}

Copilot AI review requested due to automatic review settings September 1, 2026 21:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The workflows contain unsafe wildcard targets, an incorrect support-policy gate, contradictory outcome instructions, and outdated generated locks.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (5)

.github/workflows/issue-investigation.md:224

  • This makes the documented Requires a human outcome unreachable: exclusions are told to emit noop, while lines 260 and 279 say those same exclusions should produce the human-analysis comment. Confirmed SDK-side issues requiring API, security, reliability, or broad design work will therefore receive no investigation result. Route confirmed exclusions to the human outcome and reserve noop for cases lacking enough evidence.
Do not assign Copilot, even if the above are met, when the issue requires any of the following. Use `noop` or a targeted Insufficient Context request instead:

.github/workflows/issue-investigation.md:42

  • The workflow already has one trusted target in github.event.inputs.issue_number, but target: "*" allows model output influenced by untrusted issue text to close any issue in the repository. Restrict this destructive safe output to that input (and preferably require customer-reported) so the safe-output boundary contains a misdirected action.
    target: "*"

.github/workflows/issue-triage.lock.yml:1

  • This regenerated lock also remains on gh-aw v0.81.6 and invokes /usr/local/bin/copilot rather than the mounted ${RUNNER_TEMP}/gh-aw/bin/copilot pattern emitted by the repository's v0.87.1 workflow. Recompile issue-triage with the repository-standard current gh-aw before merging so the newly chained triage run does not fail at agent startup.
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"05b306844fe731bbc51742814306b173e76912201a7e90c5783c248d61a8abd5","body_hash":"dc8a877d119de2565e69737741e0463fd731dbe25d0159ee257cf166e3793683","compiler_version":"v0.81.6","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.65"}}

.github/workflows/issue-investigation.md:129

  • The Azure SDK support policy does not limit support to the latest point release: Active major versions are fully supported, while the latest compatible release is only encouraged because it receives fixes. Making this a mandatory early exit will incorrectly reject valid reports against supported older minor/patch releases. Base the gate on lifecycle status and known fixes instead of exact version currency.
By policy, Azure SDK support is only available for the latest package version. Version currency is a mandatory decision point, not just background guidance.

.github/workflows/issue-investigation.md:39

  • This wildcard lets untrusted issue content redirect the investigation comment to an unrelated issue. Scope add-comment to ${{ github.event.inputs.issue_number }} so output can only affect the issue selected by the dispatcher.
    target: "*"
  • Files reviewed: 3/4 changed files
  • Comments generated: 1
  • Review effort level: Balanced

- Fix stale tool reference: prompt said get_issue, the pinned GitHub MCP
  server (v1.4.0) exposes issue_read with no alias for the old name.
  Earlier runs worked because the model self-corrected, but that's fragile.
- Scope add-comment/close-issue/assign-to-agent target to the dispatched
  issue_number instead of wildcard *, so a misdirected or injected output
  can no longer affect an unrelated issue. Verified in compiled output.
- Fix a real contradiction: the Actionable SDK Issue exclusions said to
  noop, while the Comment Format section said the same condition should
  produce the 'Requires a human' outcome, making that outcome unreachable.
  Now routes well-evidenced exclusions to the human outcome and reserves
  noop for cases lacking evidence.
Copilot AI review requested due to automatic review settings September 1, 2026 23:20
@rohitsinghal4u

Copy link
Copy Markdown
Contributor Author

Update after a second automated review pass surfaced 3 more real findings — fixed all 3:

  1. get_issue → issue_read. Confirmed via my own earlier successful test runs that the model was self-correcting to the real tool name — but that's fragile, not something to rely on. Fixed the prompt to reference the actual tool.
  2. Wildcard target: "*" on add-comment/close-issue/assign-to-agent. Took the suggested fix and verified it actually works: scoped all three to ${{ github.event.inputs.issue_number }}, confirmed in the compiled lock output (not silently ignored).
  3. Exclusion routing contradiction. You're right that this was a real bug, not just an inherited quirk worth leaving — "noop" and "Requires a human" were both instructed for the same condition, making the human-analysis outcome unreachable. Fixed: well-evidenced exclusions now route to "Requires a human," noop/Insufficient-Context reserved for when the exclusion itself lacks evidence.

Still open, honestly:

  • gh-aw compiler version (both lock files). Still couldn't safely upgrade past v0.81.6 in my environment (Defender false-positive on v0.87.10). This is a real, functional risk per your note that triage could fail at agent startup — needs a maintainer with a clean install to recompile before merge.
  • Version Currency wording ("support only for latest package version"). I'm intentionally leaving this matching .NET's current, deliberately-reviewed wording rather than unilaterally softening it — but I recognize you've now flagged this twice with specific reasoning (lifecycle/major-version vs. exact-version-currency). This is a genuine policy question, not a text bug, so I don't think it's mine to resolve alone — flagging for whoever owns Python SDK support-policy interpretation.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The support-policy gate is inaccurate, closed issues are not excluded, and both lockfiles require recompilation with current gh-aw.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (3)

Previously missed (1) — in code that hasn't changed since the last review.

.github/workflows/issue-investigation.md:96

  • The handoff gate never checks that the issue is still open. Because the investigation is queued after triage, an author or maintainer can close the issue before this run starts; that closed issue still passes these label checks and can receive a new automated comment or Copilot-assignment attempt. Require the retrieved issue state to be open so stale/manual dispatches no-op.

.github/workflows/issue-investigation.md:129

  • This version gate is based on an incorrect support-policy premise. The Azure SDK lifecycle policy says an Active major version is fully supported and only encourages customers to use the latest compatible minor/patch release; it does not make every older point release unsupported. As written, the workflow will stop investigation and send supported customers away whenever their point release is not the newest. Please rewrite this section and the Version Currency rule to treat lifecycle status as the support boundary, while recommending an upgrade when the issue may already be fixed.
By policy, Azure SDK support is only available for the latest package version. Version currency is a mandatory decision point, not just background guidance.

.github/workflows/issue-triage.lock.yml:1

  • This lockfile was regenerated with gh-aw v0.81.6, so it retains the old hard-coded /usr/local/bin/copilot sandbox invocation (line 938). The repository's v0.87.1-generated workflow instead resolves Copilot from PATH, copies it into ${RUNNER_TEMP}/gh-aw/bin, mounts that directory, and invokes the copied binary (mgmt-sdk-pr-review.lock.yml:772-809); without that pattern, the installed CLI may not be available in the sandbox. Recompile this workflow with the repository's current gh-aw version before merging.
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"05b306844fe731bbc51742814306b173e76912201a7e90c5783c248d61a8abd5","body_hash":"dc8a877d119de2565e69737741e0463fd731dbe25d0159ee257cf166e3793683","compiler_version":"v0.81.6","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.65"}}
  • Files reviewed: 3/4 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Merge upstream main, regenerate the triage and investigation workflows with gh-aw v0.88.8, align version guidance with the Azure SDK lifecycle policy, and preserve issue-scoped outputs and per-issue concurrency.

Add workflow contract regressions for handoff requirements, compatibility guidance, failure reporting, compiler bootstrap, and dispatch integration, and run them in the existing Actionlint workflow.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rohitsinghal4u ROHIT SINGHAL (rohitsinghal4u) changed the title Add agentic issue investigation workflow (ported from azure-sdk-for-net) Add agentic issue investigation workflow Sep 28, 2026
Copilot AI review requested due to automatic review settings September 28, 2026 16:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Comment thread .github/workflows/issue-triage.md Resolved
singhalrohit4u and others added 2 commits September 28, 2026 20:44
Move eligibility checks and native workflow dispatch into trusted post-processing after buffered label/comment operations and owner notification succeed. Verify current issue state and the analysis comment receipt, and prevent early, partial, staged, or failed handoffs.

Add executable handoff regressions, use canonical issue_read in triage, and fix the spelling failure in the workflow contract test name. Regenerate gh-aw sources with the repository-matching compiler.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Handle both existing owner-routing paths: completed direct assignment for a single SDK owner, and successful mention notification for multiple or service owners. Read trusted safe-output receipts to identify the actual analysis comment instead of mistaking the earlier routing comment for analysis.

Reuse native assignment normalization, reject incomplete triage, initialize native audit output paths, and cover single-owner and missing-receipt cases with executable regressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings September 28, 2026 23:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Independent safe-output processing can close or assign issues without the required analysis comment, and assignment receipts are not fully bound to the target issue.

Review effort: Balanced
Findings: 1 High severity · 2 Medium severity

Open (3)
Resolved since last review (4)

Copilot AI balanced review requested due to automatic review settings September 29, 2026 19:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

The workflow can close customer issues and initiate coding-agent work, so final human review is warranted despite the comprehensive safeguards and tests.

Review effort: Balanced
Findings: 1 High severity · 2 Medium severity

Open (3)

…ingle-owner verification

- Require exactly one assignment request and receipt matching the investigated issue for single-owner triage routing.
- Supply service-side explanation in close_issue body so closure aborts if comment fails.
- Defer assign_to_agent and gate in copilot_assignment job on applied analysis-comment receipt.
- Pin engine copilot version to 1.0.80 in both workflows.
- Add copilot_assignment helper script and comprehensive unit/contract tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings September 29, 2026 19:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Best-effort assignment currently fails on expected credential errors, and comment pagination can miss prior investigations.

Review effort: Balanced
Findings: 3 Medium severity

Open (3)
Resolved since last review (3)

…nts, and hyphenate ignore-if-error

- Accept completed_with_skips with 0 items applied in confirm-assignment step, preserving best-effort assignment behavior.
- Instruct issue_read to use perPage: 100 and paginate through all pages when checking for prior investigations.
- Use hyphenated ignore-if-error in copilot_assignment handler config and assert in test.
- Update workflow contract tests to cover pagination and assignment skip handling.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings September 29, 2026 19:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Runtime assignment receipts lack the number field required by the handoff validator, blocking valid single-owner investigations.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (3)

Fix single-owner routing using the pinned runtime receipt shape without trusting a missing number field. Preserve exactly one target-bound assignment request and one applied receipt.

Validate terminal output before mutations, bind closure/comment targets to the dispatch input, recheck clean triage before writes and Copilot assignment, and reject contradictory actions. Share validation logic and run real pinned handler contracts in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings September 30, 2026 01:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

The elevated assignment credential can cause preflight reads to fail before best-effort error handling applies.

Review effort: Balanced
Findings: None

Resolved since last review (1)
Previously missed (1)

In code that hasn't changed since last review

Medium severity Use workflow token for preflight reads to preserve best-effort auth

.github/​workflows/​issue-investigation.md:164

The assignment credential is also being used for the helper's issue/comment reads. If GH_AW_AGENT_TOKEN is expired or lacks repository read access, prepareAssignment fails before the native handler can apply ignore-if-error, so the documented best-effort authentication behavior becomes a hard job failure. Use the normal workflow token for preflight reads and pass the elevated credential separately through the handler's supported GH_AW_ASSIGN_TO_AGENT_TOKEN variable, matching the generated safe-outputs job.

Restore baseline triage output budgets, owner-notification dependencies and failure reporting. Move native investigation dispatch into an independent completed-run relay with verified activation context, current application receipts and explicit detection verdict.

Make automatic handoff opt-in, preserve manual investigation dispatch, and move native contract tests into a separate path-filtered workflow. Add golden baseline checks proving original routing/control contracts and Actionlint remain unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings September 30, 2026 03:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

It introduces issue-closing and agent-assignment automation whose full live gate matrix remains unverified.

Review effort: Balanced
Findings: None

Restore existing triage source and lock exactly to upstream, including original runtime selection and concurrency. Resolve investigation targets from verified attempt-specific activation job context when completed runs no longer expose activation artifacts, and recheck the parent attempt before dispatch.

Preserve native numeric and same-repository target forms while rejecting ambiguous inputs and cross-repository assignment requests. Add whole-file legacy parity and 370 named deterministic relay, gate, and corner-case scenarios, including execution of the real relay script with the pinned dispatcher.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 16, 2026 23:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Privileged workflow chaining and model-driven closures need human review, especially with unresolved correctness issues and incomplete live validation.

3 open issues

Review effort: Balanced

Comment on lines +121 to +125
const triageContext = {
...context, eventName: process.env.TRIAGE_EVENT,
payload: { ...context.payload,
...(process.env.TRIAGE_EVENT === 'issues' ? { issue: { number } } : {}) },
};
type: string

concurrency:
group: "gh-aw-${{ github.workflow }}-${{ github.event.inputs.issue_number }}"
- "azure.github.io"

safe-outputs:
report-failure-as-issue: false

This branch has not been deployed

No deployments
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.

4 participants