Skip to content

Support issue artifacts in create-issue safe outputs - #75323

Merged
pelikhan merged 11 commits into
mainfrom
pelikhan/issue-artifacts
Nov 6, 2026
Merged

pelikhan merged 11 commits into
mainfrom
pelikhan/issue-artifacts

Conversation

@pelikhan

@pelikhan pelikhan commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Attach plans, links, notes, and HTML previews to newly created GitHub issues using the issue artifacts REST API.

ADR: ADR-75323: Resolve Issue Artifact Paths in the Unprivileged Safe-Outputs Backend

  • Add optional artifacts to the built-in create_issue tool and custom-job createIssue helper, supporting generic (default), plan, link, and embedded_html.
  • The MCP tool accepts exactly one of inline body or an absolute path per artifact. The unprivileged safeoutputs backend reads path-based UTF-8 content and records a body-only request, without loading or echoing the file into the agent's conversation. The privileged issue handler and custom-job helper reject unresolved paths.
  • Guard file reads within the workspace or /tmp/gh-aw/agent, excluding Git metadata, system directories, and HOME credential/configuration paths through the shared file-upload denylist. Reject links, non-regular files, invalid UTF-8, NUL bytes, empty content, and oversized files. Validate counts and all input shapes before opening sources; failures record no issue request or deduplication state.
  • Sanitize rendered HTML using existing tag, attribute, comment, and strict URL filters across its entire content, without Markdown code-region exemptions.
  • Apply per-issue count limits and per-artifact UTF-8 byte limits, temporary-reference resolution, staged previews, and explicit partial-failure reporting. Continue normal issue assignment and parent linking after an artifact failure, then return the failure with the created issue's identity intact.
  • Distinguish path-capable MCP inputs, body-only transport/helper inputs, normalized artifacts, and validated created metadata in shared types. Update runtime/compiler schemas and the canonical safe outputs specification and references.

Configuration

safe-outputs:
  create-issue:
    max-issue-artifacts: 3
    max-issue-artifact-size: 1mb

max-issue-artifacts defaults to 10; zero or negative integers disable attachments without disabling ordinary issue creation. Only the correctly spelled option is supported.

max-issue-artifact-size defaults to 1 MB (1,048,576 bytes). It accepts integer bytes or human-friendly sizes such as 512kb and 1.5mb; units are case-insensitive, use multiples of 1024, and must resolve to a positive whole-byte count. Limits apply independently to each artifact, including bounded file reads and sanitized/reference-resolved content; oversized content is rejected, not truncated.

Path-based MCP example

After writing the file, the agent calls create_issue with:

{
  "title": "Implement parser caching",
  "body": "The implementation plan is attached.",
  "artifacts": [
    { "type": "plan", "name": "Implementation plan", "path": "/tmp/gh-aw/agent/issue-plan.md" }
  ]
}

The backend reads the complete file into body before recording the request. No separate upload or custom-job file declaration is needed. Paths are literal: variables and globs are not expanded. General temporary runtime files are not allowed. Guarded reads require the Linux workflow runtime and fail closed elsewhere.

Artifact requests bypass same-day comment grouping so attachments are not lost; existing issue deduplication remains. Attachment failures retain the already-created issue's identity and attachment count, without recreating or rolling back the issue. The trusted custom-job helper accepts inline content only and uses fixed default limits rather than inheriting built-in frontmatter settings.

Validation

  • TypeScript, compile-time contracts, focused Go configuration/schema parity tests, and 724 JavaScript tests across seven suites passed.
  • Verified real Linux stdio-MCP ingestion in Docker: complete file bodies are persisted without path/content echo, and runtime-config and .git reads fail without appending requests. The Linux-only integration test remains skipped on the native macOS host.
  • WASM compiler golden tests, build, JavaScript lint, and the change-scoped publishing gate passed; all 359 workflow locks are synchronized.
  • Earlier full custom Go lint reports findings in unchanged GitHub App configuration and custom-job memory code inherited from main; this update does not alter those files.

