fix: reference local composite actions by full URL so agent jobs resolve preflight #16

Merged
ellen merged 1 commit from fix/local-composite-full-url into main 2026-07-23 17:41:22 +00:00
Member

Symptom

Applying agent/plan (etc.) triggered the run, but every route failed at its first step — the composite action valssi-public/agent-workflows/lib/preflight@main — leaving the command label on the issue and posting nothing (no plan, no failure comment). Seen live on valssi-ai/devagent issue #4.

Root cause (an instance-resolution issue, not the event-semantics bugs)

Forgejo resolves a bare uses: owner/repo/path@ref composite action against [actions] DEFAULT_ACTIONS_URL. This instance doesn't set it, so it defaults to https://code.forgejo.org, where valssi-public/agent-workflows doesn't exist:

git fetch 'https://code.forgejo.org/valssi-public/agent-workflows' # ref=main
remote: Not found. fatal: repository not found: exit status 128

Reusable workflows (dispatch → plan/dev/… via .forgejo/workflows/*.yaml@main) already resolve on the local instance — which is why resolve ran and masked this. Only the composite action refs (lib/preflight, lib/state) hit DEFAULT_ACTIONS_URL.

Fix

Pin the 11 local composite refs to the instance's full URL (https://git.valssi.eu/valssi-public/agent-workflows/lib/…@main) across plan/dev/test/coordinate/reflect.yaml. Full-URL uses: resolves directly against the instance regardless of DEFAULT_ACTIONS_URL — no instance-wide config change and no mirroring of actions/* required. Reusable-workflow refs and actions/checkout@v4 are unchanged.

Verified

On a Forgejo 15.0.5 + runner 12.10.1 test instance under the prod-breaking DEFAULT_ACTIONS_URL=code.forgejo.org:

  • bare refs → repository not found, plan fails, label stuck, 0 comments (reproduces prod);
  • full-URL refs → runner git fetches the composite from the instance, preflight runs (proceed=true), plan comment posted, labels transition agent/plan → needs/approval + state/planning.

Runner log (full-URL run):

☁️  git fetch 'http://<instance>/valssi-public/agent-workflows' # ref=main
⭐ Run Pre .../lib/preflight@main   ✅ Success
preflight: all checks passed for route plan
🏁  Job succeeded

Alternative considered

Setting DEFAULT_ACTIONS_URL=self also fixes it, but then all bare actions/* (e.g. actions/checkout) must be mirrored locally. This PR is the lower-blast-radius option: workflow-only, no instance/runner change.

🤖 Generated with Claude Code

## Symptom Applying `agent/plan` (etc.) triggered the run, but every route **failed at its first step** — the composite action `valssi-public/agent-workflows/lib/preflight@main` — leaving the command label on the issue and posting nothing (no plan, no failure comment). Seen live on `valssi-ai/devagent` issue #4. ## Root cause (an instance-resolution issue, not the event-semantics bugs) Forgejo resolves a **bare** `uses: owner/repo/path@ref` **composite action** against `[actions] DEFAULT_ACTIONS_URL`. This instance doesn't set it, so it defaults to `https://code.forgejo.org`, where `valssi-public/agent-workflows` doesn't exist: ``` git fetch 'https://code.forgejo.org/valssi-public/agent-workflows' # ref=main remote: Not found. fatal: repository not found: exit status 128 ``` Reusable **workflows** (`dispatch → plan/dev/… via .forgejo/workflows/*.yaml@main`) already resolve on the local instance — which is why `resolve` ran and masked this. Only the composite **action** refs (`lib/preflight`, `lib/state`) hit `DEFAULT_ACTIONS_URL`. ## Fix Pin the 11 local composite refs to the instance's full URL (`https://git.valssi.eu/valssi-public/agent-workflows/lib/…@main`) across `plan/dev/test/coordinate/reflect.yaml`. Full-URL `uses:` resolves directly against the instance regardless of `DEFAULT_ACTIONS_URL` — **no instance-wide config change and no mirroring of `actions/*`** required. Reusable-workflow refs and `actions/checkout@v4` are unchanged. ## Verified On a Forgejo **15.0.5** + runner **12.10.1** test instance under the prod-breaking `DEFAULT_ACTIONS_URL=code.forgejo.org`: - bare refs → `repository not found`, `plan` fails, label stuck, 0 comments (reproduces prod); - full-URL refs → runner `git fetch`es the composite from the instance, `preflight` runs (`proceed=true`), plan comment posted, labels transition `agent/plan → needs/approval + state/planning`. Runner log (full-URL run): ``` ☁️ git fetch 'http://<instance>/valssi-public/agent-workflows' # ref=main ⭐ Run Pre .../lib/preflight@main ✅ Success preflight: all checks passed for route plan 🏁 Job succeeded ``` ## Alternative considered Setting `DEFAULT_ACTIONS_URL=self` also fixes it, but then **all** bare `actions/*` (e.g. `actions/checkout`) must be mirrored locally. This PR is the lower-blast-radius option: workflow-only, no instance/runner change. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix: reference local composite actions by full URL so they resolve on-instance
Some checks failed
coordinate.yaml / fix: reference local composite actions by full URL so they resolve on-instance (push) Failing after 0s
dev.yaml / fix: reference local composite actions by full URL so they resolve on-instance (push) Failing after 0s
plan.yaml / fix: reference local composite actions by full URL so they resolve on-instance (push) Failing after 0s
reflect.yaml / fix: reference local composite actions by full URL so they resolve on-instance (push) Failing after 0s
test.yaml / fix: reference local composite actions by full URL so they resolve on-instance (push) Failing after 0s
coordinate.yaml / fix: reference local composite actions by full URL so they resolve on-instance (pull_request) Failing after 0s
dev.yaml / fix: reference local composite actions by full URL so they resolve on-instance (pull_request) Failing after 0s
plan.yaml / fix: reference local composite actions by full URL so they resolve on-instance (pull_request) Failing after 0s
reflect.yaml / fix: reference local composite actions by full URL so they resolve on-instance (pull_request) Failing after 0s
test.yaml / fix: reference local composite actions by full URL so they resolve on-instance (pull_request) Failing after 0s
coordinate.yaml / Merge pull request 'fix: reference local composite actions by full URL so agent jobs resolve preflight' (#16) from fix/local-composite-full-url into main (pull_request) Failing after 0s
dev.yaml / Merge pull request 'fix: reference local composite actions by full URL so agent jobs resolve preflight' (#16) from fix/local-composite-full-url into main (pull_request) Failing after 0s
plan.yaml / Merge pull request 'fix: reference local composite actions by full URL so agent jobs resolve preflight' (#16) from fix/local-composite-full-url into main (pull_request) Failing after 0s
reflect.yaml / Merge pull request 'fix: reference local composite actions by full URL so agent jobs resolve preflight' (#16) from fix/local-composite-full-url into main (pull_request) Failing after 0s
test.yaml / Merge pull request 'fix: reference local composite actions by full URL so agent jobs resolve preflight' (#16) from fix/local-composite-full-url into main (pull_request) Failing after 0s
f98fd33140
Forgejo resolves bare 'uses: owner/repo/path@ref' composite actions against
[actions] DEFAULT_ACTIONS_URL, which on this instance defaults to
https://code.forgejo.org — where valssi-public/agent-workflows does not exist.
Every route therefore died at its first step (lib/preflight@main) with
'repository not found', leaving the command label on and posting nothing.

Reusable *workflows* (dispatch->plan/dev/... via .forgejo/workflows/*.yaml@main)
already resolve on the local instance; only the composite *action* refs (lib/*)
hit DEFAULT_ACTIONS_URL. Pin those to the instance's full URL so they resolve
regardless of DEFAULT_ACTIONS_URL — no instance-wide config change or action
mirroring needed.

Reproduced and verified on a Forgejo 15.0.5 + runner 12.10.1 test instance:
under DEFAULT_ACTIONS_URL=code.forgejo.org, bare refs fail; full-URL refs
git-fetch the composite from the instance and the plan->needs/approval flow
completes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ellen merged commit 0526cfbf2f into main 2026-07-23 17:41:22 +00:00
ellen deleted branch fix/local-composite-full-url 2026-07-23 17:41:22 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
valssi-public/agent-workflows!16
No description provided.