Introduce central dispatcher pattern #1

Merged
ellen merged 4 commits from feat/dispatcher into main 2026-07-15 20:57:51 +00:00
Member

Moves all routing out of the per-repo caller and into a central dispatch.yaml, so project repos carry a frozen, logic-free caller and every behavioural change propagates via @main.

Changes

  • Add .forgejo/workflows/dispatch.yaml — central router. Reads the inherited event and routes:
    • agent:plan labeled → plan.yaml
    • plan:approved labeled by vars.APPROVER → implement.yaml
    • schedule (15-min tick) → tick placeholder for future scheduled agents
  • Reduce caller-agent.yaml to the minimal "empty" caller: broad on: (no types:), 15-min cron, single uses: dispatch.yaml@main job with secrets: inherit. This is the canonical copy to drop into every repo as .forgejo/workflows/agent.yaml.
  • Rewrite README.md to document the caller → dispatch → agents architecture.

plan.yaml and implement.yaml are unchanged — they were already workflow_call and read github.event directly, so they slot under the dispatcher as-is.

Notes

  • secrets: inherit is transitive: caller → dispatch → agent, so the dispatcher declares no secrets.
  • Concurrency/serialization is intentionally left to the runner (act_runner capacity + labels), not wired here.

🤖 Generated with Claude Code

Moves all routing out of the per-repo caller and into a central `dispatch.yaml`, so project repos carry a frozen, logic-free caller and every behavioural change propagates via `@main`. ## Changes - **Add `.forgejo/workflows/dispatch.yaml`** — central router. Reads the inherited event and routes: - `agent:plan` labeled → `plan.yaml` - `plan:approved` labeled by `vars.APPROVER` → `implement.yaml` - `schedule` (15-min tick) → `tick` placeholder for future scheduled agents - **Reduce `caller-agent.yaml`** to the minimal "empty" caller: broad `on:` (no `types:`), 15-min cron, single `uses: dispatch.yaml@main` job with `secrets: inherit`. This is the canonical copy to drop into every repo as `.forgejo/workflows/agent.yaml`. - **Rewrite `README.md`** to document the caller → dispatch → agents architecture. `plan.yaml` and `implement.yaml` are unchanged — they were already `workflow_call` and read `github.event` directly, so they slot under the dispatcher as-is. ## Notes - `secrets: inherit` is transitive: caller → dispatch → agent, so the dispatcher declares no secrets. - Concurrency/serialization is intentionally left to the runner (`act_runner capacity` + labels), not wired here. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ellen merged commit 166faeab6c into main 2026-07-15 20:57:51 +00:00
ellen deleted branch feat/dispatcher 2026-07-15 20:57:52 +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!1
No description provided.