Replace the Forgejo Actions web log bridge with the v16 logs API #696

Closed
opened 2026-07-24 06:20:52 +00:00 by coilyco-ops · 4 comments
Member

Blocked by coilyco-flight-deck/infrastructure#620.

Related to agentic-os#415. This issue replaces the web-route fetch plan in #415 once Forgejo 16 supplies an official API.

Goal

AOS replaces the Forgejo Actions HTML and web-route log bridge with Forgejo 16's official workflow-run and job log APIs.

Work

  • AOS exposes the official log endpoints through the guarded ward ops forgejo surface.
  • AOS resolves repository, run, attempt, and job identifiers without requiring callers to know Forgejo's internal database IDs.
  • AOS supports bounded whole-run and single-job retrieval with predictable text and binary handling.
  • AOS distinguishes a running log, a completed log, an expired log, a missing run, and an authorization failure.
  • Tests cover pagination or chunking, empty logs, large logs, retries, expired logs, and non-UTF-8 output where Forgejo permits it.
  • AOS removes the old HTML or web-route implementation and its fixtures only after the API-backed path is proven.
  • Documentation records the required Forgejo version and the supported identifier forms.

Done

  • The operator can fetch whole-run and job logs without HTML scraping or browser cookies.
  • The command returns exact log bytes or a clear typed error.
  • Tests prove identifier resolution and bounded retrieval behavior.
  • AOS records whether #415 is closed as superseded or narrowed to any remaining overlay behavior.
Blocked by coilyco-flight-deck/infrastructure#620. Related to agentic-os#415. This issue replaces the web-route fetch plan in #415 once Forgejo 16 supplies an official API. ## Goal AOS replaces the Forgejo Actions HTML and web-route log bridge with Forgejo 16's official workflow-run and job log APIs. ## Work * AOS exposes the official log endpoints through the guarded `ward ops forgejo` surface. * AOS resolves repository, run, attempt, and job identifiers without requiring callers to know Forgejo's internal database IDs. * AOS supports bounded whole-run and single-job retrieval with predictable text and binary handling. * AOS distinguishes a running log, a completed log, an expired log, a missing run, and an authorization failure. * Tests cover pagination or chunking, empty logs, large logs, retries, expired logs, and non-UTF-8 output where Forgejo permits it. * AOS removes the old HTML or web-route implementation and its fixtures only after the API-backed path is proven. * Documentation records the required Forgejo version and the supported identifier forms. ## Done * The operator can fetch whole-run and job logs without HTML scraping or browser cookies. * The command returns exact log bytes or a clear typed error. * Tests prove identifier resolution and bounded retrieval behavior. * AOS records whether #415 is closed as superseded or narrowed to any remaining overlay behavior.
Author
Member

Ops reproduced the current bridge failure while closing the Glama MCP restore on 2026-07-27. The supported 0aguard ops actions logs coilyco-bridge deploy 2766 0 10 command returned a Forgejo 404 for the job page even though run 2766 and job index 0 exist and the run metadata is readable through the guarded API. The CI rerun failed after 48 seconds. The bridge could not retrieve the decisive log, so no further CI probing was performed.

Ops reproduced the current bridge failure while closing the Glama MCP restore on 2026-07-27. The supported 0aguard ops actions logs coilyco-bridge deploy 2766 0 10 command returned a Forgejo 404 for the job page even though run 2766 and job index 0 exist and the run metadata is readable through the guarded API. The CI rerun failed after 48 seconds. The bridge could not retrieve the decisive log, so no further CI probing was performed.
Author
Member

Correction to the preceding comment: the command is aguard ops actions logs coilyco-bridge deploy 2766 0 1. The two visible control markers around that command came from comment formatting and are not part of the command.

Correction to the preceding comment: the command is aguard ops actions logs coilyco-bridge deploy 2766 0 1. The two visible control markers around that command came from comment formatting and are not part of the command.
Author
Member

WARD-WORKFLOW: done

details

review summary: skipped. The in-container review gate was intentionally skipped because implementation and QA are role-separated. QA is a separate, opt-in exact-commit verification role bound to candidate 042169758f5d5a999ba67804e636fb88831b5389.

workflow: merge-remote-main; review summary: skipped by role separation

felt: Clean API replacement, with one sharp concurrent-lock merge.
confidence: high
surprises: origin/main advanced during validation and the live instance still advertises Forgejo 15.0.2.
follow-ups: coilyco-flight-deck/infrastructure#620 must upgrade the instance before operators can use the v16 endpoints.

WARD-WORKFLOW: done ✅ <details><summary>details</summary> review summary: skipped. The in-container review gate was intentionally skipped because implementation and QA are role-separated. QA is a separate, opt-in exact-commit verification role bound to candidate `042169758f5d5a999ba67804e636fb88831b5389`. workflow: merge-remote-main; review summary: skipped by role separation felt: Clean API replacement, with one sharp concurrent-lock merge. confidence: high surprises: `origin/main` advanced during validation and the live instance still advertises Forgejo 15.0.2. follow-ups: `coilyco-flight-deck/infrastructure#620` must upgrade the instance before operators can use the v16 endpoints. </details>
Author
Member

WARD-WORKFLOW: reservation-released

release details

Run finished with WARD-WORKFLOW: done ✅.

ward container reap released container engineer-codex-agentic-os-696 (--harness codex): the terminal outcome supersedes the reservation, so a later redispatch no longer needs --override-reservation.

— Codex, via ward agent

<!-- ward-agent-reservation-released --> WARD-WORKFLOW: reservation-released <details><summary>release details</summary> Run finished with `WARD-WORKFLOW: done ✅`. `ward container reap` released container `engineer-codex-agentic-os-696` (`--harness codex`): the terminal outcome supersedes the reservation, so a later redispatch no longer needs `--override-reservation`. </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
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
coilyco-flight-deck/agentic-os#696
No description provided.