pelikhan and others added 5 commits November 5, 2026 11:35
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a per-issue artifact cap with non-positive values disabling attachments. Preserve the requested max-isssue-artifacts spelling as an alias.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Enforce UTF-8 byte limits before creation and attachment without silently truncating artifacts. Update schemas, tool constraints, documentation, and generated locks.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
pelikhan and others added 2 commits November 5, 2026 21:50
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread actions/setup/js/issue_artifacts.cjs Resolved
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Include issue_artifacts.cjs in the safe-outputs deployment bundle and exercise artifact normalization from the deployed files. Regenerate nine WASM compiler golden fixtures for the issue artifact limits and validation schema.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan
pelikhan marked this pull request as ready for review November 6, 2026 06:39
Copilot AI auto review requested due to automatic review settings November 6, 2026 06:39
@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

✅ PR Specification Reviewer completed successfully!

Generated by PR Specification Reviewer for #75323

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

✅ Test Quality Sentinel completed test quality analysis.

Test Quality Sentinel

Outcome: reported_no_action

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.

Generated from Test Quality Sentinel · routed: gpt56 max · ~1 AIC · ⌖ ~1 AIC · ⊞ 6.3K · ◷

🧪 Test quality analysis by Test Quality Sentinel

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

❌ Design Decision Gate 🏗️ failed to deliver outputs during design decision gate check.

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

✅ Ponytail Reviewer completed successfully!

Generated by Ponytail Reviewer for #75323

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

✅ PR Code Quality Reviewer completed the code quality review.

🔎 Code quality review by PR Code Quality Reviewer

@github-actions github-actions Bot 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.

Reviewed PR head 40486df760d2c43e373772308ad5d0e23add7d1f against Safe Outputs Specification v1.29.17, especially §7.1 Issue Artifact Requirements 4 and Files and Paths, plus the security architecture privilege/content-integrity boundaries. Static review only; no tests or conformance scripts were run.

Blocking findings (already covered by existing inline comments, so no duplicate inline comments were emitted):

  1. embedded_html bypasses sanitization (existing comment 4489544474, actions/setup/js/issue_artifacts.cjs:153). Wrapping the body in a fenced code block makes sanitizeContent treat the entire HTML payload as inert, then the fence is stripped and the raw payload is published. This violates §7.1 Issue Artifact Requirements 4, which requires content policies to be applied while preserving HTML source. Sanitize the HTML body itself (or otherwise apply the same non-code policies without allowing the wrapper to suppress them) and add regression coverage for commands, URLs, template delimiters, and XML content.

  2. Agent-controlled paths can disclose sensitive workspace or /tmp files (existing comment 4489675788, actions/setup/js/safe_outputs_handlers.cjs:2237). The MCP handler reads any model-selected regular file under those broad roots and publishes its contents through an issue artifact. Symlink/hard-link and size guards prevent traversal, but do not prevent intentional disclosure of credentials or other sensitive files. The new Files and Paths contract explicitly permits this behavior, so the contract and implementation need a maintainer-approved security decision; do not treat the current spec addition as sufficient authorization to weaken the broader untrusted-agent data-boundary guarantees.

Coverage limit: the prefetched patch and local source were inspected; generated lock changes were not individually reviewed. No specification synchronization was performed because the artifact security behavior remains unresolved.

Generated by PR Specification Reviewer for #75323 · copilot · gpt50 · ~4 AIC · ⌖ ~1 AIC · ⊞ 1.6K
Comment /review-specs to run again

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Warning

The push_to_pull_request_branch operation failed: Cannot verify branch protection rules for "pelikhan/issue-artifacts": Resource not accessible by integration - https://docs.github.com/rest/branches/branch-protection\#get-branch-protection. Reading classic branch protection requires a GitHub App installation token or fine-grained PAT with Administration: read repository permission; GITHUB_TOKEN cannot provide this permission. Push blocked to prevent accidental writes to protected branches.. The code changes were not applied.

🏗️ Design Decision Gate — ADR Required

This PR adds 413 new lines of core business logic (more than the 100-line threshold) in pkg/ and actions/setup/js/ but does not link an Architecture Decision Record (ADR).

