actions runs: madtea reads only Gitea's run fields, so Forgejo runs show no branch or start time #504

Open
opened 2026-09-15 21:44:20 +00:00 by hexajon · 0 comments
Owner

What happens

On Forgejo, every line of madt_actions action=runs looks like #265 [failure] ci.yml (, X), where the parentheses hold only a comma and the "no date" dash. The branch and the start time are empty.

The line is built from HeadBranch and StartedAt (internal/format/actions.go:25-28). service.ActionRun reads head_branch, started_at, completed_at, and name (internal/service/types_actions.go:11-18). Those are Gitea's field names. Forgejo uses different ones, so the fields come back empty. The listing also shows no commit and no event. I could not answer "which commit did this run test, and did two runs overlap?" from it.

Live check, 2026-09-15

I queried a live Gitea 1.27.3 and a live Forgejo 15.0.6 (sixfold-space/madtea):

What Gitea 1.27.3 Forgejo 15.0.6
branch / ref head_branch prettyref
commit head_sha commit_sha
start / end started_at, completed_at started, stopped
web run number run_number index_in_repo
workflow path (smoke.yml@refs/heads/main) workflow_id (ci.yml)
title display_title title
outcome status: completed + conclusion: failure status: failure

The name works on Forgejo only because madtea falls back to workflow_id. From the field names, on Gitea the name is likely blank (no name or workflow_id field), and a failed run likely shows as [completed] because the conclusion is not read. I could not run madtea against the Gitea repo to confirm: madt_actions has no dir=, and the plugin hook blocks madtea actions in that clone (#485).

The vendored specs are older than the live servers (docs/api-specs/gitea-1.26.1.json against a live 1.27.3).

Ask

  • Map both shapes into one run type: id, web number, workflow, title, event, branch, short commit, outcome (Gitea's conclusion when present, else status), start, and stop.
  • Show those in the text line, for example: id 263 (#210) ci.yml push main 05eb2ac9 failure 21:28-21:31.
  • Check both live forges before merge, not only the vendored specs.

Acceptance

  • On Forgejo and on Gitea, every run line shows branch, commit, event, outcome, and times.
  • A failed Gitea run shows as failed, not completed.
  • Tests cover a Forgejo-shaped and a Gitea-shaped response.

Related: #466 (which run number to pass).

## What happens On Forgejo, every line of `madt_actions action=runs` looks like `#265 [failure] ci.yml (, X)`, where the parentheses hold only a comma and the "no date" dash. The branch and the start time are empty. The line is built from `HeadBranch` and `StartedAt` (`internal/format/actions.go:25-28`). `service.ActionRun` reads `head_branch`, `started_at`, `completed_at`, and `name` (`internal/service/types_actions.go:11-18`). Those are Gitea's field names. Forgejo uses different ones, so the fields come back empty. The listing also shows no commit and no event. I could not answer "which commit did this run test, and did two runs overlap?" from it. ## Live check, 2026-09-15 I queried a live Gitea 1.27.3 and a live Forgejo 15.0.6 (`sixfold-space/madtea`): | What | Gitea 1.27.3 | Forgejo 15.0.6 | |---|---|---| | branch / ref | `head_branch` | `prettyref` | | commit | `head_sha` | `commit_sha` | | start / end | `started_at`, `completed_at` | `started`, `stopped` | | web run number | `run_number` | `index_in_repo` | | workflow | `path` (`smoke.yml@refs/heads/main`) | `workflow_id` (`ci.yml`) | | title | `display_title` | `title` | | outcome | `status: completed` + `conclusion: failure` | `status: failure` | The name works on Forgejo only because madtea falls back to `workflow_id`. From the field names, on Gitea the name is likely blank (no `name` or `workflow_id` field), and a failed run likely shows as `[completed]` because the conclusion is not read. I could not run madtea against the Gitea repo to confirm: `madt_actions` has no `dir=`, and the plugin hook blocks `madtea actions` in that clone (#485). The vendored specs are older than the live servers (`docs/api-specs/gitea-1.26.1.json` against a live 1.27.3). ## Ask - Map both shapes into one run type: id, web number, workflow, title, event, branch, short commit, outcome (Gitea's conclusion when present, else status), start, and stop. - Show those in the text line, for example: `id 263 (#210) ci.yml push main 05eb2ac9 failure 21:28-21:31`. - Check both live forges before merge, not only the vendored specs. ## Acceptance - On Forgejo and on Gitea, every run line shows branch, commit, event, outcome, and times. - A failed Gitea run shows as failed, not completed. - Tests cover a Forgejo-shaped and a Gitea-shaped response. Related: #466 (which run number to pass).
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.

Reference
sixfold-space/madtea#504
No description provided.