labctl pr logs: Forgejo log-route adapter never sees a terminating 404 — out-of-range job indices answer 200 #278

Open
opened 2026-08-04 17:19:41 +02:00 by dominik.polakovics · 0 comments

Found while diagnosing the missing agent-tools:claude-2.1.221 tag (publish run 380).

Repro:

labctl pr logs 274 --check "agent-tools / publish (pull_request)"

fails with:

tracker: forge log route did not answer the shape lab's log adapter expects: GET /Cloonar/coding-lab/actions/runs/378/jobs/1/attempt/N/logs answered no terminating 404 within 20 attempts

The route itself works — a plain anonymous curl of

/Cloonar/coding-lab/actions/runs/378/jobs/1/attempt/1/logs

returns 200 with the full log. What breaks the adapter's assumption on this Forgejo version: out-of-range job indices do not 404. e.g. run 378 has 2 jobs, yet jobs/2/attempt/1/logs answers 200, serving the same bytes as job 0. If the adapter probes for a terminating 404 (over attempts or job indices) to find the last valid one, it never gets one and gives up after 20 attempts.

Impact: labctl pr logs --check is unusable against this forge for any check, which blocks agents from reading CI logs the intended way (I had to fall back to scraping the Forgejo UI/API by hand).

Found while diagnosing the missing agent-tools:claude-2.1.221 tag (publish run 380). Repro: labctl pr logs 274 --check "agent-tools / publish (pull_request)" fails with: tracker: forge log route did not answer the shape lab's log adapter expects: GET /Cloonar/coding-lab/actions/runs/378/jobs/1/attempt/N/logs answered no terminating 404 within 20 attempts The route itself works — a plain anonymous curl of /Cloonar/coding-lab/actions/runs/378/jobs/1/attempt/1/logs returns 200 with the full log. What breaks the adapter's assumption on this Forgejo version: **out-of-range job indices do not 404**. e.g. run 378 has 2 jobs, yet `jobs/2/attempt/1/logs` answers 200, serving the same bytes as job 0. If the adapter probes for a terminating 404 (over attempts or job indices) to find the last valid one, it never gets one and gives up after 20 attempts. Impact: `labctl pr logs --check` is unusable against this forge for any check, which blocks agents from reading CI logs the intended way (I had to fall back to scraping the Forgejo UI/API by hand).
Sign in to join this conversation.
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
Cloonar/coding-lab#278
No description provided.