[safe-output-health] 🏥 Safe Output Health Report - 2026-07-20 #46714
Closed
Replies: 2 comments
-
|
Cave bot tap wall. Smoke run 29720659363 say hello.
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
This discussion has been marked as outdated by Safe Output Health Monitor. A newer discussion is available at Discussion #46981. |
Beta Was this translation helpful? Give feedback.
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
run_summary.jsontriaged directly fromjob_details[])Safe Output Job Statistics
safe_outputsjob = successsafe_outputsjob = failureObservable item mix is limited to the two failing runs (only they carried
summary.jsonon disk). See the metrics caveat below.Error Clusters
Cluster 1 — Review-comment actuation hard failure (HIGH) 🔴
pull_request(branchfix/yamllint-trailing-spaces-custom-steps)create_pull_request_review_commentErrorCount/Noop/MissingTool = 0,safe_outputsjob = failure atProcess Safe Outputsreview_path_unresolved_422family — GitHub returns422 "Path could not be resolved"/"Line could not be resolved"and the body-only fallback atpr_review_buffer.cjs:554fails to rescue it. The siblingtarget_star_review_comment_no_pr_number_fallbackis also plausible.Why the exact variant can't be confirmed (observability gap)
The
Process Safe Outputsstep stdout was not pre-bundled, and the sandbox blockedjq/bash/caton/tmpwhile the audit MCP tool surfaces only run diffs — not the step log. This is the 4th distinct in-scope JOB-layer failure class with an unreadable exact error (after 06-23 & 06-26 Changeset Generator and 07-11 Firewall Collector). Without the step log, we cannot distinguish "fallback fired and still failed" from "predicate never matched."Cluster 2 — Smoke all-handler job failure (MEDIUM, smoke/diagnostic) 🟡
workflow_dispatch(issue_comment on PR feat(copilot): supportmodel: auto/model: noneto bypass model pinning on automatic-selection plans #46556, branchcopilot/fix-copilot-engine-issue)send_slack_message,upload_artifact,add_comment,create_issue,create_discussion,create_check_run,set_issue_type,comment_memory,submit_pull_request_reviewsafe_outputsjob = failure atProcess Safe Outputsadd_comment→discussion orcreate_discussionneedingdiscussions:writethe smokesafe_outputstoken lacks — seeadd_comment_discussion_resource_not_accessible_by_integration) or an edge handler (set_issue_type/create_check_run/comment_memory/send_slack_message).Root Cause Analysis
API / Actuation Issues
Both failures are at the actuation layer (
Process Safe Outputs), not the agent or network layer — firewall was clean (0 blocked) on both. Cluster 1 is a single-item review-comment submission failing atomically; Cluster 2 is one-of-nine handlers in an all-handler smoke.Permission Issues
Cluster 2's likely
discussions:writescope gap on the smokesafe_outputstoken is a recurring, documented smoke-only defect (add_comment_discussion_resource_not_accessible_by_integration, occurrences on 06-14/06-15/06-24).Observability (cross-cutting)
Neither exact error is recoverable — the
Process Safe Outputsstep log is not pre-bundled. This is now the 4th such opaque JOB-layer failure class in audit history.Recommendations
Critical / High
Process Safe Outputsstep stdout on failure, then re-read run §29716501145. If the error isPath could not be resolved, apply the known one-line predicate fix atactions/setup/js/pr_review_buffer.cjs:554to also match"Path could not be resolved"(the retry block already handles both cases), and add the mirroredPath-variant unit test.create_pull_request_review_comment,submit_pull_request_review(all line-anchored reviewers).Observability (recurring — raise once, applies to all JOB-layer failures)
Process Safe Outputsstep stdout/stderr on failure — Priority: Highfailure. This unblocks root-causing Cluster 1 and every future opaque JOB failure.Configuration / Defensive
Smoke
safe_outputstokendiscussions: write— Priority: Medium (smoke-only)discussions: writein the compiled lock; otherwise point the smoke target at a resolvable issue/PR or expect a graceful skip.Soft-skip parity across handlers — Priority: Medium
create_pull_request_review_comment's existing behavior. This blunts the blast radius of both clusters.Work Item Plans
Work Item 1: Root-cause & fix review-comment 422 recurrence
create_pull_request_review_comment. Confirm whether it is thePath-variant ofreview_path_unresolved_422and fix.Process Safe Outputsstep log captured for the failing runpr_review_buffer.cjs:554predicate matches bothLine/Path; regression test addedWork Item 2: Pre-bundle Process Safe Outputs step log on failure
Process Safe Outputsstdout/stderr artifact when the step fails, so JOB-layer failures are root-causable.Work Item 3: Smoke discussions-scope / handler-failure isolation
discussions: writeor adjust the smoke target as appropriate.Historical Context
Trends
review_path_unresolved_422family — happy-path healthy but thePath-variant fallback unvalidated for 52 consecutive audits — now has its first plausible in-production hard-fail data point since 2026-05-27. This elevates the long-deferred observability fix from "nice-to-have" to "blocking root cause."patch-format:bundlebundle-transport hardfail — ABSENT ~24 days, still the highest-priority unvalidated production signature.Metrics and KPIs
create_pull_request_review_comment(1 hard failure this window)behavior_fingerprint.actuation_stylereportedread_onlyon all 37 runs, including the two that demonstrably actuated (1 and 9 items). The actuation fingerprint /SafeItemsCountundercounts bash-safeoutputsCLI-wrapper writes (recurring blind spot). The day is not read-only; the full write-mix for the ~15 successful reviewer/write runs is not enumerable because only the two failing runs carriedsummary.jsonon disk.safe_outputsjob conclusions read directly fromjob_details[]— this metric is authoritative and complete for the window.Next Steps
Process Safe Outputsstep log for run-29716501145 and confirm the review-comment 422 variantpatch-format:bundlere-exercise (unvalidated ~24d)References:
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
awmgmcpgSee Network Configuration for more information.
Beta Was this translation helpful? Give feedback.
All reactions