Repository navigation
fix(ci): the unattended repair is felix-home's template again, pinned to the Felix commit it was copied from - #24
Merged
Conversation
… to the Felix commit it was copied from
.github/workflows/unattended.yml is engine/harness/templates/unattended.yml
at felix-home 685d37be (engine 0.49.168), whole, with {{FELIX_REPO}} and
{{FELIX_REF}} filled in and nothing else changed.
Actions runs a step with no shell as `bash -e {0}`. The old scope step's
`felix repair | tee` under pipefail ended there on any non-zero exit, before
rc was read, so a reached ceiling or a red path failed the job and labelled
nothing. Since felix-home #323 moved nothing to repair to exit 5, a dispatch
on a green branch or a superseded failure also fails the job, because the
unpinned checkout already reads that engine. The template's step reads every
status explicitly: 0 proceeds, 2 and 3 escalate with needs-founder, 1 and 4
fail the job, 5 passes having spent nothing.
The Felix checkout is pinned to 685d37be rather than felix-home's default
branch. The reason and its cost are written above the checkout, from the
template (felix-home #328).
Supersedes #22, whose step keeps the pipe.
Owner
Author
|
End to end:
On main's copy, the same dispatch would have ended the scope step at the pipe with exit 5, and the job would have been red. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A workflow file, so this one is yours to merge. It supersedes #22.
.github/workflows/unattended.ymlis now felix-home'sengine/harness/templates/unattended.ymlat685d37beedc4590a989ccd145db3069af8e7f76a, copied whole, with its two per-repository placeholders filled in:{{FELIX_REPO}}isLeavesJ/felix-homeand{{FELIX_REF}}is685d37beedc4590a989ccd145db3069af8e7f76a. Nothing else differs, and anyone can check that:diff <(git -C ~/Documents/Felix show 685d37beedc4590a989ccd145db3069af8e7f76a:engine/harness/templates/unattended.yml | sed -e 's#{{FELIX_REPO}}#LeavesJ/felix-home#' -e 's#{{FELIX_REF}}#685d37beedc4590a989ccd145db3069af8e7f76a#') .github/workflows/unattended.ymlWhat was wrong on main. Actions runs a step that names no shell as
bash -e {0}: every step of gate run 35866814309 printsshell: /usr/bin/bash -e {0}. The scope step ranset -uo pipefail; felix repair | tee, so any non-zero exit ended the step at the pipe beforercwas read. On main today, a reached ceiling (2) or a red path (3) fails the job and labels nothing, and every other non-zero exit fails it the same way. The step cut out of this file and run underbash -eagainst a stubfelix:felix repairexitneeds-founder, stopneeds-founder, stop#22 copied the #303 template's step. That fixes the case statement but keeps the
teepipe, and the same probe gives the same six rows as main.Main's copy checks out felix-home with no ref, so it has read engine 0.49.164 or later since #323 landed (01:21Z on 2026-09-24). From then on, a dispatch on a green branch, or a failure superseded by a newer gate run, ends at exit 5 and fails the job red. It fails closed: no budget is spent and no model runs.
Pinned, not the default branch. Felix is checked out at
685d37beedc4590a989ccd145db3069af8e7f76a, not whatever felix-home's main holds when the job runs. The reason and the cost are written in the workflow, above the checkout:felix repair's exit statuses, and that contract changed four times on 2026-09-23 (felix-home #303, #321, #323, #329) while this file did not. Unpinned, the copy was right only until the next felix-home merge. The job also holds a write token, and an API key once switched on.projects/elenchus/risk.tsvandgate.shin felix-home are read at the pin too. A path made red there after the pin is not red to this loop until the pin moves.The pin is part of the template (felix-home #328), not a local edit, so every copy carries it.
Both workflows on one Felix. #23 now pins
gate.ymlto the same sha (d00abf2 on its branch). Its run 35950620078 checked Felix out at685d37band passed, 1439 tests. So the repair loop's pre-pushfelix gateand thegateworkflow run the same engine. Merge the two together, and move both pins together from now on.Checked (T1).
diffabove prints nothing, and the file is non-empty (225 lines). No{{FELIX_...}}placeholder is left.comparereports identical), engine 0.49.168, and it holdsprojects/elenchus/project.jsonwithremote_match: LeavesJ/Elenchus. Sofelix repairresolves this repository there, and the case statement matches that engine'slib/repair.sh.LeavesJ/felix-homeat the sha, read as a string; both checkouts areactions/checkout@v5. The deploy key and secrets are unchanged, and it is the same repository as before.bash -e. The table above, from the step cut out of this file.workflow_dispatchof this workflow on this branch. See the comment below.Not changed. Nothing runs a model while
FELIX_UNATTENDEDis unset (gh variable listshows none). All 40 runs of this workflow on record areskipped, sofelix unattendedcounts 0 dry-run failures.