📄 Draft ADR committed: docs/adr/75323-resolve-issue-artifact-paths-in-safeoutputs-backend.md. Review and complete it before merging.

🔒 This PR cannot merge until an ADR is linked in the PR body.

Decision captured in the draft: The unprivileged safeoutputs MCP backend reads artifact path values (guarded to the workspace or /tmp) and records only the content. The privileged create_issue handler rejects any unresolved path and attaches artifacts one at a time after the issue is created, with per-issue count and per-artifact size limits. If an attachment fails, it reports the failure without rolling back the issue.

📋 What to do next
  1. Review the draft ADR committed to your branch. It was generated from the PR diff (issue_artifacts.cjs, create_issue.cjs, safe_outputs_handlers.cjs, symlink_guard.cjs, pkg/workflow/create_issue.go).

  2. Complete or correct the sections: add context the agent could not infer, refine the rationale, and confirm the alternatives you actually considered (inline-only bodies, resolving paths in the privileged handler or via workflow artifacts, transactional rollback).

  3. Commit the finalized ADR to docs/adr/ on your branch.

  4. Reference the ADR in this PR body by adding a line such as:

    ADR: ADR-75323: Resolve Issue Artifact Paths in the Unprivileged Safe-Outputs Backend (link unavailable: invalid HTTPS URL)

Once the ADR is linked in the PR body, this gate will run again and check that the implementation matches the decision.

❓ Why ADRs Matter

"AI made me procrastinate on key design decisions. Because refactoring was cheap, I could always say 'I'll deal with this later.' Deferring decisions corroded my ability to think clearly."

ADRs create a searchable, permanent record of why the codebase looks the way it does. Future contributors (and your future self) will thank you.

📋 Michael Nygard ADR Format Reference

An ADR must contain these four sections to be considered complete:

  • Context: What is the problem? What forces are at play?
  • Decision: What did you decide, and why?
  • Alternatives Considered: What else could have been done?
  • Consequences: What are the trade-offs (positive and negative)?

