Repository navigation
Conversation
Refresh the verified Node image digest across compiler caches and generated workflows, tighten dependency floors and fixable-High gates, and enable guarded family tracker deduplication. Refs #69880 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
✅ 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.
|
|
✅ 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.
|
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅
|
|
✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft. Design Decision Gate 🏗️Outcome: 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.
|
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.
Request changes
The broadened close-issue title prefix weakens the safe-output authorization boundary: with target: "*", the workflow can close canonical or unrelated labeled trackers if the agent misidentifies a duplicate. Keep title matching restrictive or enforce exact-title/duplicate constraints in the tool configuration rather than relying solely on prompt instructions.
One blocking issue was found and posted inline.
🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt50 · 2.24 AIC · ⌖ 0.679 AIC · ⊞ 1.6K
Comment /review to run again
Regenerate workflow locks from merged sources, retaining the verified Node image pin and upstream package-install changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /diagnosing-bugs and /tdd — commenting with two actionable findings, no blockers.
📋 Key Themes & Highlights
Key Themes
- Prompt-only safeguards for canonical-tracker protection: the new exact-title duplicate consolidation logic (step 5) relies entirely on prose instructions ("Never close the canonical tracker, #52657, or operational-failure issues") rather than a structural constraint in the
close_issuesafe-output config. The schema (required_title_prefix+required_labels) does not actually distinguish canonical vs. duplicate issues sharing the same title/labels — worth a follow-up hardening pass. - New gate regex test coverage is synthetic-only:
daily_squid_image_scan.test.cjsadds a solid parametrized table for the[High].*(fix: ...)gate, but does not test the realistic multi-image/mixed-severity log shape grype will actually emit, which is where regex-anchoring bugs tend to surface.
Positive Highlights
- ✅ Root-cause fix for the four fixable CVEs is a straightforward, verifiable digest bump synced consistently across all three pin caches (
actions-lock.json,pkg/actionpins/data/action_pins.json,pkg/workflow/data/action_pins.json) — a new test (uses the same immutable Node image pin...) guards this invariant going forward. - ✅ npm bundled-dependency patch versions (
brace-expansion@^5.0.11,undici@^6.28.1) are now also asserted inscripts/test_publish_safe_outputs_node.py, closing a gap where the Dockerfile comment and the actualnpm installconstraint could silently drift. - ✅ The new High-with-available-fix gate (
grep -qE ': (error|warning): \[High\].* \(fix: [^)]+\)') correctly distinguishes "fixable" from "not-fixed" High findings (e.g. the documentedGHSA-ch52-4w7c-c8xpexception in http-cache-semantics), avoiding over-blocking on upstream-unfixable issues. - ✅ PR description is transparent about scope limits (ENOSPC Docker rebuild workaround, partial remediation of #69880) — good faith accounting rather than overclaiming.
345 mechanically-generated .lock.yml digest-only diffs were excluded from detailed review as expected (low risk, verified by make recompile/drift checks per the PR description).
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · 105.7 AIC · ⌖ 15.1 AIC · ⊞ 10.2K
Comment /matt to run again
Comments that could not be inline-anchored
.github/workflows/daily-squid-image-scan.md:217
Content redacted to fit size limit.
<details>
<summary>💡 Suggestion</summary>
Consider adding a structural guard — e.g. an explicit required-labels exclusion, or hard-coding #52657 as an excluded issue number in the safe-outputs config — so the "never close the canonical tracker" rule isn’t solely enforced by prompt instructions that an LLM could misread under ambiguous evidence.
</details>
@copilot please address this.
actions/setup/js/daily_squid_image_scan.test.cjs:62
[/tdd] Good gate-logic test table, but it only covers the [High].*(fix: ...) regex via synthetic log lines — there is no test asserting the end-to-end behavior when node:lts-alpine base-image CVEs (upstream, not vendored) appear alongside a vendored finding in the same log, which is the actual multi-line scenario grype will produce in production.
Content redacted to fit size limit.
@copilot please address this.
Restore an enforceable title-prefix boundary and report family duplicates for maintainer review. Exercise the compiled close handler against canonical, operational-failure, unrelated, and eligible legacy issues. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
In reply to comment 6299495329: No code change is needed for this completion notice. The concrete authorization finding from this review is addressed in 02e5b8d and its inline thread. |
|
In reply to comment 6299495466: No code change is needed because this notice reports no actionable finding. I did not treat the no-action outcome as a substitute for validation. |
|
In reply to comment 6299499628: No code change is requested by this test-analysis notice. Runtime close-handler regression tests and the final validation gate were run independently of the reported no-action outcome. |
|
In reply to comment 6299500219: No code change is needed for a review-start notice containing no finding or change request. Concrete review feedback is handled separately. |
|
In reply to comment 6299506669: No code change or ADR is requested by this no-action notice. I have not treated the reported outcome as independent evidence of ADR compliance. |
|
In reply to comment 6299650945: Accepted the authorization concern recorded here. Family duplicates are now reported for maintainer review, and the restrictive legacy-only closure boundary is enforced and regression-tested in 02e5b8d. |
There was a problem hiding this comment.
🔵 Needs a closer look
The shared-image rollout remains independently unverified, and scan and issue-closure safeguards need correction.
2 open issues
What changed in this PR
Refreshes gh-aw’s shared Node image and improves container vulnerability tracking as partial remediation for #69880.
Changes:
- Synchronizes Node image pins across caches and generated workflows.
- Raises brace-expansion and undici security floors.
- Adds fixable-High gating and clarifies ownership, duplicate consolidation, and remediation reporting.
| File | Description |
|---|---|
scripts/test_publish_safe_outputs_node.py |
Checks dependency security floors. |
pkg/workflow/data/action_pins.json |
Refreshes embedded Node pin. |
pkg/actionpins/data/action_pins.json |
Synchronizes embedded Node pin. |
actions/setup/js/Dockerfile.safe-outputs-mcp |
Raises npm dependency security floors. |
actions/setup/js/daily_squid_image_scan.test.cjs |
Covers pins, gates, and tracking constraints. |
.github/workflows/smoke-pi-routed.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-pi-routed-claude.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-pi-auto.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-github-codex.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-copilot-sdk-routed.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-copilot-sdk-routed-claude.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-copilot-routed.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-copilot-routed-steering.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-copilot-routed-claude.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-codex-bare-auto.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-codex-auto.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-claude-routed.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-claude-dynamic.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-claude-copilot.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-claude-copilot-auto.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-claude-auto.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-azure-pi.lock.yml |
Refreshes Node image references. |
.github/workflows/smoke-azure-codex.lock.yml |
Refreshes Node image references. |
.github/workflows/schema-feature-coverage.lock.yml |
Refreshes Node image references. |
.github/workflows/issue-triage-agent.lock.yml |
Refreshes Node image references. |
.github/workflows/issue-arborist.lock.yml |
Refreshes Node image references. |
.github/workflows/github-remote-mcp-auth-test.lock.yml |
Refreshes Node image references. |
.github/workflows/dev.lock.yml |
Refreshes Node image references. |
.github/workflows/daily-squid-image-scan.md |
Updates gating and burn-down tracking guidance. |
.github/workflows/daily-github-docs-seo-optimizer.lock.yml |
Refreshes Node image references. |
.github/workflows/copilot-pr-merged-report.lock.yml |
Refreshes Node image references. |
.github/workflows/codex-github-remote-mcp-test.lock.yml |
Refreshes Node image references. |
.github/aw/actions-lock.json |
Updates repository Node image pin. |
.changeset/patch-container-cve-burndown.md |
Documents the patch release. |
Review effort: Max
Keep shipped and refreshed candidate evidence separate, require committed regeneration before reporting adoption, and cover failed canonical updates. Avoid grep pipeline SIGPIPE masking in large mixed-image gate logs under the Actions shell. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Follow-up to comment 6299495329: No additional change is requested by this repeated completion notice. Its authorization finding was addressed by 02e5b8d and remains enforced. |
|
Follow-up to comment 6299495466: No additional code change is requested by this repeated no-action notice. The final validation gate was run independently for this batch. |
|
Follow-up to comment 6299499628: No additional code change is requested by this repeated test-analysis notice. This batch was independently checked with 161 focused tests and the final validation gate. |
|
Follow-up to comment 6299500219: The completion notice itself requires no code change. The associated authorization and mixed-log coverage findings are addressed by the restricted close handler and large-log regression tests. |
|
Follow-up to comment 6299506669: No additional code change or ADR is requested by this repeated no-action notice. Its outcome is not being used as independent evidence of ADR compliance. |
|
Follow-up to comment 6299650945: The saved authorization concern remains addressed by the legacy-only close boundary in 02e5b8d. This batch preserves that restriction and verifies it even after a canonical update fails. |
|
Follow-up to comment 6299942420: No additional fix is requested by this prior acknowledgement. The referenced authorization fix remains enforced in the current workflow. |
|
Follow-up to comment 6299942898: No additional code change is needed; this already distinguishes the no-action notice from validation evidence. The current batch has been validated separately. |
|
Follow-up to comment 6299943490: No additional code change is requested by this prior reply. Scanner and close-handler validation was rerun for the current batch. |
|
Follow-up to comment 6299943990: Partially accepted: the underlying notice now reports review completion rather than review start. The notice itself needs no code change; concrete associated findings were addressed separately. |
|
Follow-up to comment 6299944496: No additional code change or ADR is requested by this prior reply. The no-action status remains separate from compliance evidence. |
|
Follow-up to comment 6299944946: The authorization decision in this prior reply remains valid, and the legacy-only restriction is preserved. This batch adds a failed-canonical-update regression rather than reopening automatic family closure. |
Regenerate workflow conflicts from merged sources while retaining shipped-pin scan evidence, candidate isolation, and legacy-only close authorization. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Include the additional vendor-domain and MCP diagnostic fixes that landed during merge validation, regenerating workflow locks without changing the container scan safeguards. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🎉 This pull request is included in a new release. Release: |

Summary
ghcr.io/github/gh-aw-nodefrom digest11c2c544876c...to verified published multi-platform digest41835613992d..., clearing four fixable High CVEs in libexpat, zlib, and pcre2. Synchronize both embedded caches and all 345 generated workflow references; non-scan workflow changes are strictly mechanical digest replacements.Container findings for ...title prefix, required labels, and duplicate state reason; family, index, operational-failure, and unrelated scan tracker titles are rejected by the runtime handler. A failed canonical update does not permit family closure.Refs #69880 - partial remediation, not an automatic closure. The all-image acceptance criterion remains unverified, and no source burn-down issue was closed.
Evidence and validation
linux/amd64andlinux/arm64using the 2026-10-20 vulnerability database. Remaining HighGHSA-ch52-4w7c-c8xpin http-cache-semantics 4.2.0 is reportednot-fixed.make agent-report-progresspassed with compatible Bash, including formatting/lint, typecheck, focused JavaScript tests, schema checks, and full 345-workflow drift validation.make recompilepassed; focused container-pin Go tests and 10 publisher tests passed. Scanner, close-issue, and close-helper suites passed all 161 tests.Remaining limitations
The shared Docker VM returns
ENOSPCwhen rebuilding the changed Dockerfile. Scanning was recovered using host storage and a checksum-verified native scanner. No unrelated Docker resources were pruned. Other scanned images are built upstream and still require verified fixed image releases/pins and rescans before #69880 can be completed. Family duplicate closure remains a maintainer action, not a prompt-only automated authorization. Investigation evidence is preserved in issue artifact #1.