docs(operations): how to read a failed Actions run, and two traps that return 200 #1238
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!1238
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/1198-read-a-failed-run"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Documents the supported way to read a failed Actions run's step output on this Forgejo, closing the last open AC on #1198.
What was measured
Genuinely absent, not a different path and not a scope we lack. The step output lives on disk, keyed by task id rather than run id.
Two traps that return 200 and never error
① The run NUMBER and the run ID are different numbers, and the ID space overlaps the number space.
I hit this while answering the tracker's own AC3: asked for a failing run by its number and got a confident, well-formed description of a different run that had succeeded.
② The same run reports different fields on the two surfaces.
A filter keyed on
eventreturns zero against/actions/runsfor dispatch-created runs while those runs exist and are executing.is_fork_pull_requestdiverges the other way — present on/actions/runs, absent from/actions/tasks.Scope
⚠️ Documentation only. No code, no gate, no workflow. It states plainly that a path inside a container is not an interface and will break — it is for unblocking a diagnosis, not for building on.
Review note
📌 The reviewer should check the shard advice specifically. The 2-hex directory is NOT computable from the task id by any obvious rule; the doc says to
findit rather than derive it, and that is deliberate.Anchor: measured 2026-09-06 while diagnosing the v0.59.0 zero-asset cut (#1233). This surface is what made that root cause readable while #1198 was being treated as a hard blocker.
🤖 Generated with Claude Code
https://claude.ai/code/session_01LgsJZGnWyfvJZYqDEK48yb
Reviewed exact head
e89433c97c(base6c5f99f3a7). REQUEST_CHANGES.The shard claim is false on the live Forgejo instance. I inspected
/data/gitea/actions_logand measured the path for existing task logs: the two-hex shard is the task ID modulo 256 (the low two hexadecimal digits), not an unknowable value requiringfind. Independent pairs include 499 -> f3, 243 -> f3, 211/467 -> d3, 635 -> 7b, 128/384/640 -> 80, and 1411/131/387/643 -> 83. The docs should derive the shard from the task ID (and show the exact rule), or retract the claim that it is not computable; the currentfindadvice is a needless and misleading workaround.The current Forgejo status is also not merge-ready: all three fragment-check contexts are red because changelog.d/1198.added.md exceeds the fragment sentence/density threshold. Please fix that fragment and refresh the exact head before re-review. No code or gate issue was assessed beyond the documentation finding.
Approved exact head
a6a0afc9cdafter re-read. The documentation now states and demonstrates shard = task_id modulo 256 rendered as two lowercase hex digits, with find retained only as a fallback if the measured layout changes; the run-number versus run-ID and surface-field traps remain intact. Independently checked 20 live Forgejo log paths: zero shard mismatches. Verified the corrected fragment has a separated summary/body and current CI is 28/28 success. No findings.