[safe-output-health] Safe Output Health Report - 2026-08-22 #54725
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-08-23T04:50:29.733Z.
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
🏥 Safe Output Health Report — 2026-08-22
Executive Summary
This audit is scoped strictly to safe-output job health (the job/step that processes and writes agent-declared outputs back to GitHub — comments, issues, PRs, etc.), per this monitor's mandate. Agent-job and detection-job failures are explicitly out of scope and are tracked by other monitors; 51 non-safe-output failures were observed in the sampled window (Code Simplifier, Design Decision Gate, Smoke Codex, Code Scanning Fixer, Daily Observability Report, Issue Arborist ×3, Agent Job Health Monitor, Daily BYOK Ollama Test, Duplicate Code Detector, AI Moderator, Agentic Workflow Audit Agent, and others) — all of these had
safe_items_count = 0, meaning no safe-output write was ever attempted, so they are agent/detection failures, not safe-output failures, and are excluded from the analysis below.Architecture note:
github/gh-awdoes not run separatecreate_issue/add_comment/create_pull_requestjobs as isolated GitHub Actions jobs. Each compiled workflow has a single consolidatedsafe_outputsjob that processes every safe-output type declared by that workflow (add-comment, create-issue, approve-workflow-run, resolve-pull-request-review-thread, etc.) in oneProcess Safe Outputsstep. So the statistics below are reported per-run/per-workflow rather than per-output-type, since output-type-level pass/fail isn't independently observable from the data this monitor can access.Safe Output Job Statistics
Error Clusters
Cluster 1:
safe_outputsjob fails at "Process Safe Outputs" step — isolated to PR Sous Chefsafe_outputs(the consolidated safe-output processing job)PR Sous Chefonly — no other workflow showed this patternsafe_outputsjob, so the exact validation error text could not be retrieved in this session. However:PR Sous Chefdeclares an unusually wide set of safe-output types in a single run:add-comment,approve-workflow-run(with a strictcjs.yml/cgo.yml/CWI.ymlallowlist plus a dynamic eligible-PR-number allowlist),resolve-pull-request-review-thread(requires exactPRRT_...node IDs),dismiss-pull-request-review,update-pull-request,push-to-pull-request-branch, andcreate-issue..github/workflows/pr-sous-chef.md) already contains multiple explicit, emphatic warnings to the agent about exactly the failure modes that would break this step — e.g. "never pass a review comment node ID (PRRC_...)", "Everyadd_commentmust includepr_number" (stated twice), "never fetch [reviewThreads] viagh pr view". These read as prior patches for recurring validation failures, suggesting the underlying issue is that a single malformed safe-output item (e.g., a bad thread ID format, a missing required field, or an out-of-allowlist workflow run) aborts the entire consolidatedProcess Safe Outputsstep rather than being rejected/skipped per-item while valid items still go through.Upload Safe Outputs Itemsstill succeeding after the failure — the items that were validated got uploaded as artifacts, but something in server-side processing of the batch (likely one bad item) caused the step to exit non-zero.Root Cause Analysis
API-Related Issues
None observed. Firewall/network telemetry for both failing runs showed 0% blocked requests; GitHub API rate limits were nowhere near exhausted (14,914–12,941 of 15,000 core requests remaining at failure time).
Data Validation Issues
The one confirmed cluster (above) is best explained as a data-validation issue: one or more items in a large, multi-type safe-output batch likely fails server-side schema/allowlist validation, and that failure appears to blow up the whole
Process Safe Outputsstep instead of degrading gracefully.Permission Issues
None observed in this window.
Network Errors
None observed in this window (0 blocked requests, no timeout indicators in either failing run's audit).
Other Issues
None — no
missing_tool, nomissing_data, no parsing errors were recorded in the aggregate metrics (total_missing_tools: 0,total_missing_data: 0across both batches).Recommendations
Critical Issues (Immediate Action Required)
None. The observed failure rate (2/364 safe-output attempts, 0.55%) is low and self-recovers on the next scheduled run.
Bug Fixes Required
Make
Process Safe Outputsdegrade per-item instead of failing the whole batch, for PR Sous Chef-style multi-type runssafe_outputsjob /Process Safe Outputsstep — likely in thegh-awcompiler's generated safe-output handler, not inpr-sous-chef.mditself, since this step is common infrastructure).Upload Safe Outputs Itemsafterward shows valid items were already captured.Process Safe Outputscan catch and log a per-item validation failure (e.g., a malformedresolve-pull-request-review-threadID, anadd-commentmissingpr_number, or anapprove-workflow-runoutside the allowlist) and continue processing remaining valid items, only failing the step for genuinely fatal errors (auth, API outage). This would turn workflow-level failures into partial-success logs, which is both more informative and reduces false "workflow failed" signals.safe_outputs(all workflows using multiple safe-output types are theoretically at risk, but only PR Sous Chef manifested it in this window — likely because of its unusually high type/volume combination).Surface the actual validation error text for
safe_outputsjob failures in a place the audit tooling can readagenticworkflows audit/logsMCP tools only expose job/step conclusions, not raw step console output, and none of the supportedartifactssets (activation, agent, all, detection, evals, experiment, firewall, github-api, mcp, usage) map to thesafe_outputsjob's own logs.safe_outputs-scoped artifact set to the audit/logs MCP tool, or have theProcess Safe Outputsstep write a structured error summary (which item failed, which safe-output type, why) to the job's step summary / an uploaded artifact, so future health audits (and maintainers) can see root cause without needing raw Actions log access.Configuration Changes
None required at this time — no rate-limit, permission, or firewall configuration issues were found.
Process Improvements
safe_items_countand job conclusion are the only per-run signals available; there is no breakdown by output type (e.g., how manyadd-commentvsresolve-pull-request-review-threaditems succeeded/failed within a run).Work Item Plans
Work Item 1: Root-cause and fix
Process Safe Outputsstep failures in PR Sous ChefProcess Safe Outputsstep with no other observable cause (no rate limiting, no firewall blocks, no missing tools/data). GivenUpload Safe Outputs Itemsstill succeeds afterward, the failure likely originates in validating one of the several safe-output types this workflow emits per run.resolve-pull-request-review-thread(strictPRRT_ID format) andapprove-workflow-run(dynamic allowlist substitution fromneeds.approval_allowlist.outputs.eligible_pull_request_numbers), since those are the two types with the most complex/fragile input contracts per the workflow's own defensive prompt text.Work Item 2: Extend audit/logs tooling to expose
safe_outputsjob raw logsagenticworkflows auditandlogsMCP tools currently support artifact setsactivation, agent, all, detection, evals, experiment, firewall, github-api, mcp, usage— none of which surface thesafe_outputsjob's own console output or the specific safe-output validation error. This blocked deeper root-causing in this audit.safe_outputs(or equivalent) artifact set is added, or the audit report'sjobs[]array includes asteps[].error_excerptfield for failed steps.agenticworkflowsMCP bridge to fetch and truncate the failed step's log excerpt (similar to how GitHub's own Actions UI shows the last N lines of a failed step).Historical Context
No prior safe-output health audits were found in cache memory (
/tmp/gh-aw/cache-memory/safe-output-health/was empty before this run) — this is the first audit of this kind. Today's findings have been persisted to2026-08-22.jsonandindex.jsonin that directory to enable trend comparison on the next run.Trends
safe_outputsjob failure in PR Sous Chef (2 occurrences, only workflow affected)Metrics and KPIs
safe_outputsjob, the other 1.4m in.Next Steps
Process Safe Outputsbatch (Work Item 1)safe_outputsjob error text for future audits (Work Item 2)References:
safe_outputsjob failure, 9 safe itemssafe_outputsjob failure, 1 safe itemAll reactions