All ADRs are stored in docs/adr/ as Markdown files numbered by PR number (for example, 75323-...md for PR #75323).

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · pi · routed: opus55 xhigh · ~41 AIC · ⌖ ~2 AIC · ⊞ 7.7K · ◷
Comment /review to run again

@github-actions github-actions Bot 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.

What this change does: This adds typed, bounded issue-artifact inputs to create_issue, including guarded path ingestion, sanitization, staged previews, and post-creation attachment. It also wires compiler limits and documents the body-only custom-job helper.

Should fix:

  1. The schema parity test is duplicated (actions/setup/js/issue_artifacts.test.cjs:L30)

    • What this is: The new test compares the runtime and compiler copies of the artifact schema.
    • Problem: TestSafeOutputsToolsJSONInSync in pkg/workflow/safe_outputs_tools_test.go already compares every tool object in both copies, so this lookup and equality assertion add a second parity check.
    • Fix: Remove the compiler lookup and expect(runtime).toEqual(compiler), keeping the focused runtime-shape assertions in this test.
    • If we skip it: Schema changes require maintaining two parity tests.

Not checked: correctness, security, and performance issues, per the requested review scope.
Verdict: fix 1 first.
Lean: -3 lines possible.

Generated by ✂️ Ponytail Reviewer for #75323 · codex · routed: gpt56 max · ~8 AIC · ⌖ ~1 AIC · ⊞ 118
Comment /ponytail to run again

@github-actions github-actions Bot 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.

Review complete. I found no additional actionable issues beyond the existing review comments on the changed code. The specialist pass produced no parseable findings, so it was treated as unavailable; no tests were run per the static-review instructions.

🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt50 · ~7 AIC · ⌖ ~1 AIC · ⊞ 1.6K
Comment /review to run again

@github-actions github-actions Bot 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.

Skills-Based Review 🧠

Applied /diagnosing-bugs, /tdd, and /codebase-design. Requesting changes on one correctness gap in the attachment failure path.

📋 Key Themes & Highlights

Key Themes

  • Partial-failure path skips post-create steps (create_issue.cjs:1350): an attachment error returns before copilot assignment and sub-issue linking, even though the issue exists. See the inline comment.
  • Readability of the body/path check (issue_artifacts.cjs:66): correct, but easy to misread.
  • Already raised by the bot, not repeated here: the embedded_html synthetic fence (issue_artifacts.cjs:153) and the model-controlled path-read surface (safe_outputs_handlers.cjs:2237). Both still need a decision from the author.

Positive Highlights

  • ✅ Fence length is derived from the longest backtick run in the source, so the source cannot escape the synthetic fence.
  • ✅ Size limits reject oversized bodies instead of truncating them, and UTF-8 bytes are counted correctly.
  • ✅ Staged previews perform no writes, and same-day grouping is bypassed for artifact issues. Both are covered by tests.
  • ✅ The max_issue_artifact_size integer path is validated by the schema (minimum: 1).

@copilot please address the review comments above.

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · routed: haiku55 xhigh · ~8 AIC · ⌖ ~1 AIC · ⊞ 5.4K
Comment /matt to run again

Comment thread actions/setup/js/issue_artifacts.cjs Resolved
Comment thread actions/setup/js/create_issue.cjs Resolved

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

Unresolved artifact-handling flaws can expose sensitive workspace or temporary files and allow embedded HTML to bypass configured URL-domain restrictions.

2 open issues
What changed in this PR

Adds issue-artifact support to create_issue and the custom-job createIssue helper, including inline content, MCP file-path ingestion, and configurable attachment limits.

Changes:

  • Adds artifact schemas, shared types, count/size limits, and compiler configuration.
  • Integrates file ingestion, sanitization, attachment handling, and partial-failure reporting.
  • Updates documentation, tests, WASM fixtures, and generated workflow locks.

This pull request requires changes.

Outstanding review comments:

  • Critical — actions/setup/js/safe_outputs_handlers.cjs:2236: Path ingestion can publish sensitive workspace or /tmp files without the existing upload-source denylist. Apply those exclusions and consider narrowing the permitted temporary directory.
  • Critical — actions/setup/js/safe_outputs_tools.json:144: Under allowed-or-code-region, temporary code fencing exempts embedded_html URLs from domain filtering before the fences are removed for rendered publication.
  • Moderate — actions/setup/js/create_issue.cjs:1347: Attachment failure returns early, skipping Copilot assignment, closing older issues, and parent/group linking. Continue those lifecycle steps while preserving the partial-failure result.
  • Moderate — actions/setup/js/issue_artifacts.cjs:155: Invalid or sanitized non-URL bodies can pass validation as link artifacts. Require a single HTTPS URL after sanitization, before creating the issue.
  • Nit — docs/src/content/docs/reference/custom-safe-outputs.md:345: Link to upload-artifact for binary files and downloadable originals rather than issue-artifact path ingestion.
File Description
pkg/​workflow/​tool_description_enhancer.go Describes artifact limits and disabled state.
pkg/​workflow/​testdata/​TestWasmGolden_CompileFixtures/​with-imports.golden Refreshes imported-workflow artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_CompileFixtures/​playwright-cli-mode.golden Refreshes Playwright artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_CompileFixtures/​basic-copilot.golden Refreshes basic Copilot artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_AllEngines/​pi.golden Refreshes Pi artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_AllEngines/​gemini.golden Refreshes Gemini artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_AllEngines/​copilot.golden Refreshes Copilot artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_AllEngines/​codex.golden Refreshes Codex artifact expectations.
pkg/​workflow/​testdata/​TestWasmGolden_AllEngines/​claude.golden Refreshes Claude artifact expectations.
pkg/​workflow/​safe_outputs_validation_config.go Preserves optional artifact arrays for handler validation.
pkg/​workflow/​safe_outputs_max_validation.go Propagates artifact-size parsing errors.
pkg/​workflow/​safe_outputs_handler_registry_issues.go Emits runtime artifact limits.
pkg/​workflow/​safe_output_validation_config_test.go Checks artifact-array validation metadata.
pkg/​workflow/​js/​safe_outputs_tools.json Adds compiler-side artifact input schema.
pkg/​parser/​schemas/​main_workflow_schema.json Defines artifact count and size options.
pkg/​parser/​schema_test.go Tests option types, sizes, and misspellings.
docs/​src/​content/​docs/​reference/​custom-safe-outputs.md Documents helper artifacts and file transport.
actions/​setup/​setup.sh Deploys the issue-artifact runtime helper.
actions/​setup/​js/​types/​safe-outputs.d.ts Defines input, normalized, and created artifact types.
actions/​setup/​js/​types/​safe-outputs-config.d.ts Types frontmatter artifact limits.
actions/​setup/​js/​types/​handler-factory.d.ts Types compiled artifact limits.
actions/​setup/​js/​symlink_guard.cjs Shares workspace-or-/tmp path validation.
actions/​setup/​js/​setup_sh_file_lists.test.cjs Checks deployed artifact-helper availability.
actions/​setup/​js/​safe_outputs_tools.json Adds runtime artifact input schema.
actions/​setup/​js/​safe_outputs_mcp_schema_validation.test.cjs Tests mutually exclusive body/path sources.
actions/​setup/​js/​safe_outputs_mcp_large_content.test.cjs Adds Linux stdio-MCP file-ingestion coverage.
actions/​setup/​js/​safe_outputs_handlers.cjs Resolves artifact paths before recording issue requests.
.github/​workflows/​windows.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​windows-grower.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​weekly-network-domains-audit.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​video-analyzer.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​super-linter.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​squad-plan.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-work-queue.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-work-queue-worker.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-security-alerts.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-pi-sub-agents.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-pi-routed.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-pi-routed-claude.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-pi-auto.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-otel-backends.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-github-codex.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-sub-agents.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-small.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-sdk.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-sdk-routed.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-routed.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-routed-steering.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-routed-claude.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-copilot-dynamic-workflow.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-codex-routed.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-codex-routed-openai.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-codex-bare-auto.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-codex-auto.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-claude-routed.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-claude-routed-anthropic.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-claude-dynamic.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-claude-copilot.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-claude-copilot-auto.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-claude-auto.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-azure-pi.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​smoke-azure-codex.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​sighthound-security-scan.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​refactoring-cadence.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​plan.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​objective-impact-report.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​notion-issue-summary.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​hippo-embed.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​gpclean.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​go-pattern-detector.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​firewall.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​feature-grower.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​example-permissions-warning.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​example-failure-category-filter.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​dev.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​designer-drift-audit.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​deployment-incident-monitor.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-work-queues-report.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-windows-terminal-integration-builder.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-team-status.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-model-resolution.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-max-ai-credits-test.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-file-diet.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-credit-limit-test.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-cache-strategy-analyzer.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-byok-ollama-test.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​daily-action-setup-security-audit.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​codex-github-remote-mcp-test.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​cli-consistency-checker.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​bot-detection.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​agent-persona-explorer.lock.yml Refreshes artifact defaults and validation.
.github/​workflows/​ace-editor.lock.yml Refreshes artifact defaults and validation.

Review effort: Max (auto)

Address review feedback with shared sensitive-path exclusions, strict rendered HTML sanitization, continued assignment and parent linkage after artifact errors, focused regressions, and ADR-75323.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the skills review notice: this completion notice contains no actionable finding, so no repository change is needed.

@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the specification review notice: there is no actionable finding in this completion notice, so no repository change is needed.

@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the test quality notice: reported_no_action is not proof of verification or publication, and this notice requests no code change. The review fixes were validated separately with focused suites and a real Linux stdio-MCP ingestion check.

@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the design gate delivery notice: the logs confirm safe_outputs failed because its token could not read branch protection, although the agent completed and its explanatory comment was published. Added and linked the missing ADR through this authorized local PR update without changing permissions or bypassing the workflow's protection check.

@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the Ponytail review notice: this successful completion notice contains no actionable finding, so no repository change is needed.

@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the code quality notice: the notice itself requests no change. The separate actionable clarity and post-create failure comments have been addressed with focused regressions.

@pelikhan

pelikhan commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator Author

In response to the ADR requirement: accepted the documentation requirement, but the claimed committed draft was absent after the blocked workflow push. Added and linked ADR-75323, covering the final constrained read policy, strict HTML filtering, alternatives, limits, and partial-publication behavior.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot

Copilot assignment requested for the following outstanding work:

  1. Update this branch with the latest main using make merge-main, resolving any conflicts and preserving the intended changes.
  2. Review (actions/setup/js/issue_artifacts.test.cjs:30): 1. Compiler/runtime parity check is duplicated. What this is: a second compiler/runtime schema-sync assertion. Problem: TestSafeOutputsToolsJSONInSync in pkg/workflow/safe_outputs_tools_test.go already compares every tool object, so the compiler lookup and equality here duplicate a repository-wide check. Fix: remove the compiler lookup and expect(runtime).toEqual(compiler), keeping the focused runtime-shape assertions. If we skip it: schema changes require maintaining two parity tests. - Support issue artifacts in create-issue safe outputs #75323 (comment)
  3. Review (actions/setup/js/issue_artifacts.cjs:66): [/codebase-design] "body" in artifact === "path" in artifact is correct, because in binds tighter than ===, but it reads like a typo. A reviewer could easily misjudge it. - Support issue artifacts in create-issue safe outputs #75323 (comment)
  4. Review (actions/setup/js/create_issue.cjs:1350): [/diagnosing-bugs] This early return reports the attachment failure but skips all post-create steps: copilot assignment (around L1353) and sub-issue linking (around L1452). The issue already exists on GitHub, so a partial-failure result leaves it unassigned and unlinked with no follow-up. - Support issue artifacts in create-issue safe outputs #75323 (comment)
  5. Fix failing check safe_outputs (FAILURE): https://github.com/github/gh-aw/actions/runs/42175866417/job/127756241041.

Once you start work, post this work summary as a PR comment without the leading Copilot mention, including the Sous-chef head, work, and state lines below, to record that the assignment is running. Apply the necessary fixes on this PR's existing branch, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved; stop when only human review or CI remains. Do not merge or trigger CI.

Sous-chef requested-head: 40486df
Sous-chef requested-work: 245b57855674208bf76c04d3bd1f108f060c2028cc14ce1910e395d14bdfc59f 8b4de72fd9295affb683ba5bbd43fc2af4d0ca9c170ea021d125532a4e3c4621 c7cf93e497befdd5e698d00101b0703e4101fe4133d86d433f7c170d07402b7e cda751de3ffc94d2e91aea8d97365d364a6f08a4ec7752ec3cc4e23ab4222875
Sous-chef requested-state: fcb8c8fe97634831979e7310f37bc77bc030a968afd9311a66bdbac362a5b9cc

Generated by 👨🍳 PR Sous Chef · pi · haiku45 · ~5 AIC · ⌖ ~13 AIC · ⊞ 1.2K · ◷
Comment /souschef to run again

Preserve both safe-output specification revisions and recompile merged workflows.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan
pelikhan merged commit e4b8855 into main Nov 6, 2026
65 checks passed
@pelikhan
pelikhan deleted the pelikhan/issue-artifacts branch November 6, 2026 07:42

Copilot AI commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

@copilot

Copilot assignment requested for the following outstanding work:...

Merged latest main and resolved the spec conflict in c32708b. The schema test already contains only the focused runtime assertions, hasBody/hasPath is already explicit, and the partial-artifact-failure path already continues through assignment and parent linking; regression tests cover that. The reported safe_outputs failure is the expected branch-protection check rejecting a push because the token cannot read protection rules, not a code/test failure. Final change-scoped checks passed, including 585 impacted JavaScript tests; the CodeQL request timed out and its tool instructed not to retry.

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v1.2.1

github-actions Bot added a commit that referenced this pull request Nov 7, 2026
…ory app auth, environment deployment

Sync .github/aw with #75323, #74941, #74937, and #74938.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

5 participants