Uh oh!
There was an error while loading. Please reload this page.
feat: raise safe_outputs default timeout to 45m and add safe-outputs.timeout-minutes frontmatter - #38361
Conversation
…ault 45min - Change default safe_outputs job timeout from 15 to 45 minutes - Add `safe-outputs.timeout-minutes` frontmatter option to override the default - Add `TimeoutMinutes int` field to `SafeOutputsConfig` struct - Parse `timeout-minutes` from safe-outputs frontmatter map (handles uint64, int, int64, float64) - Add `timeout-minutes` property to the main_workflow_schema.json for validation and autocomplete - Update docs/reference/frontmatter-full.md with the new field - Update all tests expecting timeout-minutes: 15 to expect 45 - Add TestBuildConsolidatedSafeOutputsJobTimeoutMinutes unit test - Add TestCompileSafeOutputsTimeoutMinutesFromFrontmatter end-to-end test Co-authored-by: dsyme <7204669+dsyme@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Raises the consolidated safe_outputs job timeout default and introduces a safe-outputs.timeout-minutes frontmatter field so long-running workflows can override the timeout without patching compiler code.
Changes:
- Increased consolidated
safe_outputsjob default timeout from 15 → 45 minutes. - Added
safe-outputs.timeout-minutesparsing and plumbing into job generation. - Updated schema/docs and adjusted/added tests to cover the new default + override behavior.
Show a summary per file
| File | Description |
|---|---|
| pkg/workflow/safe_outputs_config.go | Parses safe-outputs.timeout-minutes from frontmatter into SafeOutputsConfig. |
| pkg/workflow/compiler_types.go | Adds TimeoutMinutes to SafeOutputsConfig. |
| pkg/workflow/compiler_safe_outputs_job.go | Applies configured timeout to the consolidated safe_outputs job (default 45). |
| pkg/workflow/safe_output_refactor_test.go | Updates assertions to expect the new default timeout in YAML output. |
| pkg/workflow/compiler_safe_outputs_job_test.go | Updates existing timeout assertions; adds unit + e2e coverage for timeout override. |
| pkg/workflow/compiler_jobs_test.go | Updates consolidated job timeout expectations to 45 minutes. |
| pkg/workflow/compile_outputs_label_test.go | Updates compiled lock assertions to expect timeout-minutes: 45. |
| pkg/workflow/compile_outputs_issue_test.go | Updates compiled lock assertions to expect timeout-minutes: 45. |
| pkg/workflow/compile_outputs_comment_test.go | Updates compiled lock assertions to expect timeout-minutes: 45. |
| pkg/parser/schemas/main_workflow_schema.json | Adds safe-outputs.timeout-minutes to schema (integer, min 1). |
| docs/src/content/docs/reference/frontmatter-full.md | Documents the new safe-outputs.timeout-minutes field. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 11/11 changed files
- Comments generated: 4
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@copilot review all comments and address unresolved review feedback. Please fix the timeout-minutes validation/type-list issues and then summarize any remaining blockers.
|
…patterns in test-impacted-go
The
safe_outputsjob had a hardcoded 15-minute timeout that couldn't be overridden, causing workflows with many sequential safe output operations (e.g.push_to_pull_request_branchagainst large monorepos) to be killed mid-run.Changes
buildSafeOutputsJobFromPartssafe-outputs.timeout-minutesfield — lets workflows override the default:timeout-minutestomain_workflow_schema.json(validation + editor autocomplete)frontmatter-full.mdTestBuildConsolidatedSafeOutputsJobTimeoutMinutes(unit) andTestCompileSafeOutputsTimeoutMinutesFromFrontmatter(end-to-end)