[safe-output-health] Safe Output Health Monitor — 2026-07-31 Daily Audit (99.29% success, 1 new pattern) #49272
Closed
Replies: 2 comments
|
This discussion was automatically closed because it expired on 2026-08-01T05:45:36.254Z.
|
0 replies
|
This discussion was automatically closed because it expired on 2026-08-01T05:45:36.254Z.
|
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.
Executive Summary
Audit window: 2026-07-30 ~20:10 UTC → 2026-07-31 ~05:00 UTC (last 24h). Of 144 total workflow runs, 140 carried a
safe_outputsjob; 139/140 (99.29%) succeeded. 1 in-scope hard failure at theProcess Safe Outputsstep: §30577084701 (Smoke Copilot,workflow_dispatchdispatched from PR #49116). No agent-job or detection-job failures are included in this report — those are out of scope for this monitor.This is a healthy day overall: none of the five standing recurring clusters (review-comment 422, Changeset Generator bundle-transport, PR Sous Chef scheduled-target-resolution,
assign_to_agentguess-unresolved, target-star fallback family) recurred in this window. One new pattern was identified and logged.Job / Item Statistics
All safe-output types (
create_issue,create_discussion,add_comment,create_pull_request,push_to_pull_request_branch, etc.) are actuated inside a single consolidated GitHub Actions job namedsafe_outputs, with the actuation logic in one step,Process Safe Outputs(followed byUpload Safe Outputs Items). There are no longer separate per-type jobs in the compiled workflows.safe_outputsjobsafe_outputsjob succeededsafe_outputsjob hard-failed (in scope)Error Cluster: NEW — Smoke Copilot zero-item
Process Safe Outputshard-failRun: §30577084701 — Smoke Copilot,
workflow_dispatch, branchcopilot/review-install-copilot-cli-script, dispatched from PR #49116.Process Safe Outputsstep: failure (90s).Upload Safe Outputs Itemsstill ran afterward and succeeded — partial-failure isolation is working as designed.created_items=0,safe_items=0); actuation posture flipped from this workflow's baselinewrite_capabletoread_only. Theagenticworkflows auditMCP tool classified the run "risky" (reason_codes: posture_changed, run_unsuccessful)."Workflow Failed"/error_count=1finding — no step-level stdout/stderr. This is the same recurring observability gap documented in at least 8 prior audits (06-23, 06-26, 07-11, 07-20, 07-23, 07-30, now 07-31).Root cause analysis and classification reasoning
This failure is structurally similar to the 2026-07-11
firewall_report_process_safe_outputs_hardfail_create_discussion_not_wiredpattern (zero items + job hard-fail), but occurs on a different workflow and trigger (aworkflow_dispatchsmoke test against an in-review PR's own branch, not a scheduled production job). It was logged as a distinct new pattern rather than merged into that entry.Working hypothesis: PR #49116 modifies the Copilot CLI install script that Smoke Copilot exists to exercise. If the script change altered engine setup/output behavior on that branch, the agent may have produced no parseable output, and
Process Safe Outputschoked on malformed/empty input rather than cleanly no-op'ing (as the other 139 runs did without error). This cannot be confirmed without the step's raw output. Production impact: false — this is a smoke test against a PR under review, not scheduled automation, so it does not affect production discussion/issue/PR creation.Root Cause Analysis (cross-cutting)
The single most-repeated, highest-leverage finding across 8+ consecutive audits remains: the
Process Safe Outputsstep's raw stdout/stderr is not recoverable from either the pre-bundledrun_summary.jsonlog artifacts or theagenticworkflows auditMCP tool — both surface only a generic error count/finding, never the actual thrown error. This has blocked exact confirmation of essentially every in-scopesafe_outputsjob hard-failure this monitor has ever flagged, including today's.Recommendations
Critical / Observability (top priority, unaddressed for 8+ audits):
Process Safe Outputsstep's stdout/stderr into the downloadable log artifact on failure (or expose it via the audit MCP tool), so future hard-failures can be root-caused directly instead of inferred from item-count/workflow shape.Bug fixes ready to ship (highest-confidence, still open):
pr_review_buffer.cjs:554— one-line predicate fix: broadenerrorMessage.includes("Line could not be resolved")to also match"Path could not be resolved", i.e.(errorMessage.includes("Line could not be resolved") || errorMessage.includes("Path could not be resolved")) && comments.length > 0. Fixesreview_path_unresolved_422's Path variant — 6 occurrences since 2026-05-21 (most recently 07-20, 07-23), fix unvalidated for 58+ consecutive audits because the Path variant hasn't recurred since the fix was scoped, but the Line-only fix won't catch it when it does.create_pull_request/push_to_pull_request_branchwithpatch-format:bundle— add-c safe.directory=/home/runner/work/gh-aw/gh-aw(or'*') to the bridge's git invocation. Affects the Changeset Generator production release-notes workflow (2 confirmed hard-fails: 06-17, 06-23/06-26), absent/unexercised for ~35 days but unvalidated.Process improvements:
Work Item Plans
Process Safe Outputsstep log on failurepr_review_buffer.cjs:554Path-variant predicate + add regression testsafe.directoryto safeoutputs bridge git invocation (bundle transport)add_labels/remove_labels/update_issue/add_commentvs.create_pull_request_review_commentHistorical Context / Trends
assign_to_agentprobable recurrence, unconfirmed).The
Process Safe Outputsstep-log observability gap has now blocked root-cause confirmation in every single one of the last 8 audits with an in-scope hard failure (06-23, 06-26, 07-11, 07-20, 07-23, 07-30, 07-31) — it is the single most consequential unaddressed item in this monitor's history.Metrics / KPIs
pr_review_buffer.cjs:554, bridgesafe.directory)Next Steps
pr_review_buffer.cjs:554Path-variant predicate fix + regression test.safe.directoryto the safeoutputs bridge's git invocation for bundle-transport pushes.Process Safe Outputsfailures (unblocks root-causing this and all prior unconfirmed clusters).References:
assign_to_agentrecurrenceAll reactions