From 5f0ad76e1c5d13c1112a94d09ac8ac6367b136ca Mon Sep 17 00:00:00 2001 From: aitrawog Date: Thu, 24 Sep 2026 20:16:25 +0200 Subject: [PATCH 1/3] docs(skill): org-runner routing causes + gh requirement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds two operational sections proven while deploying a self-hosted org runner: - "Org-runner routing: a queued job is almost never an agent problem" — the three causes in order: (1) the runner group's `allows_public_repositories: false` makes the runner INVISIBLE to every public repo (jobs queue forever, no error anywhere) — with the exact `gh api` check and the `--input` (real-boolean) fix, since `-f` sends the string "true" and the API rejects it; (2) a `labels` mismatch (incl. a `vars.` label a reusable workflow resolves); (3) a stale broker session after a restart (`TaskAgentSessionConflictException`, retrying on a 30s loop while reporting `online`) needing a full remove+config+start cycle, not just a restart. - "`gh` must be present for a review/gate runner" — the org pr-validator drives `gh api`/`gh pr comment`/`gh pr merge`; compose `/charly-tools:gh`. Assisted-by: opencode ollama-cloud/DeepSeek V4.1 Flash (documentation reviewed) --- charly.yml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/charly.yml b/charly.yml index 97ad92c..3876163 100644 --- a/charly.yml +++ b/charly.yml @@ -288,6 +288,45 @@ github-runner-skill: charly remove githubrunner -e RUNNER_TOKEN=$(gh api -X POST /orgs/myorg/actions/runners/remove-token --jq .token) ``` + ## Org-runner routing: a queued job is almost never an agent problem + + A job that shows `labels: [""]`, `status: queued`, `runner_name: ""` + while the runner reads `online` + `busy: false` is a ROUTING failure, not a + runner failure — the runner has nothing to execute. Work the causes in order: + + 1. **The runner group does not allow public repos (the silent one).** An org + runner in a group whose `allows_public_repositories` is `false` is INVISIBLE + to every public repo in the org, so their jobs queue forever with no error + anywhere. Check and fix with a REAL boolean (the `-f` flag sends the string + `"true"`, which the API rejects as `"true" is not a boolean` — use `--input`): + + ```bash + gh api /orgs//actions/runner-groups --jq '.runner_groups[]|{id,name,allows_public_repositories,visibility}' + echo '{"allows_public_repositories": true}' > rg.json + gh api -X PATCH /orgs//actions/runner-groups/ --input rg.json + ``` + + 2. **`labels` mismatch.** The runner must carry every label `runs-on` names. + Compare `gh api /orgs//actions/runners --jq '.runners[0].labels'` against + the job's `labels` (a reusable workflow may resolve a `vars.` label you forgot + to set, e.g. `vars.REVIEW_RUNNER_LABEL`). + + 3. **A stale broker session.** After a container restart the listener can log + `A session for this runner already exists` / `TaskAgentSessionConflictException` + and retry on a 30s loop without taking jobs, while still reporting `online`. + A full clean cycle clears it — `charly remove` (deregisters) then + `charly config` + `charly start` — not just a restart. + + Confirm the fix by watching the job, not the runner: a picked-up job flips to + `in_progress` with `runner_name` set, and the workflow's steps then appear. + + ## `gh` must be present for a review/gate runner + + A runner whose job is to execute `gh`-driven workflows (the org `pr-validator` + runs `gh api` / `gh pr comment` / `gh pr merge`) needs the `gh` CLI in its + image — compose `/charly-tools:gh` (it is not part of the base toolchain). A + runner without it fails the workflow at its first `gh` call. + ## Used In Boxes - `/charly-distros:githubrunner` From 450585cf09a9cd3b9d06f2b74717556caa4c6853 Mon Sep 17 00:00:00 2001 From: aitrawog Date: Thu, 24 Sep 2026 20:23:47 +0200 Subject: [PATCH 2/3] ci: re-trigger review after body re-freeze (append-only) Added the rule-compliance section and pasted the gate + live org-runner job evidence. Assisted-by: opencode ollama-cloud/DeepSeek V4.1 Flash (documentation reviewed) From be536f4e8500e45c740249b13baeec206b2f07f1 Mon Sep 17 00:00:00 2001 From: aitrawog Date: Thu, 24 Sep 2026 21:44:55 +0200 Subject: [PATCH 3/3] ci: re-trigger review (append-only) Body now pastes the named gate's real job output (no placeholder). Assisted-by: opencode ollama-cloud/DeepSeek V4.1 Flash (documentation reviewed)