Repository navigation
Conversation
…y run is named by full commit sha unattended.yml is felix-home's templates/unattended.yml at 6fe5f98688456fa95a7198e4c0eceadb9fe43741 (engine 0.49.273) with its two placeholders filled, nothing else. It carries felix-home #391 (a repaired commit is scope-checked against the brief's implicated files and re-gated by dispatch) and #403 (both checkouts pinned to actions/checkout v5.1.0's sha). gate.yml is what felix bootstrap renders at the same commit (#354, #379: every uses: pinned by sha, both checkouts keep no credential), with this repository's fork path, Python 3.14 install and pin note kept. setup-python stays on v6, pinned to v6.3.0's sha, rather than the v5.6.0 the renderer writes, which runs on Node 20. A workflow change: the founder merges it.
Owner
Author
|
This PR's own runs.
|
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.
This changes workflow files, so you merge it. Both pins move together, as #24 and gate.yml's pin comment require:
gate.ymlandunattended.ymlboth check out felix-home at6fe5f98688456fa95a7198e4c0eceadb9fe43741.The pin.
6fe5f986was felix-homeorigin/mainwhen this was made (git ls-remote, 2026-10-08T19:30Z). It is the merge of felix-home #416 (2026-10-03) and carries engine 0.49.273. It containsprojects/elenchus/project.jsonwithremote_match: LeavesJ/Elenchus, sofelix whichresolves this repository there. felix-home's own gate passed on it: run 37152268315 reused #416's green PR run.unattended.yml: the template, nothing else
It is felix-home's
engine/harness/templates/unattended.ymlat the pin, copied whole, with{{FELIX_REPO}}set toLeavesJ/felix-homeand{{FELIX_REF}}set to the sha (quoted). Nothing else differs. This command prints nothing:diff <(git -C ~/Documents/Felix show 6fe5f98688456fa95a7198e4c0eceadb9fe43741:engine/harness/templates/unattended.yml | sed -e 's#{{FELIX_REPO}}#LeavesJ/felix-home#' -e 's#{{FELIX_REF}}#6fe5f98688456fa95a7198e4c0eceadb9fe43741#') .github/workflows/unattended.ymlfelix-home's own comparison (
felix_unattended_template_diff, which feeds the "workflow matches template" row offelix unattended) saysmatchfor this copy. For main's copy it saysdifferat line 63.Two felix-home template changes since
cb3a72cecome with it:#403 (
75f94b4d). Both checkouts useactions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0instead of the movable@v5.#391 (
44c0e869), carrying #335. The repair is limited to what the brief names. The scope step runsfelix repair --implicatedand passes the implicated file set on as a step output. If the log names no file in this checkout, it stops (unnamed) before any budget or model. The verify step refuses to push in four cases, and labels the PRneeds-founderwhere it can:felix scope --basecalls the attempt's own committed diff red.After that comes the gate, as before. A new
regatejob, which alone holdsactions: write, then dispatches the gate on the pushed commit, because the token's push starts no run. Both--implicatedandscope --baseare in the pinned engine, so the template and the engine it checks out match.gate.yml: what felix bootstrap renders, plus this repository's own steps
The base is
felix_bs_render_workflow python LeavesJ/felix-home 6fe5f986…fromengine/harness/lib/bootstrap.shat the pin:diff <(bash -c 'eval "$(git -C ~/Documents/Felix show 6fe5f98688456fa95a7198e4c0eceadb9fe43741:engine/harness/lib/bootstrap.sh)"; felix_bs_render_workflow python LeavesJ/felix-home 6fe5f98688456fa95a7198e4c0eceadb9fe43741') .github/workflows/gate.ymlEach remaining difference from that render, and why:
Decide whether the harness is reachable(id: ctx)FELIX_DEPLOY_KEY, so the job degrades on that path and does not fail a required check.Confirm the governing project,Run the gateif:if: steps.ctx.outputs.harness == 'yes'6fe5f986and says to move it with unattended.yml; felix-home not felix (the rename); notcontinue-on-errorcb3a72ce). The other two are kept as they were on main.actions/setup-python@a26af69b… # v5.6.0,"3.12"actions/setup-python@ece7cb06… # v6.3.0,"3.14"@v6and 3.14, and this keeps both, pinned. v6.3.0 runs on Node 24. The renderer's v5.6.0 runs on Node 20, which the renderer's own checkout comment avoids ("v5, the lowest major that runs on Node 24").pip install -e ".[dev]"pip install --upgrade pip, thenpip install -e ".[dev,web]" "ruff==0.16.0" "pytest==9.1.1", with its commentRun the gateRun what a fork can run,Say what did not runWhat this changes against main's gate.yml (beyond the pins):
persist-credentials: false(felix-home #379). The job token is not left inrepo/.git/config, and the deploy key file is not left under$RUNNER_TEMP, where the pull request's own code, which the gate runs, could read them. This job pushes nothing and reads Felix from disk, so nothing after the fetch needs either. This PR's own gate run is the check on that.Check out Elenchus,Check out Felix,Set up Python,Install dependencies), because the renderer writes them unnamed. The job is stillgate, so the required check is unaffected.permissionsis gone. The renderer has none there.Every
uses:names a full commit sha@v5@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0gh api repos/actions/checkout/git/ref/tags/v5answerscommit fbc6f399…, the same commit asv5.1.0@v6@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0gh api repos/actions/setup-python/git/ref/tags/v6answerscommit ece7cb06…, which isv6.3.0(a lightweight tag, so there is nothing to dereference)Each sha is the commit its tag pointed at today, so the action code that runs is the same as on main. Only the tag owner's ability to move it is gone.
semgrep 1.175.0,
--config p/github-actionsOn main's two files the same command gives 6 findings:
github-actions-mutable-action-tagat gate.yml 43, 110 and 118 and at unattended.yml 66 and 96, plus this one.The one left is there by design. The repair has to check out the failing branch in order to repair it. The job's
if:limits it toworkflow_dispatchor a failed run whosehead_repositoryis this repository, so a fork's branch never gets here. Both checkouts keep no credential, and the model step is scoped to./**with.git/**and//proc/**denied (#26).Checked
YAML.safe_load). gate: 9 steps. unattended:repairhas 7 steps andregatehas 1 (permissions: actions: write). Both Felixref:values parse as strings.FELIX_UNATTENDEDis unset:gh variable list --repo LeavesJ/Elenchuslists no variables (2026-10-08T19:28Z). So no budget, model or push step can run, andregate(gated onpushed == 'yes') is skipped.CI on this PR and a dispatched
unattended repairrun on this branch follow in a comment.