fix(submissions): surface each linked build's outcome to the submitter

/me/submissions (and the admin queue) now attach build_status/build_error by
a read-only Builder.Get — until now a failed build was visible only on the
admin-tier /images/build routes, so the person who submitted the modpack
never learned the build died. A missing build row renders as "no outcome";
any other lookup failure surfaces instead of being swallowed. The panel's
My Submissions page renders the outcome in the expanded row, localised.
This commit is contained in:
Lemon-miaow committed 2026-09-23 06:31:13 +08:00
1 parent 4933c075b0
commit 72c4aa3895
9 files changed
+225 -8

No files matched your search

+18 -2
View File
@@ -337,6 +337,19 @@ components:
build_id:
type: string
description: image_builds.id, set only after the build hand-off succeeds.
build_status:
type: string
enum: [pending, building, succeeded, failed, cancelled]
description: >-
The linked build's outcome, attached by the LIST routes
(/me/submissions, /submissions) — for a submitter this is the only
visible outlet for a failed build. Omitted until a build is linked
and its row is readable.
build_error:
type: string
description: >-
The build's recorded failure text (e.g. a CRITICAL CVE scan
failure), attached alongside build_status.
reviewed_by: { type: string }
reject_reason: { type: string }
created_at: { type: string, format: date-time }
@@ -4231,13 +4244,16 @@ paths:
get:
tags: [submissions]
operationId: mySubmissions
summary: List the caller's own modpack submissions (user-directed lane over §16).
summary: List the caller's own modpack submissions with each linked build's outcome (user-directed lane over §16).
x-felis-face: [external]
x-felis-tier: app
security: [{ accessJWT: [] }]
responses:
'200':
description: The caller's submissions, newest first.
description: >-
The caller's submissions, newest first; rows with a linked build
additionally carry build_status/build_error so the submitter can see
whether their build succeeded or failed (and why).
content:
application/json:
schema: