Skip to content
Recued
Menu
← Back to recipes

Propose Linear work for GitHub Actions failure

by recued-core v1

Scheduled detection half of the GitHub Actions to Linear exception handoff loop. It reads recent failed workflow runs for one configured repository, excludes pull-request-attached runs by default, fetches failed job names for the first unhandled non-PR run, writes one data.shared proposal, and notifies the owner to review whether the failed run should become Linear work. It never creates Linear issues, comments on GitHub, reruns workflows, updates GitHub issues or pull requests, changes branch protection, mutates Linear projects, or calls arbitrary APIs. GitHub Actions notifications, workflow logs, rerun controls, branch protection, Linear Reviews, Linear's GitHub integration, and GitHub issue syncing own their normal paths; this recipe only creates a Recued-visible exception proposal that an owner can approve or dismiss with create-approved-linear-issue-from-github-run.

Complete workflow

Workflow pack that closes the loop between exception-scoped GitHub Actions failures and owner-approved Linear follow-up work. It depends on the GitHub and Linear capability packs, detects one recent unhandled failed workflow run at a time, writes a data.shared proposal, notifies the owner, provides a manual action recipe that either creates the Linear issue and links it back to the GitHub workflow run or dismisses the proposal, and watches created Linear issues until they reach a terminal state. It excludes pull-request-attached runs by default because Linear Reviews already surfaces PR checks and CI-failure notifications. It does not replace GitHub Actions notifications, GitHub workflow logs, rerun controls, branch protection, Linear's GitHub integration, Linear PR automation, or GitHub issue syncing; use it only when those normal paths are insufficient and Recued-visible cross-system closure state is needed.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Propose Linear work for GitHub Actions failure
This recipe Background automation

Scheduled detection half of the GitHub Actions to Linear exception handoff loop. It reads recent failed workflow runs for one configured repository, excludes pull-request-attached runs by default, fetches failed job names for the first unhandled non-PR run, writes one data.shared proposal, and notifies the owner to review whether the failed run should become Linear work. It never creates Linear issues, comments on GitHub, reruns workflows, updates GitHub issues or pull requests, changes branch protection, mutates Linear projects, or calls arbitrary APIs. GitHub Actions notifications, workflow logs, rerun controls, branch protection, Linear Reviews, Linear's GitHub integration, and GitHub issue syncing own their normal paths; this recipe only creates a Recued-visible exception proposal that an owner can approve or dismiss with create-approved-linear-issue-from-github-run.

githublineargithub-actionsci
by recued-core pinned v1

Owner-invoked action half of the GitHub Actions to Linear exception handoff loop. It reads one awaiting_owner_approval proposal written by github-linear-ci-failure-proposal, then either creates exactly one Linear issue from deterministic GitHub context or dismisses the proposal as no Linear work needed. Running this recipe is the owner's approval or decline. It re-reads the GitHub workflow run before creating Linear work and takes no outward-facing action when there is no pending proposal, the live workflow run no longer has conclusion failure, or the required Linear destination is missing. Linear Reviews, GitHub Actions notifications, workflow logs, rerun controls, branch protection, Linear's GitHub integration, and GitHub issue syncing should own the normal path.

githublineargithub-actionsci
by recued-core pinned v1

Scheduled feedback half of the GitHub Actions to Linear exception handoff loop. It reads Linear issues created by create-approved-linear-issue-from-github-run, reads the original GitHub workflow run for current context, closes the Recued data.shared handoff when the Linear issue reaches a terminal state, and optionally notifies the owner to verify the current CI state. It does not update GitHub, rerun workflows, comment on GitHub, update Linear issues, create comments, change branch protection, or call arbitrary APIs. Linear Reviews, GitHub Actions notifications, logs, reruns, branch protection, Linear's GitHub integration, and GitHub issue syncing own normal CI operations; this watcher only records Recued-visible exception closure.

githublineargithub-actionsci
by recued-core pinned v1
View pack details, dependencies, and permissions →
How it works 55 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Data fetch
existing_proposals ?
Process (54 steps)
existing_proposals_family filter
Filter by condition
configured_repo trim
Trim whitespace from setting repo
configured_status trim
Trim whitespace from setting workflow status
configured_branch trim
Trim whitespace from setting branch
configured_event trim
Trim whitespace from setting event
configured_created_filter trim
Trim whitespace from setting created query override
negative_lookback_hours math
Calculate 0 minus setting lookback hours
lookback_since date_add
Add negative lookback hours hours to
lookback_created_filter template
Generate text from a template
has_created_filter_override compare
Check if configured created filter has data
created_filter ternary
Apply ternary
runs_raw ?
workflow_runs default
Apply default
run_search_rows slice
Take a subset of
failed_run_rows filter
Filter by condition
non_pr_failed_run_rows filter
Filter by condition
include_pr_runs compare
Check if setting include pull request runs equals true
eligible_failed_run_rows ternary
Apply ternary
existing_run_ids map
Extract from each item
unhandled_run_rows filter
Filter by condition
candidate_rows slice
Take a subset of
candidate_count count
Count items in unhandled run rows
has_candidate compare
Check if candidate rows has data
run_id default
Apply default
run_number default
Apply default
workflow_name default
Apply default
run_display_title default
Apply default
run_url default
Apply default
run_status default
Apply default
run_conclusion default
Apply default
run_event default
Apply default
head_branch default
Apply default
head_sha default
Apply default
run_attempt default
Apply default
run_created_at default
Apply default
run_updated_at default
Apply default
has_run_id compare
Check if run id is greater than 0
has_repo compare
Check if configured repo has data
skip_proposal any
Check if any of the conditions are true
jobs_raw ?
skip: step.skip_proposal equal true
jobs default
Apply default
failed_jobs filter
Filter by condition
failed_job_rows slice
Take a subset of
failed_job_names map
Extract from each item
failed_job_count count
Count items in failed jobs
default_linear_title template
Generate text from a template
skip: step.skip_proposal equal true
default_linear_description template
Generate text from a template
skip: step.skip_proposal equal true
proposal_key template
Generate text from a template
skip: step.skip_proposal equal true
now date_add
Add 0 minutes to
write_proposal ?
skip: step.skip_proposal equal true
notify_enabled compare
Check if setting notify owner equals true
should_notify all
Check if all conditions are true
send_owner_notification ?
skip: step.should_notify not_equal true
summary to_summary
Format results as a summary card
Settings 18 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

repo setting =
event setting =
branch setting =
github setting =
channels setting = in_app
row limit setting = 25
notify owner setting = true
linear team id setting =
lookback hours setting = 24
linear priority setting = 2
linear state id setting =
workflow status setting = failure
exception reason setting = needs_recued_closure_state
failed job limit setting = 5
linear project id setting =
linear assignee id setting =
created query override setting =
include pull request runs setting = false

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

Where it runs

Device + server Runs on your device (browser) or your server.

Permissions it requires

Send notificationsRead your Github connection
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.shared

About

Tags

githublinear githubgithub-actionslinearcifailureexceptionproposaldeveloper-workflowwork-trackingclosed-looppack:github-linear-ci-failure-handoff

Details

55 steps 18 configurable settings recipe_id: github-linear-ci-failure-proposal